service_cluster 和 service_node 在 Envoy RDS REST API 中有什么用?

what is the use of service_cluster and service_node in Envoy RDS REST API?

我正在尝试开发与 lyft/envoy 一起使用的 RDS(路由发现服务)。根据文档 RDS API URL 应该遵循 GET /v1/routes/(string: route_config_name)/(string: service_cluster)/(string: service_node)。我想知道的是 service_cluster 和 service_node.

的用法

目前我还没有将它们用于任何特定任务,只是匹配了 GET 路径并定义了单个路由。哪个工作得很好。我检查了 envoy 为那些发送的值并得到了 service_cluster: lax & service_node: node1,没有太大帮助。文档说这些值也可以通过 CLI 选项设置。

它应该用来做什么?我错过了什么吗?

我的理解是:Envoy 旨在成为微服务网格中微服务的代理。因此,您可以让多个特使从 RDS 获取路由配置。当你设计你的网格时,你可以决定如何对这些多个特使进行分组——这是你的网格和 RDS 之间的契约。 RDS 有两个级别的分组 - 按 服务集群 服务节点 。因此,您可以决定,例如,调用服务集群(具有多个版本的微服务)的同一微服务服务节点的多个版本。

因此您可以为网格中的每个特使实例分配一个服务集群和一个服务节点标识符,并将这些参数传递给特使命令行。然后 envoy 将它们传递给 RDS 以获取路由。然后,如果您的网状设计需要,RDS 可以 return 不同的路由到不同的服务集群和服务节点。

如果您不使用 envoy 作为网格的一部分,即您 运行 只是一个单独的 envoy,您可以在 RDS 实现中忽略这些参数。