RPC理解总结

RPC是把远程过程调用伪装成本地方法,抽象隔离具体实现和协议。

这种模式的优点是屏蔽了底层协议的消息编解码,调用双方的消息及上下文的维护委托给RPC框架,进而调用双方都可以面向类似本地函数调用的高阶接口编程。设计的技术点有:

1)客户端函数接口生成和拦截解释:(应用层)

从java角度看就是接口代理对象的生成,在不支持反射的语言里可以通过编译器技术来实现(C++仿函绑定rpc调用框架的方法实现)或者通过IDL来生成代码的方式来绕过。

2)会话管理(会话层)

通信序列化的协商,调用消息上下文及生命周期的维护。兼顾过程调用的本地存根维护。

3)追踪、路由、降级等治理方面

朴素的rpc模型中不包含该层,SOA的本质是度量,改进式反馈再度量的闭环。

4)网络通信传输客户端 (传输层)

传输层对上层透明,传输层‘连接’管理,传输层缓冲区管理。

5)编解码器(传输会话结合层)

适配应用层的协议头,以便支持多种不同层面的传输协议,比如dubbo协议是基于tcp的还有基于http还有其他协议。

6)序列化(表示层)

序列的本质:使得数据完全使用字节表示,数据间的关系表示脱离对内存地址的依赖,同时去除数据业务逻辑层面无关的运行时附加信息。这层的作用是多种编解码器的动态切换,缓冲的集约使用。

小结

客户端出栈方向不是按网络七层顺序组织的,对换了传输层和表示层,中间还插入了编解码层,使得管理传输方式和多种传输层和序列化协议适配提供便捷有效的沟通方式。这种传输层上浮,编解码和序列化作为委托的结构,对于管理传输的连续性有很大的好处。传统七层模型的缺点是表示层是面向网络字节的,丢失很多上下文信息,层与层间的隔离阻断了信息传递,使得消息在到达传输层前就要提前编码,为了保持这种隔离也增加复制的开销,同时对于通信异常的传播也是不利的。

服务端

入栈方向 (传输层监听服务作为容器,管理了编解码器和序列化器,上层是会话管理,再上层是服务调用骨架,主要的技术点有:网络io模型与线程模型,服务端对象生命周期管理,异步处理及线程调度,以及自动注册动态调用的简单技巧)

1)传输层

通过委托的解码器和和反序列化器得到应用层可处理的内存消息,这个解码的过程通常还受到网络编程的线程模型的影响,使其处在不同的线程中运行。

2)会话管理层

会话维护,身份鉴权。

  1. 服务骨架

动态调用是个基础,java用反射实现比较简单。交互对象存根维护,调用执行线程调度管理。

RPC的几个关键

  • 代码分层要合理特别是层次顺,依赖关系。
  • 动态代理技术 (客户端存根,服务端注册与处理请求时的动态调用)
  • 网络编程技术
    io模型与零拷贝
    连接管理与C10M
    时间轮盘定时器
    缓冲区管理与内存池伙伴分配与引用计数
    线程模型(reactor、proactor、leader-follower、half-sync half-async)
  • 多线程与异步技术
    调度策略与异步上下文管理、协程等
  • 序列化技术
    兼容性、编解码性能、网络消耗、可读性
  • 应用层协议头设计
    兼容性、伸缩性、隔离性、完备性、效率
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,607评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,047评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,496评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,405评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,400评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,479评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,883评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,535评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,743评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,544评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,612评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,309评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,881评论 3 306
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,891评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,136评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,783评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,316评论 2 342

推荐阅读更多精彩内容