Anton Lavrik Tools everyone needs — a reflection on building and running WhatsApp servers Code Beam SF 2018 Since our last talk at Erlang Factory in 2014 monthly users: 465M -> 1.5B x3 daily messages: 19B -> 60B x3 daily pics: 600M -> 4.5B x7 daily videos: 100M -> 1B x10! WhatsApp Server Even more scalable and reliable system Powered by Erlang WhatsApp Server: under the hood • deliver asynchronous messages reliably in real-time • keep user messages only until delivered • highly available service • handle peak load Databases Partitioned embedded DB DBs and caches Our databases Majority fit in RAM Data models and access patterns: • key-value, read-modify-write • fast iteration over key space • graph, e.g. addressbook, group membership Partitioned embedded DB zooming in… Partitioning: key to node mapping island partition number = erlang:phash2(Key, ?NUM_PARTITIONS)
Description: