Ну что, готов проектировать мессенджер?
А это, между прочим, ТОП-3 задачка на проектирование по популярности, встречающаяся в Т-Банке, Авито и Яндексе
Вся сложность системы связана с real time и просто офигительной нагрузкой
В требованиях RPS на чтение может улетать под 100 000, а на запись — под 12 000 и выше
В этом посте хочу разобрать, в какой БД все это хранить, на примере продакшен опыта Discord-а
1) Discord начал с MongoDB
НО!
Не прошло и года, как съехали на Cassandra, ибо индексы перестали помещаться в память и запросы выполнялись нестабильно по времени
2) С Cassandra переехали на ScyllaDB
ИБО Cassandra написана на Java, и GC стал сильно аффектить на большой нагрузке
А ScyllaDB — та же Cassandra, но написанная на C++
3) В общем, ScyllaDB FOREVER
До сих пор ее используют
Нагрузка у Discord-а такого же порядка: десятки тысяч RPS на запись и сотни тысяч на чтение
—-
В общем, на собесе не вздумай брать MongoDB, PostgreSQL или MySQL для мессенджера при десятках тысяч RPS на запись. Бери или Cassandra, или ScyllaDB
Ну и это, бахни 🌭, если хочешь еще посты с System Design тематикой
Post #285
3.06K

- 🌭 176
- 🤣 6
- ❤🔥 1
- 🍓 1