Об этом проекте
Этот репозиторий представляет собой коллекцию небольших, самодостаточных примеров на Elixir, предназначенных для обучения концепциям распределенных систем с первых принципов. Вместо того чтобы фокусироваться на веб-фреймворках или CRUD-приложениях, он использует примитивы процессов Elixir для демонстрации того, как строятся распределенные системы, прежде чем вводить более высокоуровневые абстракции OTP, такие как GenServer, Supervisor и Registry.
Каждый пример является независимым, минимальным и запускаемым одной командой, и сопровождается техническим постом в блоге, который объясняет проблему, решения по дизайну, поток сообщений, ограничения и то, как OTP решает эти ограничения. Репозиторий следует структурированной дорожной карте, которая прогрессирует от основ процессов к координации процессов, распределенным узлам BEAM, репликации, отказоустойчивости, распределенным структурам данных и финальному мини-проекту распределенной очереди сообщений.
Завершенные примеры включают построение состоятельного процесса без GenServer, коррелированный запрос-ответ, мониторинг процессов, связывание процессов, supervisor с нуля, именованные процессы, пулы рабочих и публикацию/подписку. Планируемые темы включают обратное давление, соединение узлов, удаленную передачу сообщений, обнаружение сбоев узлов, распределенные счетчики, репликацию первичный/вторичный, heartbeat, выбор лидера, очереди заданий, надежную передачу сообщений, журналы записи вперед, распределенные хранилища ключ-значение, CRDT и крошечную распределенную очередь сообщений.
Репозиторий полезен для разработчиков, которые хотят понять внутреннее устройство Elixir, Erlang/OTP, передачу сообщений, конкурентное программирование, отказоустойчивость и архитектурные идеи, лежащие в основе таких систем, как RabbitMQ. Его лучше всего рассматривать как образовательную лабораторию и дополнение к блогу, а не как готовую к производству платформу.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.