开篇词|别老想着怎么用好RPC框架,你得多花时间琢磨原理为什么要学习RPC?RPC是解决分布式系统通信问题的一大利器。RPC对网络通信的整个过程做了完整包装,在搭建分布式系统时,它会使网络通信逻辑的开发变得更加简单,同时也会让网络通信变得更加安全可靠。如何学习RPC?学习是一个通过不断解决问题来提升能力的过程,学习RPC可以采取“逐步深入”的方法:摆脱现有封装好的框架,了解RPC基本原理以及关键的网络通信过程。了解RPC框架中的治理功能以及集群管理功能。对RPC活学活用,学习如何提升RPC性能以及在分布式环境下如何定位解决问题。01|核心原理:能否画张图解释下RPC的通信流程这一讲的标题就是一
大家好,我是不才陈某~RPC、gRPC、Thrift、HTTP,大家知道它们之间的联系和区别么?这些都是面试常考的问题,今天带大家先搞懂RPC和gRPC。在讲述gRPC之前,我们需要先搞懂什么是RPC。不BB,直接上文章目录:什么是RPC?RPC(RemoteProcedureCallProtocol)远程过程调用协议,目标就是让远程服务调用更加简单、透明。RPC框架负责屏蔽底层的传输方式(TCP或者UDP)、序列化方式(XML/Json/二进制)和通信细节,服务调用者可以像调用本地接口一样调用远程的服务提供者,而不需要关心底层通信细节和调用过程。为什么要用RPC?当我们的业务越来越多、应用也
大家好,我是不才陈某~RPC、gRPC、Thrift、HTTP,大家知道它们之间的联系和区别么?这些都是面试常考的问题,今天带大家先搞懂RPC和gRPC。在讲述gRPC之前,我们需要先搞懂什么是RPC。不BB,直接上文章目录:什么是RPC?RPC(RemoteProcedureCallProtocol)远程过程调用协议,目标就是让远程服务调用更加简单、透明。RPC框架负责屏蔽底层的传输方式(TCP或者UDP)、序列化方式(XML/Json/二进制)和通信细节,服务调用者可以像调用本地接口一样调用远程的服务提供者,而不需要关心底层通信细节和调用过程。为什么要用RPC?当我们的业务越来越多、应用也
04|网络通信:RPC框架在网络通信上更倾向于哪种网络IO模型?网络通信在RPC调用中有什么作用?RPC是解决进程间通信的一种方式,一次RPC调用,本质就是服务消费者与服务提供者之间的一次网络信息交换的过程。服务调用者通过网络IO发送一条请求消息,服务提供者接收并解析,处理完相关的业务逻辑之后,再发送一条响应消息给服务调用者,服务调用者接收并解析响应消息,处理完相关的响应逻辑,一次RPC调用便结束了。我们可以说,网络通信是整个RPC调用流程的基础。有哪些常见的网络IO模型?常见的网络IO模型分为四种:同步阻塞IO(BIO)、同步非阻塞IO(NIO)、IO多路复用和异步非阻塞IO(AIO)。其中
04|网络通信:RPC框架在网络通信上更倾向于哪种网络IO模型?网络通信在RPC调用中有什么作用?RPC是解决进程间通信的一种方式,一次RPC调用,本质就是服务消费者与服务提供者之间的一次网络信息交换的过程。服务调用者通过网络IO发送一条请求消息,服务提供者接收并解析,处理完相关的业务逻辑之后,再发送一条响应消息给服务调用者,服务调用者接收并解析响应消息,处理完相关的响应逻辑,一次RPC调用便结束了。我们可以说,网络通信是整个RPC调用流程的基础。有哪些常见的网络IO模型?常见的网络IO模型分为四种:同步阻塞IO(BIO)、同步非阻塞IO(NIO)、IO多路复用和异步非阻塞IO(AIO)。其中
07|架构设计:设计一个灵活的RPC框架RPC就是把拦截到的方法参数,转成可以在网络中传输的二进制,并保证在服务提供方能正确地还原出语义,最终实现像调用本地一样地调用远程的目的。RPC的本质是一个远程调用,需要通过网络来传输数据,我们一般采用TCP协议作为数据通信协议,为了屏蔽网络传输的复杂性,我们需要封装一个独立的数据传输模块来收发二进制数据,这个模块被称为传输模块。我们在调用方法时,方法的出入参数都是对象数据,我们需要将对象转换成二进制,即进行序列化操作,同时,我们还需要在方法调用参数的二进制数据后面增加“断句”符号来分隔出不同的请求,这个过程被称为协议封装。传输模块和协议封装都是为了保证
07|架构设计:设计一个灵活的RPC框架RPC就是把拦截到的方法参数,转成可以在网络中传输的二进制,并保证在服务提供方能正确地还原出语义,最终实现像调用本地一样地调用远程的目的。RPC的本质是一个远程调用,需要通过网络来传输数据,我们一般采用TCP协议作为数据通信协议,为了屏蔽网络传输的复杂性,我们需要封装一个独立的数据传输模块来收发二进制数据,这个模块被称为传输模块。我们在调用方法时,方法的出入参数都是对象数据,我们需要将对象转换成二进制,即进行序列化操作,同时,我们还需要在方法调用参数的二进制数据后面增加“断句”符号来分隔出不同的请求,这个过程被称为协议封装。传输模块和协议封装都是为了保证
08|服务发现:到底是要CP还是AP?我们为什么需要“服务发现”?从高可用的角度出发,在生产环境中,服务提供方通常会以集群的方式对外提供服务,集群中的IP地址随时可能发生变化,因此我们需要一本“通讯录”来及时获取对应的服务节点信息,维护“通讯录”以及或者节点信息的过程,我们称之为“服务发现”。服务发现包括2个核心模块:服务注册:在服务提供方启动的时候,将对外暴露的接口注册到注册中心中,注册中心将这个服务节点的IP和接口保存下来。服务订阅:在服务调用方启动的时候,去注册中心查找并订阅服务提供方的IP,然后缓存到本地,并用于后续远程调用。我们为什么不采用基于DNS的服务发现机制?我们来看一下DNS
08|服务发现:到底是要CP还是AP?我们为什么需要“服务发现”?从高可用的角度出发,在生产环境中,服务提供方通常会以集群的方式对外提供服务,集群中的IP地址随时可能发生变化,因此我们需要一本“通讯录”来及时获取对应的服务节点信息,维护“通讯录”以及或者节点信息的过程,我们称之为“服务发现”。服务发现包括2个核心模块:服务注册:在服务提供方启动的时候,将对外暴露的接口注册到注册中心中,注册中心将这个服务节点的IP和接口保存下来。服务订阅:在服务调用方启动的时候,去注册中心查找并订阅服务提供方的IP,然后缓存到本地,并用于后续远程调用。我们为什么不采用基于DNS的服务发现机制?我们来看一下DNS
“Http协议和RPC协议有什么区别?”最近很多人问我这个问题,他们都不知道怎么回答。今天我们就来了解一下这个问题的高手回答。另外,我把文字版本的内容整理到了一个15W字的面试文档里了。大家可以看文章尾端领取。下面看看高手的回答高手:这个问题我想从三个层面来回答。从功能特性来说。http是一个属于应用层的超文本传输协议,是万维网数据通信的基础,主要服务在网页端和服务端的数据传输上。RPC是一个远程过程调用协议,它的定位是实现不同计算机应用之间的数据通信,屏蔽通信底层的复杂性,让开发者就像调用本地服务一样完成远程服务的调用。因此,这两个协议在定位层面就完全不同。其次,从实现原理来说。http协议