Event format
Standardize the metadata Uber needs to operate every event; preserve the domain payload each producer owns.
Driver location event
geo.location_pings{
"event_id": "loc-7f31",
"event_time": "09:14:02Z",
"ingestion_time": "09:14:03Z",
"event_version": 2,
"driver_id": "drv-4471",
"geohash": "tdr1v",
"payload": { "lat": 12.9716, "lng": 77.5946,
"speed_kmh": 34.2 }
}Payment capture event
payments.events{
"event_id": "pay-91ac",
"event_time": "09:37:18Z",
"ingestion_time": "09:37:18Z",
"event_version": 3,
"trip_id": "trip-88213",
"payload": { "type": "payment_captured",
"amount": 428, "currency": "INR" }
}Shared envelope
event_idevent_timeingestion_timeevent_versionentity IDsThe payload changes; these operational fields do not.Partition keys
Choose the Kafka key from the ordering and locality each Uber workload needs.
Spatial events need balanced locality. Transactional events need deterministic entity order.
Capacity planning
Calculate the minimum required for peak GPS traffic, then provision for how Uber will operate the topic.
Reliability controls
GPS retention
Keep detailed GPS briefly for operational recovery, then reduce its precision for economical long-term analysis.