~/talk

Complex Concurrency Patterns with Go

Talkat Golang UK Conference 2015 · on Friday, 2015-08-21· [concurrency, go]
name:Evan Huus
links:none on file
slides:none on file

Shopify’s Sarama is a Go Kafka client that processes hundreds of millions of messages per day and aims for high throughput and resilience. It uses per-partition goroutines, circuit breakers to fail fast on network calls, and a reference-counted broker pool guarded by a mutex to enable batching for throughput. The producer’s aggregator uses the nil channel trick to enable timed batches; retries were implemented with an infinite retry buffer (mistake) that later proved undesirable. The consumer mirrors partition ownership tokens and per-user response feeders with timeouts to isolate slow readers.

AI-written summary · about

  1. 0:00Intro
  2. 2:41Literary Giants
  3. 14:25Dynamic Multiplexing - global, locked, reference-counted map
  4. 15:07Dynamic Multiplexing - acquire-broker
  5. 18:14Batching and I/O - aggregator
  6. 20:26Batching and I/O - buffer-producer
  7. 22:55Try, Try Again (option #1) for
  8. 23:27Try, Try Again (option #2)
  9. 27:59Putting it all together
  10. 32:57Structure Your Goroutines
  11. 38:05Ownership Semantics - broker
  12. 39:09Isolating I/O (redux)
  13. 41:46Feeding the User (response-feeder) for messages = range input
~/search
type to search 6,249 conferences, 138,987 speakers and 185,172 talks
~/help
cmdctrl k
search every conference, speaker and series
/
focus the filter search
h
home
c
conferences
s
speakers
e
series
t
light / dark — the status bar button does the same
?
this help
esc
close this, then clear every filter — or just the search, while you are typing in it

Ignored while you are typing. Pages without a filter rail have no search to focus.