每次都要重新连接客户端的docker swarm中的golang gRPC更新映像

时间:2018-02-28 14:45:07

标签: docker go docker-swarm grpc

我在三个节点上有一个docker swarm和一个外部mysql服务(在swarm之外)。我正在使用golang和gRPC中的API网关编写微服务。我有两个问题。

第一个问题是当我使用java.time推送更新服务时,我从每个微服务docker swarm update --image ... myservice获取有关网关的三个请求的API网关错误。 (我假设每个任务都需要重新连接每个服务?)我该如何解决这个问题?每项服务的transport is closing设置为update-delay30s设置为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)
    }

0 个答案:

没有答案