最近对RPC的一些实现原理,以及一些RPC框架比较感兴趣。所以,抽时间想研究一下RPC中涉及到的一些技术实现,通讯、序列化和反序列化、动态代理、通讯协议(消息的编解码)。
在一个针对阿里找招聘的群里,发现一些阿里的技术文档 ,故下载下来查看了一下。一种有一位大牛正好讲到了RPC调用的一些实现原理或者涉及到的技术。本人是做java开发的,这位大牛也是基于java的角度来做了一些原来的剖析。故在此记录一下,作为指导自己想重复造轮子想法的一些借鉴。也希望有这方面应用的同行给予指导。下面言归正传,深入到RPC涉及技术的一些记录。
RPC是什么?
RPC remote procedure call 远程过程或者方法调用,它是一种跨进程间的方法或者过程调用。让程序客户端像调用本地方法一样,调用远程服务端暴露的方法。其中,不乏业务异常或者调用的运行时异常导致的调用失败,或返回错误信息。
RPC的数据结构
引用阿里的那位牛人博客中的,RPC的数据结构主要包含以下几个方面:
- user
- user stub
- RPC-runtime
- server stub
- server
每一部分相信很多人都知道他们是干什么用的,在此我也不多废话。如果不了解,请自行百度。
RPC选型的几个重要指标
- 性能指标
- 是否需要支持跨语言平台
- 内网开放还是公网开放
- 开源PRC框架的质量、以及社区活跃度
这里多说两句,早前的一家公司 最开始用的是java RMI框架,这是java api自带的实现远程服务间调用的框架,其学习成本低、基于java语言,不能跨语言调用;
后来公司升级到了阿里的Dubbo框架,这是阿里开源的支持多种协议的一种远程服务间调用框架。其中实现了dubbo自己的协议还有thrift协议等等第三方的协议,还暴露了很多的extend point,方面企业自己实现扩展。
现在这家公司现在使用的是hessian基于二进制通讯协议的远程服务间调用框架,后期随着业务量的不断增加可能会迁移到thrift协议。
thrift大家也知道支持跨语言平台的远程服务调用,对于现在的大多数互联网公司,不管你是P2P或者O2O都是基于app作为主要交易手段的,所以实现跨语言平台的远程服务调用就是业务所必须。
RPC的功能目标
让构建分布式应用更容易,提供强大远程调用能力的前提下,不失本地调用的简洁性。(引自:http://blog.csdn.net/mindfloating/article/details/39474123)
RPC各个组件的职责
rpc server 提供服务的导出
rpc client 负责服务接口的代理导入
rpc proxy 服务接口的代理实现
rpc invoker
客服端 负责编码信息和发送请求到服务端并等待结果返回
服务方 负责真正的服务接口实现的调用并返回调用结果
rpc protocol 负责消息的编解码
rpc connector 负责维持客户端和服务端的通道以及发送数据请求
rpc acceptor 负责解释客户方请求并返回结果
rpc processor 负责在服务方的控制调用过程,包括线程池、超时时间等
rpc channel 数据传输通道
具体的各部分对应于java的实现,请参考:http://blog.csdn.net/mindfloating/article/details/39474123,这位阿里人的博客
相关推荐
Netty核心原理剖析与RPC实践手抄版本,基本复刻了全部内容,如有丢失请私聊
分析RPC调用的完整流程,学习如何处理异常和超时。 总结来说,Dubbo作为一款强大的RPC框架,它的设计和实现涉及到了服务治理的多个重要方面。通过对Dubbo的深入学习和源码分析,我们可以提升分布式系统的设计和运维...
总的来说,掌握Dubbo和RPC原理对于成为一位优秀的架构师至关重要。这不仅有助于设计和实施高效、可扩展的分布式系统,还能提高团队协作和项目维护的效率。通过深入学习和实践,你可以更好地驾驭这些工具,为企业的...
总结来说,RPC底层通讯原理中Netty线程模型的源码分析,涉及到Netty框架的线程模型设计、事件驱动机制以及数据处理流程,这些都是构建高性能RPC系统的关键技术点。通过对这些内容的深入学习和理解,开发者能够更好地...
总的来说,这个“菜鸡”实现虽然简单,但能帮助理解RPC的基本原理,是学习和掌握RPC技术的良好起点。实际生产环境中,我们需要考虑更多的因素,如性能、稳定性、扩展性等,选择或定制更适合的RPC框架。
Hadoop RPC 详细分析 Hadoop RPC(Remote Procedure Call,远程过程调用)是...通过对 Hadoop RPC 的详细分析,我们可以更好地理解 Hadoop 项目的工作原理,并且可以更好地应用 Hadoop RPC 来构建高性能的分布式系统。
在IT行业中,RPC(Remote Procedure Call)是一种分布式计算技术,允许程序执行远程计算机上的操作而无需了解底层网络...对于IT从业者来说,理解并掌握RPC的实现原理,无疑会提升个人的技术水平和解决复杂问题的能力。
本文将深入探讨Hadoop的RPC机制,解析其工作原理,并结合源码分析其内部实现。 一、RPC简介 RPC是一种让程序能够调用运行在其他地址空间(通常在另一台机器上)的程序的方法。在Hadoop中,RPC被广泛用于NameNode、...
本文将详细介绍如何在Java环境中自定义实现一个RPC框架,包括其实现原理、关键组件设计及其实现细节。 #### 二、RPC概述 **RPC(Remote Procedure Call Protocol)**是一种协议,它允许一个程序在另一台机器上执行...
- LabVIEW XML-RPC常用于设备控制、数据采集、分布式系统集成等场合,例如,通过XML-RPC将LabVIEW控制的实验设备与远程服务器连接,进行实时数据传输和分析。 - 另外,也可以用于跨网络的LabVIEW应用之间的通信,...
通过分析这些示例代码,你可以更深入地理解C# Remoting的工作原理和使用方法。 总结来说,C# Remoting是C#中实现远程调用的一种方式,它简化了分布式系统中对象间的通信。虽然在当前的开发趋势下,它可能不是首选的...
这些文件可以帮助我们进一步理解RPC框架的工作原理和使用方法,但具体的分析需要实际查看代码内容。 总的来说,设计一个适用于高并发的RPC轻量级框架,需要综合考虑性能、可扩展性、容错性和易用性。通过深入理解和...
深入研究这个源码可以帮助我们理解RPC的工作原理,并且可能为开发自己的RPC框架提供灵感和实践基础。 总结来说,自定义实现RPC框架是一项涉及多方面技术的任务,包括网络编程、序列化、服务发现和错误处理等。通过...
源码分析是理解NFS-RPC实现细节的重要途径,可以深入研究其数据结构、状态机、错误处理等方面,这对于优化和自定义NFS-RPC实现非常有帮助。 总的来说,NFS-RPC是分布式系统中实现高效文件共享的关键技术,它的设计...
- RPC基础理论:介绍RPC的工作原理,包括调用流程、数据封装和解封装等。 - MIDL使用指南:详细讲解如何编写和使用.idl文件,以及生成的代理和存根代码的作用。 - 服务器端开发:指导如何创建服务,包括注册服务、...
1. **RPC原理**: - RPC使得客户端能够像调用本地方法一样调用远程服务器上的方法,隐藏了网络通信的复杂性。 - 它通常包括四个主要组件:客户端、服务端、请求和响应。客户端发起请求,服务端处理请求并返回响应...
理解JSON-RPC的实现原理对于开发者来说非常重要。通过阅读源码,我们可以了解到请求是如何被解析的,参数是如何被传递的,以及错误是如何处理的。这对于定制自己的RPC框架或者调试问题非常有帮助。 至于“工具”,...
本文将深入解析XXL-RPC的实现原理,并通过源码分析来帮助理解其核心功能。 首先,XXL-RPC的核心组件包括服务提供者(Provider)、服务消费者(Consumer)和注册中心(Registry)。服务提供者将本地服务注册到注册...
1. **RPC原理**:RPC的基本概念是客户端发起一个请求,服务器端处理这个请求并返回结果。这个过程对调用者透明,就像调用本地方法一样。它涉及网络通信、序列化和反序列化、服务发现和服务调用等核心环节。 2. **...