11、节点负载差距这么大,为什么收到的流量还一样?

你好,我是何小锋。上一讲我讲解了“多场景的路由选择”,其核心就是“如何根据不同的场景控制选择合适的目标机器”。今天我们来聊一个新的话题,看看在RPC中如何实现负载均衡。 一个需求在进入主题之前,我想先和你分享一个需求,这是我们公司的业务部门给我们提的...

RPC实战与核心原理

10、让请求按照设定的规则发到不同的节点上

你好,我是何小锋。上一讲我们介绍了健康检测在RPC中的作用,简单来讲就是帮助调用方应用来管理所有服务提供方的连接,并动态维护每个连接的状态,方便服务调用方在每次发起请求的时候都可以拿到一个可用的连接。回顾完上一讲的重点,我们就切入今天的主题——RPC...

RPC实战与核心原理

9、节点都挂了还疯狂发请求

你好,我是何小锋。上一讲我们介绍了超大规模集群“服务发现”的挑战,服务发现的作用就是实时感知集群IP的变化,实现接口跟服务集群节点IP的映射。在超大规模集群实战中,我们更多需要考虑的是保证最终一致性。其实总结来说,就一关键词,你要记住“推拉结合,以拉...

RPC实战与核心原理

8、到底是要CP还是AP?

你好,我是何小锋。在上一讲中,我讲了“怎么设计一个灵活的RPC框架”,总结起来,就是怎么在RPC框架中应用插件,用插件方式构造一个基于微内核的RPC框架,其关键点就是“插件化”。 今天,我要和你聊聊RPC里面的“服务发现”在超大规模集群的场景下所面临...

RPC实战与核心原理

7、设计一个灵活的RPC框架

你好,我是何小锋。到今天为止,基础篇的知识我们就全部学习完了,接下来我们进入进阶篇。 在基础篇里面,我们讲了RPC的通信原理以及RPC里各个功能组件的作用,不妨用一段话再次回顾下:“其实RPC就是把拦截到的方法参数,转成可以在网络中传输的二进制,并保...

RPC实战与核心原理

4、网络通信更倾向于哪种网络IO模型

你好,我是何小锋。在上一讲我讲解了RPC框架中的序列化,通过上一讲,我们知道由于网络传输的数据都是二进制数据,所以我们要传递对象,就必须将对象进行序列化,而RPC框架在序列化的选择上,我们更关注序列化协议的安全性、通用性、兼容性,其次才关注序列化协议...

RPC实战与核心原理

5、面向接口编程,屏蔽RPC处理流程

你好,我是何小锋。上一讲我分享了网络通信,其实要理解起来也很简单,RPC 是用来解决两个应用之间的通信,而网络则是两台机器之间的“桥梁”,只有架好了桥梁,我们才能把请求数据从一端传输另外一端。其实关于网络通信,你只要记住一个关键字就行了——可靠的传输...

RPC实战与核心原理

6、动手实现一个完整的RPC

你好,我是何小锋。上一讲我分享了动态代理,其作用总结起来就是一句话:“我们可以通过动态代理技术,屏蔽 RPC 调用的细节,从而让使用者能够面向接口编程。” 到今天为止,我们已经把 RPC 通信过程中要用到的所有基础知识都讲了一遍,但这些内容多属于理论...

RPC实战与核心原理

2、设计可扩展且向后兼容的协议

你好,我是何小锋。上一讲我分享了RPC原理,其核心是让我们像调用本地一样调用远程,帮助我们的应用层屏蔽远程调用的复杂性,使得我们可以更加方便地构建分布式系统。总结起来,其实就一个关键字:透明化。 接着上一讲的内容,我们再来聊聊RPC协议。 一提到协议...

RPC实战与核心原理

3、对象怎么在网络中传输

你好,我是何小锋。上一讲我讲解了在RPC框架中,如何设计可扩展的、向后兼容的协议,其关键点就是利用好Header中的扩展字段以及Payload中的扩展字段,通过扩展字段向后兼容。 那么承接上一讲的一个重点,今天我会讲解下RPC框架中的序列化。要知道,...

RPC实战与核心原理