https://github.com/yeqown/cassem
(WIP) A distributed Configuration Center Application.
https://github.com/yeqown/cassem
configuration-management distributed-systems go raft
Last synced: about 1 year ago
JSON representation
(WIP) A distributed Configuration Center Application.
- Host: GitHub
- URL: https://github.com/yeqown/cassem
- Owner: yeqown
- License: mit
- Created: 2021-02-21T09:50:06.000Z (over 5 years ago)
- Default Branch: main
- Last Pushed: 2021-11-26T02:18:07.000Z (over 4 years ago)
- Last Synced: 2025-03-26T22:11:35.895Z (over 1 year ago)
- Topics: configuration-management, distributed-systems, go, raft
- Language: Go
- Homepage:
- Size: 2.02 MB
- Stars: 24
- Watchers: 1
- Forks: 3
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# cassem
[](https://goreportcard.com/report/github.com/yeqown/cassem) [](https://pkg.go.dev/github.com/yeqown/cassem)
`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
- [x] HTTP Restful API to manage all configs `cassemadm`.
- [x] Stateless so that it can be easily scaled.
- [x] Gray released.
- [x] Multi-version management.
- [ ] Operation log, each operation to config elements will be recorded.
- [x] Permission control.
- [x] Client instance management.
- [ ] `CTL` / `UI` tool support these are constructing on `cassemadm` RESTful API.
- [ ] [Web UI](https://github.com/yeqown/cassem-ui) is developing.
- [ ] [CTL](#) tool to debug and manage config from terminal.
- [x] Distributed storage component `cassemdb`, based on raft consensus algorithm.
- [x] Master can read and write.
- [x] Slave node can only respond to read request.
- [x] Use `gRPC` protocol to communicate.
- [x] `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`.
- [x] Stateless agent component `cassemagent` to improve client's usability.
- [x] Cache config elements, and using `LRU-K` replacing algorithm.
- [ ] Language independent support `HTTP` and `gRPC` protocol.
- [x] Client SDK, easy to use.
- [x] `Change Push` ability, gray released also built on this.
## [Documentation](./docs/README.md)

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.

### - [cassemdb](./cmd/cassemdb/README.md)
The KV storage component in cassem, provide gRPC API.

### - [cassemadm](cmd/cassemadm/README.md)
The manager in cassem, provide RESTful API to communicate. It is serving for CTL and Dashboard UI.
### - [cassemagent](cmd/cassemagent/README.md)
Agent is serving for user's client, agent SDK, actually. Of course, agent is stateless server.
## [Benchmark](./benchmark)
benchmark tested core RESTful API and try to optimize them, each benchmark test displays the final QPS result.
## References
* https://github.com/yongman/leto
* https://github.com/laohanlinux/riot