A simple, fast, and distributed data broker for clustered server use.
The typical problem with distributed servers is encountering the three main issues:
- The server typically has to rely on a central DB server (which adds latency to farther regions)
- A server that does use distributed DBs needs to handle synchronization between the DBs (which is hard to do correctly)
- Database mutations and queries are typically slow and asynchronous operations are difficult to implement correctly
Thus, the solution is to use a broker to extract all the database logic. However, we want a distributed broker so that we are able to limit latency but also have some way to handle synchronization between the brokers.
Net.Server- central server to handle all UDP trafficNet.Manager- central manager to handle all connectionsNet.Conn- connection struct to store connection infoNet.Packet- Protobuf packets to handle all the different packet typesNet.Cluster- functions to connect to other nodes and broadcast updates (via OTP)Net.Reliablity- enforces reliability on all packets as well as handling retriesNet.Security- utilizes AES to encrypt and decrypt incoming packetsNet.Dispatch- performs/stores all packet handlers (based on an ID specified)
- Basic UDP server
- Basic packet handling
- Basic cluster connection
- Finish packet layer
- Add service authentication
- Implemented security via AES encryption
- Add database connection
- Add redis connection
- Add proper regional handling
- Find a way to combat synchronization issues (few will arise because of Cluster implementation)
- Add better logging

