0、开篇词

你好,我是何小锋。欢迎你和我一起学习RPC。 在专栏开始之前,我先简单介绍下自己。我是1998年从北航毕业的,毕业以后我就一直在一线编程写代码。2011年,我正式加入京东,刚好赶上了京东的快速发展期,一路做到了现在的技术架构部首席架构师。盘点下在京东...

RPC实战与核心原理

1、画张图解释下RPC的通信流程

你好,我是何小锋。只要你做过几年开发,那我相信RPC这个词你肯定是不陌生了。写专栏之前,我还特意查了下RPC的百度指数,发现这些年RPC的搜索趋势都是稳步上升的,这也侧面说明了这项技术正在逐步渗透到我们的日常开发中。作为专栏的第一讲,我想只围绕“RP...

RPC实战与核心原理

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

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

RPC实战与核心原理

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

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

RPC实战与核心原理

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

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

RPC实战与核心原理

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

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

RPC实战与核心原理

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

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

RPC实战与核心原理

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

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

RPC实战与核心原理

8、到底是要CP还是AP?

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

RPC实战与核心原理

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

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

RPC实战与核心原理