LinkedIn Professional Network · View 12 of 30 · 4 · Data
Decisions
- Kafka is the system's memory. Every state change and every member action becomes an event, and consumers are added without touching publishers
- Schemas are Avro in a registry, with compatibility checked at build time: a breaking schema change fails CI
- Change events come from change capture (Brooklin), not from services publishing after a commit, so a crash between the write and the publish cannot lose an event
Reading the arrows
- On the publisher side, each arrow is labelled with the topic's partition key: member, pair, author, conversation or job, as section 15 of the requirement asks
- On the consumer side, each arrow is labelled with that consumer's lag target. Lag is the SLO a stream consumer is paged on
- The Avro schema registry and Brooklin (change capture, cross-colo mirroring) sit beside Kafka; they are drawn on views 08, 11 and 19
Published numbers
- 7T messages a day, 100k+ topics, 4,000+ brokers (LinkedIn, 2019)
- Brooklin replaced Kafka MirrorMaker for cross-colo mirroring, shrinking hundreds of mirror clusters to about a dozen (LinkedIn, 2019)
Risks
- Tracking events dwarf business events, so they run on separate clusters. A tracking surge cannot delay a MessageSent
- Order holds only within a partition. Consumers that need order key by member or conversation
- Every topic also lands in HDFS hourly through Gobblin; that path is drawn on views 10 and 11, not here