--- description: This section describes Memphis'architecture --- # Architecture ### Connectivity Diagram Memphis deployment comprised four components: **1.** UI - The dashboard of Memphis. **2.** Broker - Messaging Queue. Memphis broker is a fork of [NATS.io](http://nats.io/), which is an existing and battle-tested messaging queue with Memphis improvements and tunings. **3.** MongoDB - Only for UI state persistency (not used for storing messages). Will be replaced in the coming versions. Consumers are pull-based. The pull interval and the batch size can be configured. Each consumer will consume all the messages residing inside a station. The user must create consumers within the same consumer group if a client requires a horizontal scale and split messages across different consitency group members. MongoDB is not necessary for data traffic or standard broker behavior but rather responsible for UI state and metadata only. ### Cluster mode component diagram (For production) Full Kubernetes-based layout. ### Ordering Ordering is guaranteed only while working with a single consumer group. ![](../.gitbook/assets/ordering.jpeg) ### Mirroring Memphis is designed to run as a distributed cluster for a highly available and scalable system. The consensus algorithm responsible for atomicity within Memphis, called RAFT, and compared to Apache ZooKeeper, widely used by other projects […] read more