首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >前端服务如何知道历史服务在cadence中的变化?

前端服务如何知道历史服务在cadence中的变化?
EN

Stack Overflow用户
提问于 2021-07-17 10:52:45
回答 1查看 56关注 0票数 0

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-17 14:42:03

这一切都是通过铃声完成的。Cadence使用ringpop库来提供所有服务,包括历史和前端。

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

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

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

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

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

如果您使用管理集群describe命令,您可以看到类似以下内容:

代码语言:javascript
复制
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感兴趣,这里提供了实现代码路径

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68417033

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档