从零开始写一个RPC框架——一切从这里开始

RPC,这个名词在我上学及找工作的的几年前是比较少能谈及到的,我也是工作之后才第一次接触到RPC框架Dubbo(其实也不能这么说,Http也可以算作RPC)。

匆匆几年,不知什么时候RPC这个名词已经是招聘JD里面的常客了?

RPC是什么?

RPC是什么,第一次用Dubbo的时候我也是很懵逼的。

受当时的知识面所局限,我在最开始的接触的Dubbo时一直很不理解为什么我只是用定义的接口调用了一个方法,远端的服务就能接收到我的请求并处理然后响应结果。

后来使用了Debug大法才恍然大悟,原来还能这么玩。

下面引用一段网上经典的描述及图片来对RPC做一个简单的理解。

RPC(Remote Procedure Call Protocol)——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。

RPC调用过程/侵删

RPC事件顺序

  1. 客户端(client function)调用客户端存根(client stub,可以理解为一个代理)。该调用是本地过程调用。
  2. 客户端存根(client stub)将参数打包到消息中,并进行系统调用以发送消息。
  3. 客户端的操作系统将消息从客户端计算机发送到服务器计算机。
  4. 服务器的操作系统将传入的数据包传递到服务器存根(server stub,可以理解为一个代理)。
  5. 服务器存根(server stub)解包消息得到调用参数。
  6. 服务器存根(server stub)调用真实的服务(server function)获得结果并以相同的方式反向返回结果。
阅读更多

Kafka常见面试题及简要解答(上篇)

这段时间京东的技术类书各种满多少减多少,小组老司机说这个月的活动经费不吃饭了,买书吧!

鞥。。。实在是我的书太多了,经典的书基本上都买了,不知道我还能买些什么。。。

不过有句话说的好:书非借不能读也!我的书基本上在吃灰。

不过最后还是买了两本:《Rust编程之道》《深入理解Kafka核心设计与实践原理》。前者暂时不表,之所以买后者呢,是因为一直也没深入学过Kafka,关注过后者的作者的微信公众号,前段时间推了一篇Kafka面试题全套整理 | 划重点要考!,看了里面的题目,感觉一脸懵逼,既然他又写了本书,那就买来看看吧。。。

啰嗦了这么多,开始正题吧,接下来我将会把文章里面所列出的题目都一一简要作答,以供参考。

阅读更多

全新的开始

距离上一次折腾博客差不多有五年了吧。

当时发现原来还有静态博客这么好的东西,连夜搭建环境开搞。

第一篇文章就是将自己在Windows机器上用Octpress搭建静态博客并使用Github Pages部署的过程及所踩过的坑记录了下来,我的第一个域名iblur.me也是在那时候申请的。。。

然后,好像就没有然后了吧。。。

然后,突然发现没什么可值得写的了。。。

阅读更多
Your browser is out-of-date!

Update your browser to view this website correctly.&npsb;Update my browser now

×