异步通信
异步通信主要有两种方式:
1.rpc通信 (发生在传输层,优点:转化成二进制传输,传输速度快,缺点:但是对Idea来说传输两边服务的编程语音得一样,都是java)
2.http协议 (发生在应用层,优点:可在两个不同编程语言所写的服务间进行传输 缺点:速度相对慢一些) ,物理层传输速度最快,因为是直接硬件对硬件
(如何实现不同服务间的通信:如何在java代码中发起http请求:spring框架提供HttpClient框架 ---> RestTemplate对象,通过这个RestTemplate对象去调用对应的方法)
eg:
一. 用户服务调用订单服务:
1.用户服务:
@RestController
public class userController {
@GetMapping("user")
public String user(){
String MESG="进入用户服务";
RestTemplate restTemplate = new RestTemplate();
String forObject = restTemplate.getForObject("http://localhost:8087/order", String.class);
return forObject;
}
}
2.订单服务:
@RestController
public class OrderController {
@GetMapping("order")
public String order(){
String order="欢迎进入订单服务!";
return order;
}
}
使用RestTemplate发生http请求缺点:
1.请求的url是写死的,服务集群时无法进行负载均衡
2.服务路径变化时,不利于后旗维护
解决使用RestTemplate的负载均衡问题:
1.可以自己写一个自定义负载均衡策略,但是无法对服务进行安全检查,而且负载均衡策略比较单一
2.使用springcloud提供的Ribbon组件

浙公网安备 33010602011771号