基于笔记1-服务治理-服务注册已经创建了有两个节点的服务注册中心peer1
和peer2
以及一个服务提供者hello-service
。
现在要创建一个服务消费者。它有两个任务:发现服务和消费服务。其中服务发现任务由Eureka客户端完成,服务消费任务由Ribbon完成。Ribbon在Eureka客户端发现服务的基础上,实现了一套对服务实例的选择策略,从而实现服务消费。
启动注册中心和服务提供者
分别启动peer1
、peer2
并启动两个hello-service
实例,分别使用8081
端口和8082
端口。
此时看到Eureka信息面板中HELLO-SERVER
的注册实例数为2。

新建消费者
-
创建SpringBoot项目
新建项目,命名为ribbon-consumer
勾选Ribbon
-
开启服务发现
在主类上添加@EnableDiscoveryClient
注解,利用Eureka开启服务发现。
开启服务发现
-
创建RestTemplate实例
创建RestTemplate
实例,并使用@LoadBalanced
注解进行标注,Ribbon将利用RestTemplate实现客户端负载均衡。
创建RestTemplate实例
-
创建ConsumerController
注入RestTeplate
实例,并使用它来调用服务。
服务调用
注意当调用服务时使用的是服务名HELLO-SERVER
,而不是具体地址。这就符合微服务理念,即服务消费者不知道服务的具体地址,而是向服务注册中心咨询服务列表并通过服务名调用服务。
消费者配置
我们为其分配9000端口,并配置服务注册中心地址,同时它自己也将会作为服务注册到服务注册中心。

测试
运行消费者,在服务注册中心Eureka面板可以发现消费者也注册了进来。

调用localhost:9000/ribbon-consumer
,成功输出HELLO-SERVICE
的结果。

消费者控制台也输出了调用的服务的节点信息。

多次访问
localhost:9000/ribbon-consumer
,观察两个HELLO-SERVICE
控制台,发现请求被分摊到两个节点中。
-
HELLO-SERVICE:8081
HELLO-SERVICE:8081访问结果
-
HELLO-SERVICE:8082
HELLO-SERVICE:8082访问结果
网友评论