Skip to content

cruvie/kk_etcd_go

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Etcd UI

Go Reference

A modern and easy to use Client/UI for Etcd

A Configuration center and Service registration and discovery platform based on Etcd

Feature

  • Configuration center

  • Service registration and discovery for Http/gRPC Server

  • User management

  • Role management

service

ui

key value

ui

How to use?πŸ€”

download example

cd example
docker-compose up -d

you can change version to a specific version on docker hub

Warning ❗

Make sure the client and server use the same version, they will be updated together, incompatible versions may make some unexpected errors.

Client

Homepage Client

Download

Windows/MacOS/Linux Web Docker
βœ… βœ… βœ…
build from source build from source βœ…

then visit http://localhost:2334

Server

Homepage Server

SDK

  go get github.com/cruvie/kk_etcd_go@latest

Put/Get config into/from etcd in yaml/json format

refers to Put/Get

Register Http/gRPC Service to etcd

refers to Register Http Service

Get a grpc client from etcd

refers to GetGrpcClient

Service Hub Design

Server init

sequenceDiagram
    actor Server
    Server ->> ServiceHub: Server init
    Etcd ->> ServiceHub: Get service from etcd
    ServiceHub ->> DeadHub: putToDeadHub
    DeadHub ->> Checker: startNewCheck
Loading

Register a service

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
Loading

Deregister a service

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
Loading

Health check

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
Loading

Get a grpc connection

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
Loading

Contribute

Feel free to send pull requests or fire issues if you encounter any bugs or have suggestions.

Donate

Buy me a cup of coffee β˜•οΈ if you like this project and want to keep it active.

Alipay Wechat
alipay wechat

Thanks

This project is supported by JetBrains. JetBrains logo

About

A modern and easy to use Client/UI for Etcd, A configuration center based on Etcd

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages