15_为什么微服务化的系统必须通过RPC框架进行通信?

为什么微服务化的系统必须通过RPC框架进行通信?

服务注册中心

服务注册中心这个东西初步的捋顺了,你微服务架构里每个服务在任何一台机器上部署,都必须往服务注册中心去做一个注册,服务注册中心就可以维护你的每个服务部署的实例地址列表

【服务要保持一个心跳,任何一个下线或者宕机了,服务注册中心可以及时地感知到】

HTTP和RPC

HTTP、RPC

假设如果你没有RPC的框架,此时假如说你的每个服务对外暴露的接口,都是一些HTTP接口,http://21.38.254.306:8080/xx/xx?xx=xx,其他服务如果说要调用你的这个服务,就必须使用apache的http的组件,或者是JDK自带的http组件,构建出来一个HTTP请求,包括请求路径,请求头,请求体(JSON串过去)

好不容易构建出来一个完整的HTTP请求,通过http组件发送这个HTTP请求过去,在底层也是得跟那个服务的指定机器的指定端口号,也都是建立TCP连接,在TCP连接之上,发送HTTP协议组装出来的请求过去

接收人家给你的HTTP响应,解析HTTP响应,响应头,状态码(404,500),响应体(JSON串),极为麻烦

划时代的RPC这种东西,比如说你发布一个服务,主要就是定义了一些接口

【服务方】

public interface ServcieA {

	public String hello(String name);

}

如果我要调用你的接口,此时我在代码里,不需要care什么HTTP之类的东西

调用方

// 业务逻辑
public void service() {
	String result = serviceA.hello(“zhagnsan”);
}

【服务的提供方定义一些接口,由调用方进行直接调用,RPC框架会感知到调用,向提供方发送请求,拿回结果后再返还给调用方。相当于自动进行了请求的构建和响应的解析,不需要程序员手动去写,虽然是通过不同的服务进行通信,但是感觉上和调用本地的代码时一样的】

posted @ 2021-03-01 10:15  Aokigahara  阅读(340)  评论(0编辑  收藏  举报