在泊坞窗群golang GRPC更新图像每次都要重新连接的客户端(golang gRPC updat

2019-09-26 11:23发布

我有三个节点泊坞窗群加上一个外部的MySQL服务(群外)。 我在golang和GRPC的API编程网关微服务。 我有两个问题。

第一个问题是,当我推的更新服务与docker swarm update --image ... myservice我得到我从每个微服务API网关错误transport is closing了三个请求到网关。 (我假设每个任务需要重新连接上的每个服务?)我怎样才能解决这个问题? 每个服务都有update-delay设置为30supdate-parallelism设置为1 。 不应API网关保持连接到每一个服务,如果有滚动更新?

第二个问题是一个偶像时间后(不知过了多久),我从上面的服务被关闭,我必须要做到三个请求API网关,它的工作得到了同样的问题。 任何帮助表示赞赏。 我运行Ubuntu 16.04与多克尔版本17.12.0策,建立c97c6d6和正在建设走版本go1.9.4达尔文/ AMD64

服务例如:

  // 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)
    }

我的API网关连接

// connect to users
usersConnection, err := grpc.Dial(usersAddress, grpc.WithInsecure())
if err != nil {
    log.Fatalf("did not connect: %v", err)
}
users = userspb.NewUsersClient(usersConnection)
log.Println("connected to users")
文章来源: golang gRPC update image in docker swarm having to reconnect clients each time