微服务架构:技术与原则深度解析
1. 服务发现与注册系统
1.1 Eureka
Eureka 是 Netflix 开源的服务发现系统,与 Consul 和 Zookeeper 不同,它并非通用的配置存储系统,而是专注于特定用例。其特点如下:
- 负载均衡 :支持基本的轮询查找服务实例,具备基础的负载均衡能力。
- 接口方式 :提供基于 REST 的端点,可编写自定义客户端,也可使用 Java 客户端。Java 客户端有额外功能,如实例健康检查。若绕过 Java 客户端直接使用 REST 端点,需自行处理相关操作。
- 客户端处理 :客户端直接处理服务发现,避免了单独进程的需求,但要求每个客户端都实现服务发现功能。在以 JVM 为标准的环境中,可让所有客户端使用 Eureka 实现;在多语言环境中,实现起来可能有挑战。
1.2 自建系统
可以利用 AWS 的标签功能自建服务发现系统,步骤如下:
1. 在启动服务实例时,为实例添加标签,定义实例的用途和相关信息,如:
service = accounts
environment = production
version = 154
- 使用 AWS APIs 查询与特定 AWS 账户关联的所有实例,找到所需机器。
- 构建命令行工具与这些实例交互,若每个服务实例都暴露健康检查细节,创