【问题标题】:How frontend service know the change of history services in cadence?前端服务如何知道节奏中历史服务的变化?
【发布时间】:2021-08-18 04:38:31
【问题描述】:

对于 cadence,历史服务是一个响铃,因此如果将新的历史服务添加到历史服务中,每个历史服务都会知道要加入的新历史服务。但是前端服务需要将请求路由到历史服务。前端服务如何知道还有一项历史服务要加入?

【问题讨论】:

    标签: cadence-workflow


    【解决方案1】:

    这一切都是通过 ringpop 完成的。 Cadence 将 ringpop 库用于所有服务,包括历史记录和前端。

    https://github.com/uber/ringpop-go

    Ringpop 为分片、请求路由和主机发现提供一致的哈希环。

    在 Cadence 集群中,所有服务都将使用相同的 ringpop 引导配置,如

    https://github.com/banzaicloud/banzai-charts/blob/031c49f4f1f542f60a88bb9f5fc56c22a518d773/cadence/templates/server-configmap.yaml#L72

    这样,所有服务都使用相同的一致哈希环,它们可以到达任何服务的任何主机。

    如果您使用 admin cluster describe 命令,您可以看到 如下所示:

    
    cadence --address `hostname`:7933 adm cl d
    {
      "supportedClientVersions": {
        "goSdk": "1.5.0",
        "javaSdk": "1.5.0"
      },
      "membershipInfo": {
        "currentHost": {
          "Identity": "10.42.13.242:7933"
        },
        "reachableMembers": [
          "10.42.13.254:7935",
          "10.42.26.5:7939",
          "10.42.18.213:7934",
          "10.42.13.242:7933",
          "10.42.27.210:7939",
          "10.42.18.48:7933",
          "10.42.18.153:7935"
        ],
        "rings": [
          {
            "role": "cadence-frontend",
            "memberCount": 2,
            "members": [
              {
                "Identity": "10.42.18.48:7933"
              },
              {
                "Identity": "10.42.13.242:7933"
              }
            ]
          },
          {
            "role": "cadence-history",
            "memberCount": 1,
            "members": [
              {
                "Identity": "10.42.18.213:7934"
              }
            ]
          },
          {
            "role": "cadence-matching",
            "memberCount": 2,
            "members": [
              {
                "Identity": "10.42.13.254:7935"
              },
              {
                "Identity": "10.42.18.153:7935"
              }
            ]
          },
          {
            "role": "cadence-worker",
            "memberCount": 2,
            "members": [
              {
                "Identity": "10.42.27.210:7939"
              },
              {
                "Identity": "10.42.26.5:7939"
              }
            ]
          }
        ]
      }
    }
    
    

    每个主机可能为不同的服务工作,但他们都互相认识。

    有兴趣的可以看这里的实现代码路径https://github.com/uber/cadence/blob/deb0caf06577be007046e5f96ef40bdf3c0bc728/client/history/client.go#L1178

    【讨论】:

      猜你喜欢
      • 2022-10-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多