Yuque Archive
寻常的路

Spring Cloud服务消费

Ribbon和Feign都可以实现服务消费。上一部分的server用于发现服务,client提供服务。这里的Ribbon或Feign都是使用cllient提供的服务。当client不止一个示例,是一个集群的时候,Ribbon和Feign都内置支持负载均衡。

Ribbon

新建模块ribbon,添加两个依赖Server和Ribbon。

添加一些简单的配置:

ribbon/src/main/resources/Application.yml

给RibbonApplication类加上两个注解@EnableEurekaClient@EnableDiscoveryClient,让服务可以被发现,并且声明是一个服务消费者,同时还要注入一个Bean:

ribbon\src\main\java\net\smallyu\java\ribbon\RibbonApplication.java

将RestTemplate注入到IOC容器。@LoadBalanced注解开启了负载均衡。这里无法体现,可以在8762启动client2实例后,修改配置端口为8763,启动多实例,模拟集群。

新建一个控制器,调用自动装配的RestApplication类,消费8762端口的service-hi服务:

ribbon\src\main\java\net\smallyu\java\ribbon\HelloController.java

程序会自动将服务名SERVICE-HI解析为服务地址。服务名是便于多实例,使用负载均衡的配置。

访问 http://localhost:8764/hi ,页面会打印出在8762端口的服务内容 Hello World。

Feign

新建模块feign,依赖为Server和Feign。配置文件类似:

feign\src\main\resources\Application.yml

FeignApplication的内容不需要多做修改,只要添加三个注解:

feign\src\main\java\net\smallyu\java\feign\FeignApplication.java

使用Feign需要新建一个接口:

feign\src\main\java\net\smallyu\java\feign\SchedualServiceHi.java

@FeignClient的参数为服务名,sayHelloFromClient是个随意的方法名,重在其上的RequestMapping。

使用控制器调用方法:

feign\src\main\java\net\smallyu\java\feign\HiController.java

SchedualServiceHi会在程序运行时自动装配。这里从Feign消费者8765的hi路由调用了service-hi的hi路由。

访问 http://localhost:8765/hi ,依然可以看到Hello World。Feign默认开启负载均衡。

参考: