Skip to content

cqdetdev/prism

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

41 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Prism

A simple, fast, and distributed data broker for clustered server use.

image

Purpose

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.

Architecture

Architecture

Features/Development

  • Net.Server - central server to handle all UDP traffic
  • Net.Manager - central manager to handle all connections
  • Net.Conn - connection struct to store connection info
  • Net.Packet - Protobuf packets to handle all the different packet types
  • Net.Cluster - functions to connect to other nodes and broadcast updates (via OTP)
  • Net.Reliablity - enforces reliability on all packets as well as handling retries
  • Net.Security - utilizes AES to encrypt and decrypt incoming packets
  • Net.Dispatch - performs/stores all packet handlers (based on an ID specified)

Current Status

  • 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

About

A simple, fast, and distributed data broker for distributed server use.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published