Какие можно почитать ресурсы для создания распределенных, реплицируемых, высокопроизводительных приложений?
Хочу создать свою "убийцу" кафки. (или другого популярного приложения, используемого на хайлоаде) - изучить принципы работы на конкретном примере.
Но бизнес-логика это не единственное: нужно учесть многонодность, распределенность и другие аспекты.
Есть какие-нибудь книги, туториалы, ресурсы которые покажут, расскажут - дадут наглядное представление о том как такие приложения писать. Примеры приложений: брокеры сообщений (RabbitMQ), Kafka, распределенные БД (MongoDB, Redis).
P.S. Можно по кусочкам собирать Raft, QoS и другие детали, но хотелось бы иметь структурированную информацию
Один юноша попросил Моцарта научить его писать симфонии.
— Вы еще слишком молоды. Почему бы вам не начать с комических куплетов? — сказал композитор.
Юноша возразил:
— Но ведь вы же начали писать симфонии, когда Вам еще не исполнилось десяти лет!
— Да. — ответил Моцарт — Но я никого не спрашивал, как их следует писать.
В качестве дипломного проекта написать свой брокер сообщений очень даже не плохая идея. Только распаляться на универсальное решение наверно не стоит. Нужно определиться какие сценарии будет покрывать разрабатываемое решение, а для этого нужно иметь либо источник систематезированных знаний, либо большой опыт в области.
Тема хорошая. Только вот градус амбиций я-бы сбросил. Попробуй просто написать сокетное приложение
которое передает события из точки А в точку Б. И придумай механизм персистенции. И балансировщик. И кластер. Да. правильно написал про Raft. Не только Raft. Еще есть Paxos используется в Cassandra. И централизованный ZooKeeper.
Где почитать - я даже не знаю. Спектр технологий такой широкий. Тут и сети. И многозадачность. И хранение информации.
Кстати Кафки в дефолтной комплектации почти не бывает. Каждый кастомер конфигурирует для себя регуляторы скорость-надежность. Влево-вправо. Понимаешь? Поэтому до того как "убивать" Кафку надо просто понять что любое ее нагрузочное тестирование просто ставит другие вопросы. А что собстенно вы ходите. Доставить опционально но быстро. Или с гарантией что месседж сохранился. Или с гарантией что сохранился в основной кластер и в реплику. Каждый кастомер еще для себя придумывает partitioning strategy что является очень важным аспектом скорости Kafka. Тоесть еще до бенчмарка нужно все эти вопросы проговорить. Иначе выйдет сравнительное тестирование "бульдога" и "носорога". И любая система которая будет быстрее Кафки на самом деле будет просто системой заточенной на более узкие условия. Это как узкий UDP может быть быстрее чем TCP но ... как говорил Василий Иванович есть один "нюанс".