RPC发展脉络整理

深入浅出RPC:选取适合自己的RPC 文章摘要:本文主要介绍远程调用(rpc的概念、背景、作用,以及分析主流rpc的优劣,选取适合自己的rpc协议) 阅读详情
最近看了些rpc相关的背景知识,为了响应coolshell 对技术的态度一文,试图将知识点串起来,推导出发展脉络。

涉及的关键字有:
  • rpc
  • xml-rpc/soap -> web service -> SOA -> 分布式服务的实现
  • 标记语言之间的衍生关系:sgml/html/xml
  • xml的配套设施:xsd/xpath/xslt
  • json-rpc
  • 轻量的rpc架构风格:rest/restful api

综上,大致的脉络如下:

远程过程调用(rpc)是个古老的议题(自70年代),目的是为了解决程序远程交互的问题(如调用数据库的存储过程?)。由于是远程交互,不可控的因素增多了(像分布式事务之类的就没有单机事务处理起来容易,另外还要考虑异构系统间通信、如何跨平台等),导致rpc的完备实现具有较高门槛。

rpc根据序列化的载体不同出现了两个方向,且各自优缺点也很明显。
  • 纯文本序列化载体(跨平台、人机可读性等)
  • 二进制序列化载体(时空两个维度的高效等)
微软和IBM为什么要推xml和web service?(接下来是我的yy…)

最早用得起大型机、数据库的都是银行、电信这样的大亨(大多IBM的客户),所以IBM在这方面肯定有些积累;后来微软也开始给有钱的中小企业做信息化解决方案(所以才会有跑在pc 和windows上的sql server)。随着信息化的普及,大中小企业之间会有业务往来,需要打通各自的系统,于是面临异构系统交互的问题。一方面这决定了只能以纯文本作为序列化载体,另一方面,反正都是给这些有钱的主服务,微软和IBM一拍即合,开始推xml和以xml为主要载体的web service以承载企业间rpc。(注意到xml是IBM自60年代开始研发的GML标准化后的简化版,它和html是同源的,在简化的过程中还借鉴了html的发展经验。)由于IBM的服务的是银行这样数据量大且精度要求很高的对象,其rpc实现方案必然完备,且不可避免的重量级;好处是xml还有许多完善的配套设施:如用于查询的xpath;用于规范和验证的xsd;用于转换格式的xslt等等。

xml成为w3c标准是98年的事,也正好是google发迹的年代。此后google实现了用海量pc取代小型机提供服务的思路,互联网业界纷纷效仿。再后来,pc集群越堆越大,其粒度也切细到了提供某项服务(如memcached集群,专门提供缓存服务),以适应分工细化、各自伸缩的需求。越来越多这样的服务催生了SOA,随着服务化的推进,一方面开发人员希望能由rpc框架封装掉交互的细节,使得代码看起来就像本地调用一样简单;另一方面,互联网企业内部可以统一接口,采用二进制作为序列化载体显然更划算,因此hession等有了市场。

近几年,由于sns化和open平台交互的需要,各大网站纷纷推出自己的open api。ajax已经普及,大家自然想到了用json作为载体,在浏览器这头好歹比用xml要和谐得多。另外,互联网业务不同于传统金融电信业务,在业界大佬亚马逊等的示范下,简单、直观、轻量且能自然契合http的restful api受到追捧,于是形成了现在的局面……



避坑指南:雅特力AT32F403A在Keil5中的V2库配置常见问题解析 本文详细解析了国产MCU雅特力AT32F403A在Keil5中配置V2库的常见问题,包括工程创建、库文件配置、编译错误和外设设置等关键环节。针对项目文件夹结构混乱、芯片型号选择错误、头文件路径设置不当等典型问题提供实用解决方案,帮助开发者高效避坑,提升开发效率。 阅读详情

相关推荐

【题解-洛谷】B3644 【模板】拓扑排序 / 家谱树

有个人的家族很大,辈分关系很混乱,请你帮整理一下这种关系。给出每个人的后代的信息。输出一个序列,使得每个人的后辈都比那个人后列出。输出一个序列,使得每个人的后辈都比那个人后列出。如果有多种不同的序列,输出任意一种即可。),表示家族的人数。

写代码的犄角旮瘩 1065

谈谈RPC的演进史

如果一台电脑需要用到的所有功能都在本台PC上实现,那是最方便的事情了,但除非这是台超级计算机,否则就难以容纳所有的功能。因而我们就有了这样一种需求——调用在其他电脑上实现的功能。 因为我们通常关注的是结果,至于过程在哪个地方执行其实并不关心,因而就可以把我们的需求交给别的服务器并查看返回的结果就行了。就像我们下达了发射导弹的命令,千里之外的舰艇执行命令并将结果汇报给我们就行...

简易开头 快速迭代 659

如何用DETR(detection transformer)训练自己的数据集

DETR(detection transformer)简介 DETR是Facebook AI的研究者提出的Transformer的视觉版本,是CNN和transformer的融合,实现了端到端的预测,主要用于目标检测和全景分割。 DETR的Github地址:link

weixin_50233398的博客 3万+

RPC

RPC(远程过程调用)是什么 简单的说,RPC就是从一台机器(客户端)上通过参数传递的方式调用另一台机器(服务器)上的一个函数或方法(可以统称为服务)并得到返回的结果。RPC 会隐藏底层的通讯细节(不需要直接处理Socket通讯或Http通讯)RPC 是一个请求响应模型。客户端发起请求,服务器返回响应(类似于Http的工作方式)RPC 在使用形式上像调用本地函数(或方法)一样去调用远程的函数

oceannut的专栏 655

[cadence]Allegro STEP-3D模型导入、匹配、导出的方法及注意事项

如果 Avaliable里面没有和symbols对应的文件,说明没有对应的3D模型,这时候需要在你的step路径下创建y与 .dra 封装文件相同名称的。选择好 Output file 和 name 之后呢,点击 Export。首先打开Setup - Step Package Mapping。注意:路径中不能有中文名称,有的话你会发现不能导出,也不会报错。在路径下将下载或者自己做的 3D模型文件改名之后,重新打开。可在View -> 3D View。

LuDvei的博客 2万+

深入解析XTEA加密算法的核心机制与优化策略

本文深入解析XTEA加密算法的核心机制与优化策略,详细介绍了XTEA在嵌入式系统和资源受限环境中的优势,包括其高效的加解密速度和低资源消耗。文章还探讨了XTEA的轮函数设计、关键参数优化策略以及实战应用中的性能对比,为开发者提供了安全增强方案和优化技巧。

k8l9m0n的博客 242

RPC 发展史

“Does developer convenience really trump correctness, scalability, performance, separation of ...

goodspeeed的专栏 1430

别再让OCV拖慢你的芯片!手把手教你用set_timing_derate优化STA时序(附CPPR实战)

本文深入探讨了芯片设计中OCV(On-Chip Variation)对时序分析的影响,并提供了使用`set_timing_derate`优化STA时序的实战指南。通过分阶段derate设置和CPPR技术,有效减少时序违例,提升芯片性能。文章结合TSMC 7nm工艺案例,详细解析了OCV建模与优化策略,助力工程师实现时序收敛。

weixin_42525005的博客 304

远程过程调用(RPC)的概念与历史发展

1.背景介绍 1. 背景介绍 远程过程调用(Remote Procedure Call,简称RPC)是一种在分布式系统中,允许程序在不同计算机上运行的多个进程之间,以网络通信的方式进行通信和协作的技术。它使得程序可以像本地调用一样,调用远程计算机上的程序,从而实现跨计算机的协同处理。 RPC技术的核心思想是将复杂的网络通信抽象成简单的函数调用,使得程序员可以更方便地编写并发和分布式程序。它的...

AI天才研究院 1253

在 SAP ABAP 里可靠地对接 FTP 服务器:从连接、命令到传输与排错的完整实战

本文详细介绍了在SAP ABAP中实现FTP文件交换的完整技术方案。文章首先解析了FTP协议的双连接特性(控制连接与数据连接),强调保持控制连接的重要性。随后详细说明了ABAP中FTP操作的四步标准流程:建立连接(包含HTTP_SCRAMBLE加密)、执行命令、断开连接和关闭RFC通道。文章提供了实战案例代码,演示如何将FTP文件复制到应用服务器再读取进内表处理,特别指出后台作业与前台操作的关键差异。最后总结了常见错误排查要点,包括连接模型、路径设置和资源释放等问题。全文通过SAP标准函数模块的调用顺序、典

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 308

[Godot][入门] 安装与版本选择:3.x 还是 4.x?(按项目类型一键决策)

摘要: Godot引擎版本选择需根据项目需求权衡3.x与4.x。Godot4.x(如4.2)适合3D开发和新项目,支持Vulkan和GDScript2.0,但生态尚不成熟;Godot3.x(如3.5.3)则更适合稳定2D开发、Web导出及依赖现有插件/教程的场景。安装方式极简,官网下载解压即可运行。新手建议:短期高效选3.x,长期探索选4.x,旧项目勿盲目迁移。附版本对比表及决策树,助开发者快速匹配需求。

技术小甜甜:传播可落地技术,帮助个人和企业降低解决真实场景问题的成本 910

清华架构师整理分布式系统文档:从实现原理到系统实现,收藏吧

微服务、云原生、Kubernetes、Service Mesh是分布式领域的热点技术,它们并不是凭空出现的,一定继承了某些“前辈”的优点。我们不仅要了解这些技术,还要深入理解其发展脉络、原理等,才能游刃有余地将其用于现有的项目开发或老系统改造中。 而这些技术有一个共同的特点,就是全网都在大谈分布式,其实主要就是因为数据量的爆发增长,我们的网站等应用承担了他本不应该承受的压力,这个时候,中国古人的训诫就起了很大的作用:众人拾柴火焰高,团结就是力量,所以,将压力分散到多个不同的点上就可以解决这个问题,分布式由

Java架构师联盟 1231

Linux内核驱动模型--PCIe(PCI Express)驱动​​

本文系统介绍了Linux内核中PCIe驱动的设计与实现。首先从架构定位入手,指出PCIe驱动基于PCI子系统扩展支持高速、低功耗特性。核心数据结构struct pci_driver包含设备匹配表id_table、生命周期函数probe/remove等关键组件。文章详细解析了驱动与设备的绑定流程、资源管理机制,并重点阐述了MSI-X中断、电源管理、热插拔和多队列等高级特性实现方案。最后提供了lspci、dmesg等调试工具的使用方法,总结了PCIe驱动在支持高性能设备中的关键作用。全文通过架构设计、核心结构、

amy_mhd的博客 428

[源码解析] PyTorch 分布式(1)------历史和概述

本文主要在对PyTorch官方文档的翻译之上加入了自己的理解,希望给大家一个PyTorch分布式的历史脉络和基本概念,有兴趣的朋友可以仔细研究一下历史,看看一个机器学习系统如何一步一步进入分布式世界 / 完善其功能。

罗西的思考 1131

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

从分布式到微服务再到云原生,从架构师的角度带你独当一面!

互联网大厂比较喜欢的人才特点:对技术有热情,强硬的技术基础实力;主动,善于团队协作,善于总结思考。无论是哪家公司,都很重视高并发高可用技术,重视基础,所以千万别小看任何知识。面试是一个双向选择的过程,不要抱着畏惧的心态去面试,不利于自己的发挥。同时看中的应该不止薪资,还要看你是不是真的喜欢这家公司,是不是能真的得到锻炼。其实我写了这么多,只是我自己的总结,并不一定适用于所有人,相信经过一些面试,大家都会有这些感触。下面有部分截图希望能对大家有所帮助。是不是能真的得到锻炼。

2401_83977689的博客 143

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

美团Java面试,mysql创建存储过程语法

一面 1 自我介绍和项目 2 Java的内存分区 3 Java对象的回收方式,回收算法。 4 CMS和G1了解么,CMS解决什么问题,说一下回收的过程。 5 CMS回收停顿了几次,为什么要停顿两次。 6 Java栈什么时候会发生内存溢出,Java堆呢,说一种场景,我说集合类持有对象。 7 那集合类如何解决这个问题呢,我说用软引用和弱引用,那你讲一下这两个引用的区别吧。 8 Java里的锁了解哪些,说了Lock和synchronized 9 它们的使用方式和实现原理有什么区别呢? 10 synchroniz.

m0_56144365的博客 153

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

android和ios的uuid区别与联系

今天关于面试的分享就到这里,还是那句话,有些东西你不仅要懂,而且要能够很好地表达出来,能够让面试官认可你的理解,例如Handler机制,这个是面试必问之题。有些晦涩的点,或许它只活在面试当中,实际工作当中你压根不会用到它,但是你要知道它是什么东西。最后在这里小编分享一份自己收录整理上述技术体系图相关的几十套腾讯、头条、阿里、美团等公司2021年的面试题,把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,这里以图片的形式给大家展示一部分。还有。

Y1567409的博客 693

核爆!架构师社区爆火的分布式微服务神仙笔记究竟有什么魅力?

微服务、云原生、Kubemnetes. Service Mesh是分布式领域的热点技术,它们并不是凭空出现的,一定继承了某些“前辈”的优点。我们不仅要了解这些技术,还要深入理解其发展脉络、原理等,才能游刃有余地将其用于现有的项目开发或老系统改造中。自从几十年前第一次引入分布式系统这个概念以来,出现了很多原来根本想象不到的分布式系统使用案例,但同时也引入了各种各样的新问题。

m0_73311735的博客 96

阿里P8现身说法,解密“架构”原理与实战笔记:从分布式到微服务

微服务、云原生、Kubernetes、Service Mesh是分布式领域的热点技术,它们并不是凭空出现的,一定继承了某些“前辈”的优点。第1章讲解分布式的基础:网络,对国际互联网、NIO、AIO、网络传输中的对象序列化问题、HTTP的前世今生、TCP/IP、从CDN到到SD-WAN等知识进行深入讲解。第8章讲解以Kubernetes为代表的微服务架构解决了传统架构的哪些痛点;第2章讲解分布式系统的经典理论,涉及分布式系统的设计理念、致性原理: ZooKeeper的使用场景:CAP理论的前世今生;

m0_73311735的博客 80

2021Java岗面试题知识点小结,送大厂面经一份!

开篇介绍 个人背景: 不说太多废话,但起码要让你先对我有一个基本的了解。本人毕业于浙江某二本院校,算是科班出身,毕业后就进了一家外包公司做开发,当然不是阿里的外包,具体什么公司就不透露了,在外包一呆就呆了整整2年多,直到现在才从外包离开,如今拿到阿里的offer准备入职了。 阐述原因: 在外包公司的两年里,作为一名菜鸡,确实非常合格,技术没什么长进,眼见也没有提升,没规划没未来,让人实在焦虑,之所以开始改变自己也是家庭发生了变故,才让自己开始思考人生。身边很多人感叹过,能从外包逆袭,算是传奇,所以今天想要分

m0_56530263的博客 94

如何用Obsidian Zotero插件实现学术知识管理的思维升级?

想象一下这样的场景:你正在Obsidian中撰写一篇学术论文,需要引用昨天在Zotero中标记的10篇文献,同时还要导入PDF中的关键注释。传统的工作流需要你不断在Obsidian和Zotero之间切换、复制粘贴、格式化引用——整个过程繁琐而低效。这正是Obsidian Zotero集成插件要解决的**思维模式转变**:从工具分离到知识融合的学术写作革命。 ## 架构解析:连接两个知识世界的桥梁

gitblog_00470的博客 768
上一篇: 浅析闭包在缓存逻辑中的一次应用
下一篇: 无锁队列的实现 小结
doraeimo
博客等级 码龄20年 11粉丝 26原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值