
16 图 | 实战 Eureka 集群搭建+服务注册+调用(二)
五、组成 Eureka 集群
修改本地 hosts 配置
host 文件添加两台 Eureka server 的地址映射,都为本地 localhost 地址
127.0.0.1 eureka-server1
127.0.0.1 eureka-server2
修改 Eureka Server 配置
两个服务互相向对方注册,第一个 Eureka 开放 8761 端口,注册到第二个 Eureka 的 8762 端口。
第一个 Eureka Server 的配置并启动
server:
port: 8761
eureka:
instance:
hostname: eureka-server1
client:
serviceUrl:
defaultZone: http://eureka-server1:8762/eureka/
修改第二个 Eureka Server 的配置,并启动
server:
port: 8762
eureka:
instance:
hostname: eureka-server2
client:
serviceUrl:
defaultZone: http://eureka-server2:8761/eureka/
访问 http://localhost:8761/
可以看到两个 Eureka Server。访问 http://localhost:8762/
可以看到两个 Eureka Server。根据上面的两张图,说明两台 Eureka Server 组成了一个集群环境。
六、组成服务集群
接下来将服务注册到 Eureka 集群上。另外因为我最开始用的商品服务的名字是 ServiceA,而不是 ProductService,所以案例中的截图都是 ServiceA,订单服务对应的是 ServiceB,不影响案例演示。
将服务 A 配置成注册到 Eureka 集群。在 defaultZone 配置中添加第二个 eureka 的服务地址。
server:
port: 8006
spring:
application:
name: ServiceA
eureka:
instance:
hostname: localhost
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka,http://localhost:8762/eureka
然后启动服务 A。
然后将服务 A 的 port 改为 8006 后,再次启动一个服务 A,相当于部署了两个服务 A,后续可以作为测试负载均衡的功能。发现一个 Eureka 的问题,注册列表总是刷新不出最新的注册信息,重启 Eureka 服务后就刷出来了。
接着我们把服务 A 的passjava 方法,打下日志,后面观察两个服务 A 分别被服务 B 调用了几次。
七、修改调用者的配置
将服务 B 配置成注册到 Eureka 集群。在 defaultZone 配置中添加第二个 eureka 的服务地址。
两个 Eureka 服务中都有服务 B 的注册信息。八、测试集群调用
接下来测试两个服务 A 组成微服务集群后,利用 Ribbon 负载均衡组件实现服务的负载均衡,说白了,就是两个服务 A,分别被服务 B 平均调用了。
测试方法:多次刷新浏览器,访问服务 B 的 API,服务 B 会调用服务 A。如下图所示:
http://localhost:9091/test/悟空
第一个服务 A 被服务 B 调用了 6 次:第二个服务A 被服务 B 调用了 7 次:
根据上面的结果说明 Eurkea 集群 + Ribbon + 微服务集群的案例演示完成。
九、总结
本篇通过案例演示的方式,带着大家练习了如下内容:
• 如何使用 Eureka 作为注册中心。
• 如何将多个服务注册到 Eureka 上。
• 通过使用 Eureka,服务间的调用不再需要知道对方的 IP 地址。
• 如何将两个 Eureka Server 在本地组成 Eureka 集群。
• 如何将多个服务注册到 Eureka 集群上。
• 如何将多个相同的服务组成微服务集群。
