课程名称:SpringCloud Finchley三版本微服务实战
课程章节:
第5章 应用通信
主讲老师:廖师兄
课程内容:
HTTP、RPC,服务之间的负载均衡调用
课程收获:
1、SpringCloud中服务间的两种restful调用方式:
(1).RestTemplate
(2).Feign
2、SpringCLoud服务中的三种通信方式
1、RestTemplate
RestTemplate是Spring提供的用于访问Rest服务的客户端,RestTemplate提供了多种便捷访问远程Http服务的方法,能够大大提高客户端的编写效率。
restTemplate.getForObject(要访问的URL, 用于接受结果的类型.class, 入参)
入参可以使用Map的形式,也可以以可变参数的形式,
定义:
可变参数:
String result = template.getForObject( "url/{count}/{page}", String.class, "5", "1");
//restTemplate会对参数进行URI编码
第一种方式(直接使用RestTemplate,url写死)
RestTemplate restTemplate = new RestTemplate (); String response = restTemplate.getForObject("http://localhost:8080/msg", String.class );
url写死的,只能写一个地址
第二种方式(利用LoadBalanceClient获取url,再使用RestTemplate)
@Autowired private LoadBalanceClient loadBalanceClient ; ServiceInstance serviceInstance = loadBalanceClient .choose("PRODUCT"); String url = String.format("http://%s:%s",serviceInstance.getHost(), serviceInstance.getPort() + "/msg"); String response = restTemplate.getForObject(url , String.class);
写法麻烦
第三种方式(利用@LoadBalanced可在restTemplate里使用应用名字)
@Component public class RestTemplateConfig { @Bean @LoadBalanced public RestTemplate restTemplate() { return new RestTemplate(); } } @Autowired private RestTemplate restTemplate; String response = restTemplate.getForObject("http://PRODUCT/msg", String.class);
3、Ribbon实现软负载均衡核心:
(1)、服务发现:发现依赖服务的列表(依据服务的名字,把所有实例都找出来)
(2)、服务选择规则:依据规则策略如何从多个服务中选择一个有效的服务
(3)、服务监听: 检测失效的服务,做到高效剔除
4、订单查询商品服务
注意要点:
(1)、使用@requestbody注解以后必须使用post提交
(2)、@PathVariable注解对应着get请求
共同学习,写下你的评论
评论加载中...
作者其他优质文章