服务调用
restTemplet
ribbon
概述
ribbon 是 Netflixfa 发布的一个负载均衡器,有助于控制 HTTP 和 TCP客户端行为。在 SpringCloud 中, Eureka一般配合Ribbon进行使用,Ribbon提供了客户端负载均衡的功能,Ribbon利用从Eureka中读 取到的服务信息,在调用服务节点提供的服务时,会合理的进行负载。 在SpringCloud中可以将注册中心和Ribbon配合使用,Ribbon自动的从注册中心中获取服务提供者的 列表信息,并基于内置的负载均衡算法,请求服务
主要作用
服务调用和负载均衡
使用
1、添加依赖
Eureka提供了,无需额外添加
2、 工程改造
(1) 服务提供者修改 shop_service_product模块中ProductController#findById() 方法如下
(2) 服务消费者修改服务消费者 shop_service_order模块中的启动类OrderApplication ,在创建RestTemplate方法上添加 @LoadBalanced 注解
在 shop_service_order的OrderController 中添加下单方法,并使用RestTemplate完成服务调用
3 、代码测试
浏览器中请求http://localhost:9001/order/buy/1查看展示效果如下,已经可以在订单微服务中已服务名称的形式调用商品微服务获取数据
负载均衡
默认使用的是轮询算法,其他还有
feign
使用
1、引入依赖
2、启动类添加Feign的支持
3、 启动类激活FeignClient
创建一个Feign接口,此接口是在Feign中调用微服务的核心接口 在服务消费者 shop_service_order 添加一个 ProductFeginClient 接口
定义各参数绑定时,@PathVariable、@RequestParam、@RequestHeader等可以指定参数属 性,在Feign中绑定参数必须通过value属性来指明具体的参数名,不然会抛出异常 @FeignClient:注解通过name指定需要调用的微服务的名称,用于创建Ribbon的负载均衡器。 所以Ribbon会把 shop-service-product 解析为注册中心的服务。
4、配 置请求提供者的调用接口
修改 OrderController ,添加ProductFeginClient的自动注入,并在order方法中使用 ProductFeginClient 完成微服务调用
5、测试