之前的例子中,已经搭建起来了服务注册中心,包括单节点模式和高可用模式,同时呢服务提供者也有了,就是eureka-client,然后接下来尝试构建一个消费者.
服务消费者
主要完成两个目标,发现服务以及消费服务.
其中,发现服务的任务是由eureka的客户端完成的,而服务消费的任务是由ribbon完成的. Ribbon是一个基于HTTP和TCP的客户端负载均衡器.
准备工作
为了实验Ribbon的客户端负载均衡功能,所以我们以jar的方式启动两个服务提供者(eureka-client)
1 | java -jar eureka-client.jar --server.port=8081 |
启动完成后,从eureka信息面板中可以看到,已经有两个服务了
创建消费者工程
新创建一个工程,取名为consumer-ribbon
maven依赖
maven引入依赖:
1 | <dependency> |
application.yml配置
然后配置application.yml
1 | spring: |
服务注册中心的地址,要和我们eureka-client的地址是一样的,不然是发现不了该服务的.
RestTemplate配置
创建一个配置类Config,加入@Configuration注解
然后创建RestTemplate的Spring实例, 具体如下:
1 | @Configuration |
@LoadBalanced注解,是用来开启客户端负载均衡
Controller创建
创建一个Controller,通过RestTemplate来对eureka-client提供的接口进行调用,具体代码如下:
1 | @RestController |
可以看到,这里的地址是服务名EUREKA-CLIENT,而不是一个具体的地址.
启动类
最后,启动类加入注解@EnableDiscoveryClient
,然后启动应用
在看一下eureka信息面板
可以看到,除了之前的服务提供者(eureka-client)还多了一个EUREKA-CONSUMER的消费者应用.
测试
访问 http://localhost:9000/consumer ,这时候可以打开两个eureka-client的控制台,可以看到,接口被调用的日志是在两个进程交替打印的,可以用来判断消费者对eureka-client的调用是否是负载均衡的