我在三个节点上有一个docker swarm和一个外部mysql服务(在swarm之外)。我正在使用golang和gRPC中的API网关编写微服务。我有两个问题。
第一个问题是当我使用java.time
推送更新服务时,我从每个微服务docker swarm update --image ... myservice
获取有关网关的三个请求的API网关错误。 (我假设每个任务都需要重新连接每个服务?)我该如何解决这个问题?每项服务的transport is closing
设置为update-delay
,30s
设置为update-parallelism
。如果有滚动更新,api网关是否应该保持与每个服务的连接?
第二个问题是偶像时间(不知道多长时间)我从上面得到同样的问题,服务正在关闭,我必须向api网关做三个请求才能工作。任何帮助赞赏。 我正在使用Docker版本17.12.0-ce运行Ubuntu 16.04,构建c97c6d6并且正在构建go版本go1.9.4 darwin / amd64
服务示例:
1
我的api网关连接
// listen on address
lis, err := net.Listen(network, address)
if err != nil {
log.Fatalf("failed to listen: %v", err)
}
defer lis.Close()
// create users server
s := grpc.NewServer()
pb.RegisterUsersServer(s, &server{})
// register reflection service on gRPC server.
reflection.Register(s)
// message will run after serve if err == nil
go func() {
time.Sleep(time.Second)
log.Printf("started users service on %s", address)
}()
if err := s.Serve(lis); err != nil {
log.Fatalf("failed to serve: %v", err)
}