A modern and easy to use Client/UI for Etcd
A Configuration center and Service registration and discovery platform based on Etcd
-
Configuration center
-
Service registration and discovery for Http/gRPC Server
-
User management
-
Role management
download example
cd example
docker-compose up -d
you can change version
to a specific version
on docker hub
Make sure the client and server use the same version, they will be updated together, incompatible versions may make some unexpected errors.
Windows/MacOS/Linux | Web | Docker |
---|---|---|
β | β | β |
build from source | build from source | β |
then visit http://localhost:2334
go get github.com/cruvie/kk_etcd_go@latest
refers to Put/Get
refers to Register Http Service
refers to GetGrpcClient
sequenceDiagram
actor Server
Server ->> ServiceHub: Server init
Etcd ->> ServiceHub: Get service from etcd
ServiceHub ->> DeadHub: putToDeadHub
DeadHub ->> Checker: startNewCheck
sequenceDiagram
actor Client
Client ->> SerService: RegisterService
SerService -->> SerService: CheckConfig
SerService ->> Etcd: Put service info to etcd
Etcd -->> ServiceHub: Trigger watch event(EventTypePut)
ServiceHub ->> DeadHub: putToDeadHub
DeadHub ->> Checker: startNewCheck
sequenceDiagram
actor Client
Client ->> SerService: DeregisterService
SerService ->> Etcd: Delete Service from etcd
Etcd -->> ServiceHub: Trigger watch event(EventTypeDelete)
ServiceHub ->> DeadHub: delFromDeadHub
ServiceHub ->> AliveHub: delFromAliveHub
AliveHub ->> Etcd: putAliveHubToEtcd
ServiceHub ->> Checker: stopCheck
var runningCheck = make(map[string /*UniqueKey*/ ]*checkT)
sequenceDiagram
ServiceHub ->> Checker: startNewCheck
Checker ->> stopCheck: stopCheck
stopCheck ->> stopCheck: cancel ctx and delete from runningCheck Map
Checker ->> Checker: save to runningCheck Map and with cancelCtx
loop Check every service with thier own check config
Checker ->> Checker: checkGrpc/checkHttp
alt if status is healthy
Checker ->> ServerHub: update
ServerHub ->> AliveHub: putToAliveHub(if not exist)
AliveHub ->> Etcd: putAliveHubToEtcd
ServerHub ->> DeadHub: delFromDeadHub
end
end
sequenceDiagram
actor Client
Client ->> kk_etcd: GetGrpcClient(serviceName)
kk_etcd ->> SerService: GetServiceAddr(connType, serviceName)
SerService ->> Etcd: getAliveHubFromEtcd(getHubFromEtcd)
loop HealthCheck
SerService -->> SerService: Get one random service (getOneAliveService)
SerService -->> SerService: Check connection status(checkGrpc)
SerService -->> kk_etcd: status ok
end
kk_etcd -->> kk_etcd: Build grpc client
kk_etcd -->> Client: Return grpc client
Feel free to send pull requests or fire issues if you encounter any bugs or have suggestions.
Buy me a cup of coffee βοΈ if you like this project and want to keep it active.
Alipay | |
---|---|
![]() |
![]() |
This project is supported by JetBrains.