很少在技术论坛写东西,可能是level不够写出东西怕误导大家吧,所以一般我都习惯于用印象笔记。最近在学习GRPC,发现网上资料好少,甚至连官方的demo都很难跑起来,所以我觉得暂且装一次逼吧,写点东西给大家分享一下,欢迎踊跃拍砖。
首先,什么是RPC?为什么要用RPC?RPC和HTTP接口有什么分别?
1、RPC即远程过程调用协议;(这里不解释概念了,感兴趣的同学可以去找度娘)
2、在传输效率和安全性要求比较高的时候,RPC无疑是目前的首选,比如阿里庞大的各业务子系统,海量的并发请求,用HTTP很难达到逾期。
3、RPC照比HTTP接口肯定复杂的多,并且有一定的学习门槛,但是对于解决一些性能瓶颈,总有一天你是需要它的,因为HTTP接口受限于HTTP协议。RPC跨越了传输层和应用层(OSI),使得开发包括网络分布式多程序在内的应用程序更加容易。
好了,简单描述了下RPC的相关背景,先有个宏观的概念,如果你还是觉得模糊。好吧,那我就简单粗暴的告诉你我的理解:假如有两台服务器A和B,服务器A想要调用B服务器上提供的函数或者方法,由于不在一个内存空间,不能直接调用,需要通过网络来表达调用的语义和传达调用的数据,这就远程过程调用PRC。
常用的RPC框架:
PRC框架太多了,比如 java RMI、WebService、PhpRpc、Hessian、JSON-RPC、ZeroC Ice、Thrift、GRPC、Hprose、Dubbo...
这里挑当前几个主流的比较下:Thrift(facebook开源)、GRPC(谷歌)、Dubbo、Hprose,首先我们在选择用RPC框架时应该有一个标准:
1、简单易用、效率较高,功能强大;
2、支持传输方式丰富(如 HTTP、TCP、Websocket);
3、具有良好的可扩展性,可以通过过滤器和中间件实现加密、压缩、缓存、代理等各种功能性扩展;
4、兼容的无差别跨语言调用支持更多的常用语言和平台;
git上看到的一个测试,不间断运行10,000次远程RPC调用后的结果如下:
GRPC
目前还不完善,通讯是基于Netty,跨语言序列化、反序列化是基于protobuf,协议是基于http2.0设计的,未来是一个趋势。
Hprose
当写这篇文章时,深深被Hprose吸引了,未完待续.....
相关推荐
三、手写RPC源码学习 在手写RPC的过程中,我们需要关注以下几个关键步骤: 1. **接口定义**:定义客户端和服务端共享的接口,这通常是通过idl(Interface Definition Language)完成。 2. **序列化/反序列化实现*...
4. **简单RPC实现**:在学习简单的RPC应用时,我们可能会从零开始构建一个小型的框架,这包括定义服务接口、实现服务提供者、创建服务消费者以及搭建网络通信机制(如基于Socket或HTTP)。 5. **服务接口**:RPC的...
本专题主要通过三个章节实现一个rpc通信的基础功能,来学习RPC服务中间件是如何开发和使用。章节内以源码加说明实战方式来讲解,请尽可能下载源码学习。 - 手写RPC框架第一章《自定义配置xml》 - 手写RPC框架第二章...
学习RPC源码时,理解如何与数据库交互是重要的一步,特别是当涉及到服务治理时。 文件“mongo.jpg”、“mongo.mdj”和“mongo.png”可能是关于MongoDB与RPC框架集成的流程图或示意图,可以帮助我们直观地理解数据...
学习RPC,你需要掌握网络编程基础,如TCP/IP协议、HTTP协议,以及数据序列化技术。同时,了解各种RPC框架的工作原理、优缺点和使用场景,能帮助你在实际项目中选择合适的解决方案。对于Java开发者来说,深入理解RMI...
总的来说,这个压缩包提供了一个实践和学习RPC的平台,涵盖了理论知识和实际代码,对于想要深入理解分布式系统和网络编程的人来说非常有价值。通过阅读和实践其中的内容,可以提升对远程调用的理解,为开发分布式...
总结起来,这个“RPC.ex.rar_RPC Winsock_ex_rpc”资源提供了学习RPC和C++网络编程的实例,通过它,你可以深入了解RPC的工作原理,掌握如何在C++中构建RPC系统,并且熟悉Winsock库的使用,对于提升分布式系统开发...
RPC插件,全称为Remote Procedure Call(远程过程调用),是一种网络通信协议,允许一台计算机上的程序调用另一台...同时,了解和学习RPC的基本原理和技术,对于深入理解插件的工作机制和优化使用方式也十分必要。
通过深入学习RPC Sun Network,你可以掌握构建分布式系统的关键技术,理解网络通信的基础,以及如何在C语言环境中实现这些通信。这将有助于你设计和实现高效、可靠的跨平台应用。在实际项目中,你可能会结合其他技术...
在这个实例中,我们将会探讨RPC的基本原理、实现方式以及如何通过源代码和实验报告来理解和学习RPC。 首先,我们要理解RPC的核心概念。RPC调用的流程通常包括以下步骤:客户端发起请求,服务器接收到请求后执行相应...
这个压缩包文件包含了一些关于RPC的基础知识,实例解析以及在Linux环境下编程学习RPC的相关文档。 1. **RPC原理**: RPC的核心思想是透明性,即客户端无需关心服务端的具体实现,只需要提供调用的服务名和参数即可...
通过这个项目,我们可以深入学习RPC的实现细节,包括服务发现、负载均衡、协议编解码、网络通信等关键模块。 1. **服务提供者与消费者** 在RPC框架中,服务提供者将接口及其实现暴露给网络,而服务消费者通过网络...
RPC(Remote Procedure Call)远程过程调用是一种网络通信协议,允许一台计算机上的程序调用另一台计算机上的程序,就像调用本地函数一样简单。在分布式系统中,RPC扮演着核心角色,使得各服务之间能够方便地进行...
### XML-RPC学习心得 #### 一、XML-RPC简介 XML-RPC(XML Remote Procedure Call)是一种轻量级的远程过程调用协议,它使用XML来编码调用数据,并通过HTTP进行传输。XML-RPC使得运行在不同操作系统上的应用程序...
通过分析和理解这个简单的RPC框架,你可以深入学习RPC的实现原理,了解如何创建自己的分布式系统通信解决方案。这将有助于你在实际项目中更好地应用和优化RPC技术。同时,你还可以扩展这个框架,添加负载均衡、服务...
JSON-RPC是一种轻量级的远程过程调用(RPC)协议,它使用JSON(JavaScript Object Notation)作为数据交换格式,使得客户端...此外,对于想要学习RPC协议或者JSON处理的开发者来说,研究这个库也是一个很好的实践机会。
RPC(Remote Procedure Call,远程过程调用)是一种分布式计算技术,它允许一个程序在一台计算机上执行一个在另一台计算机上的程序,就像本地调用一样。RPC建立在Socket之上,为程序员提供了一种透明的方式来调用...
RPC(Remote Procedure Call)远程过程调用是一种计算机通信协议,它允许一个程序在一台机器上执行...在"rpc-test-study.zip"中,通过分析源代码、阅读文档和运行测试用例,你将能够深入学习RPC的实现细节和最佳实践。
RPC(Remote Procedure Call)是一种分布式计算技术,允许一个程序在某个网络中的一个计算机上执行,但看起来像是在本地执行一样。RPC使得不同计算机上的进程能够相互通信,就像它们在同一台机器上运行一样。在本...