Nomura 微服务发现解决方案总结
Nomura 在 AWS 和 HashiCorp 顾问的帮助下,开发了一种用于复杂微服务环境的服务发现解决方案。该解决方案基于 HashiCorp Consul,采用分层、基于规则的算法,支持通过服务名称、DNS 延迟和自定义标签进行服务发现。
背景与挑战
Nomura 需要一个灵活的服务发现解决方案,以支持其微服务和云采用之旅。Nomura 外汇电子交易策略主管 Tom Palmer 指出,在异构部署环境中进行服务发现的挑战:
- 大型组织的微服务环境通常跨越云平台、本地数据中心和托管设施。
- 由于环境的复杂性,必须实施高效的服务发现和配置管理机制以支持大规模操作。
解决方案架构
解决方案的核心是部署一个跨越多个网络的 HashiCorp Consul 集群,借助 AWS Transit Gateway 连接 AWS VPC 和本地网络。AWS Transit Gateway 作为一个高度可扩展的云路由器,允许跨区域共享 VPC、DNS、Microsoft Active Directory 和 IPS/IDS。
技术细节
- 广域网拓扑:Consul 集群能够查看部署在不同数据中心(包括本地和云端)的微服务实例。
- Spring Cloud Consul 插件:在 EC2 上运行的微服务使用该插件与 Consul 集群交互,并从 EC2 实例元数据服务中获取实例元数据。
- 服务注册与发现:微服务启动时,从 EC2 元数据服务中检索标签和其他元数据,并注册到 Consul 集群。注册后,服务可以查询其他服务并被其他服务发现。
- 基于规则的发现:支持基于标签和显式优先级定义的规则,允许在主要实例不可用时发现备用实例。规则还可用于强制执行环境和数据中心位置之间的边界,并实现自定义发现范围。
服务发现流程
- Consul Agent 注册:Consul Agent 实例注册到本地 Consul 集群。
- 服务注册:服务本身与 Consul 交互并注册到 Agent。
- 服务查询:服务通过 API 调用查询其他服务。
- 服务调用:返回服务发现数据后,服务可以直接调用一个或多个发现的服务。
示例项目
AWS 和 HashiCorp 提供了一个演示项目,包含所有组件和部署步骤。项目使用 HashiCorp Terraform 和 Packer 打包和提供必要的基础设施,使用 AWS CLI 和 AWS Systems Manager 访问 Consul 集群并与 Consul UI 交互。
通过该解决方案,Nomura 成功实现了在复杂微服务环境中的高效服务发现和管理,为其云采用之旅提供了强有力的支持。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。