1. discovery-service 的角色
在微服务架构中,服务发现(Service Discovery)是一个关键组件,它允许服务自动注册并能动态查找其他服务的位置。Eureka是Netflix开源的一个服务发现组件,在Spring Cloud中被广泛使用。
2. 配置解读
version: "3.7"
services:
discovery-service:
image: piomin/discovery-service:1.1-SNAPSHOT
ports:
- "8061:8061"
depends_on:
config-service:
condition: service_healthy
links:
- config-service
healthcheck:
test: curl --fail http://localhost:8061/eureka/v2/apps || exit 1
interval: 4s
timeout: 2s
retries: 3
environment:
SPRING_PROFILES_ACTIVE: docker
3. 服务发现
服务发现的作用是让服务可以动态地找到其他服务的实例,而不需要硬编码服务地址。
- Eureka:Netflix的一个服务发现组件,提供服务注册和发现功能。服务在启动时会注册到Eureka Server上,Eureka Server会维护一个服务实例列表,供其他服务查找。
4. 依赖配置(depends_on 和 links)
依赖配置用于定义服务之间的启动顺序和网络连接。
- depends_on: 定义服务的启动顺序和依赖关系。
- links: 建立容器之间的网络连接,使得一个容器可以通过名称访问另一个容器。
5. 配置详解
image: piomin/discovery-service:1.1-SNAPSHOT: 使用指定的镜像来运行discovery-service。ports: ["8061:8061"]: 将主机的8061端口映射到容器的8061端口。depends_on: 定义服务的依赖关系。config-service: 定义依赖的服务。condition: service_healthy: 表示只有当config-service健康检查通过时,discovery-service才会启动。
links: 使discovery-service可以通过名称访问config-service。config-service: 链接到config-service容器。
healthcheck: 配置健康检查。test: curl --fail http://localhost:8061/eureka/v2/apps || exit 1: 检查Eureka Server的API接口是否可用。interval: 4s: 每4秒进行一次健康检查。timeout: 2s: 健康检查的超时时间为2秒。retries: 3: 如果连续3次健康检查失败,则认为容器不健康。
environment: 配置环境变量。SPRING_PROFILES_ACTIVE: docker: 设置Spring Boot的激活配置文件为docker。
6. 实践示例
Docker Compose 文件示例
version: "3.7"
services:
config-service:
image: piomin/config-service:1.1-SNAPSHOT
ports:
- "8088:8088"
healthcheck:
test: curl --fail http://localhost:8088/employee/docker || exit 1
interval: 5s
timeout: 2s
retries: 3
discovery-service:
image: piomin/discovery-service:1.1-SNAPSHOT
ports:
- "8061:8061"
depends_on:
config-service:
condition: service_healthy
links:
- config-service
healthcheck:
test: curl --fail http://localhost:8061/eureka/v2/apps || exit 1
interval: 4s
timeout: 2s
retries: 3
environment:
SPRING_PROFILES_ACTIVE: docker
运行服务
- 启动config-service和discovery-service:bash复制代码
docker-compose up -d config-service discovery-service - 验证服务健康状况:
- 检查config-service是否启动并健康。
- 检查discovery-service是否能够成功启动并健康。
- 查看Eureka Server:
- 打开浏览器,访问
http://localhost:8061,你应该能够看到Eureka Server的控制台界面,其中列出了已注册的服务。
- 打开浏览器,访问
7. 结论
通过学习服务发现和依赖配置,你可以更好地管理和协调微服务的启动顺序和健康状况。服务发现组件如Eureka使得服务可以动态注册和发现,简化了服务间的通信和管理。依赖配置确保服务在正确的顺序中启动,并且可以自动处理服务的健康状况,从而提高系统的可靠性和可维护性。