À propos du projet

Ce dépôt est une collection orientée apprentissage d'exemples Elixir petits et auto-contenus conçus pour enseigner les concepts de systèmes distribués à partir des premiers principes. Plutôt que de se concentrer sur les frameworks web ou les applications CRUD, il utilise des primitives de processus Elixir brutes pour démontrer comment les systèmes distribués sont construits avant d'introduire des abstractions OTP de niveau supérieur telles que GenServer, Supervisor et Registry. Chaque exemple est indépendant, minimal et exécutable avec une seule commande, et est associé à un article de blog technique qui explique le problème, les décisions de conception, le flux de messages, les limitations et comment OTP résout ces limitations. Le dépôt suit une feuille de route structurée qui progresse des fondements des processus à la coordination des processus, aux nœuds BEAM distribués, à la réplication, à la tolérance aux pannes, aux structures de données distribuées et à un projet final de mini-queue de messages distribués. Les exemples terminés couvrent la construction d'un processus avec état sans GenServer, la requête-réponse corrélée, la surveillance de processus, le lien de processus, un superviseur à partir de zéro, des processus nommés, des pools de travailleurs et la publication/abonnement. Les sujets prévus comprennent la contre-pression, la connexion de nœuds, le passage de messages distant, la détection de panne de nœud, les comptoirs distribués, la réplication primaire/réplique, les battements de cœur, l'élection de leader, les files d'attente de travail, les messages fiables, les journaux d'écriture anticipée, les magasins de clés-valeurs distribués, les CRDT et une mini-queue de messages distribués. Le dépôt est utile pour les développeurs qui souhaitent comprendre les internes d'Elixir, Erlang/OTP, le passage de messages, la programmation concurrente, la tolérance aux pannes et les idées architecturales derrière des systèmes tels que RabbitMQ. Il est préférable de le traiter comme un laboratoire éducatif et un compagnon de blog plutôt que comme un framework prêt à la production.