servicekit is a simple, minimum viable service management library for golang.
-
get library
go get github.com/servicekit/servicekit-go (>=go1.8)
-
coordinator service
co, err := coordinator.NewConsul("127.0.0.1:8500", "http", "", log) if err != nil { panic(err) } // Get Services services, meta, error:= co.GetServices(context.Background(), "service name", "tag string") ... // Register service err := co.Register(context.Background(), spec.Service{ID: "nginx1", Service: "nginx"}) ... // Deregister service err := co.Deregister(context.Background(), "service_id") ...
-
grpc load balance
grpc load balance was implemented by https://github.com/grpc/grpc/blob/master/doc/load-balancing.md
co, err := coordinator.NewConsul("127.0.0.1:8500", "http", "", log) if err != nil { panic(err) } b, err := balancer.NewConsulBalancer(co, "account_service", "", log) if err != nil { panic(err) } r := b.GetResolver(context.Background()) conn, err := grpc.Dial( "", grpc.WithBalancer(grpc.RoundRobin(r))) ...
-
grpc invoke fault tolerant
i := invoker.NewFailoverInvoker(10, time.Second, invoker.NewFibDelay(time.Second)) err := i.Invoke(context.Background(), conn, "/Account/Auth", authRequest, authResponse) ...