Skip to content
/ cassem Public

(WIP) A distributed Configuration Center Application.

License

Notifications You must be signed in to change notification settings

yeqown/cassem

Repository files navigation

cassem

Go Report Card go.de │ v reference

CASSEM is a distributed config management center, it is totally independent, so it's easy to deploy and maintain in your environment. At the same time, it's deployed by Go which gives it platform-cross ability and fast-compile.

Features

  • HTTP Restful API to manage all configs cassemadm.
    • Stateless so that it can be easily scaled.
    • Gray released.
    • Multi-version management.
    • Operation log, each operation to config elements will be recorded.
    • Permission control.
    • Client instance management.
    • CTL / UI tool support these are constructing on cassemadm RESTful API.
      • Web UI is developing.
      • CTL tool to debug and manage config from terminal.
  • Distributed storage component cassemdb, based on raft consensus algorithm.
    • Master can read and write.
    • Slave node can only respond to read request.
    • Use gRPC protocol to communicate.
    • Watch TTL features support.
    • Lazy Deletion the expired KV. There is a deleting working thread to delete KV from queue, the queue's data is from two part, one is operation check, another is timer check.
  • Stateless agent component cassemagent to improve client's usability.
    • Cache config elements, and using LRU-K replacing algorithm.
    • Language independent support HTTP and gRPC protocol.
    • Client SDK, easy to use.
    • Change Push ability, gray released also built on this.

Explanation:

  • cassemdb provide KV storage capacity.
  • cassemadm is the manager to whole cassem application.
  • cassemagent‘s major duty is helping clients to access config easier, makes cassemdb work transparently to clients. Importantly, cassemagent is stateless so that it could easily scale up and load balance.

The KV storage component in cassem, provide gRPC API.

The manager in cassem, provide RESTful API to communicate. It is serving for CTL and Dashboard UI.

Agent is serving for user's client, agent SDK, actually. Of course, agent is stateless server.

benchmark tested core RESTful API and try to optimize them, each benchmark test displays the final QPS result.

References