Project · 2020

Distributed Messaging System

Highly reliable messaging system with chat, group chat, and secure chat functionality, with state replication between nodes for fault tolerance and dynamic routing between clients and servers.

Technologies

  • Elixir
  • GenServer
  • Swarm
  • Distributed Systems
  • Docker

This messaging system explores reliable communication across distributed nodes. It supports direct chat, group chat, and secure chat while replicating state so that another node can continue serving clients when a failure occurs.

Elixir processes and GenServer provide the application’s concurrency model, with Swarm coordinating distributed process registration. Separate client, router, and supervised server components divide the system’s responsibilities, while dynamic routing connects clients to available servers. Docker provides a repeatable environment for running and testing the multi-node topology.