RPC-Dubbo相关介绍
1.远程调用(RPC)
远程调用涉及的概念
协议
协议指多方共同遵循的规范,在网络中的计算机进行数据交换依靠各种协议。例如 http,
ftp 等。
一台计算机按规定好的格式发送数据,另一台计算的程序按指定的格式接收数据,两台
计算使用互相理解的格式读写数据。达到数据交换的目的。
RPC-远程过程调用协议
RPC 是什么?
PRC 是 Remote Procedure Call Protocol ,称为:远程过程调用协议。是一种通过网络从
远程计算机程序上请求服务,而不需要了解底层网络技术的协议。该协议允许运行于一台计
算机的程序调用另一台计算机的程序。程序员无需编为网络交互功能编码。
RPC 的作用?
主要功能是让构建分布式计算(应用)更容易,在提供强大的远程调用能力时不损失本
地调用的语义简洁性。在一台计算的程序使用其他计算机上的功能就是使用自己的功能一样。
RPC 技术提供了透明的访问其他服务的底层实现细节。使用分布式系统中的服务更加方便。
分布式?
分布式指多台计算机位于网络系统中,多台计算给形成一个整体对外界提供服务。用户
使用系统不知道是多台计算机,使用不同的操作系统,不同的应用程序提供服务。
2.Dubbo
基本介绍
官网:http://dubbo.io/
红色框文字翻译后:一个高性能的,基于 Java 的,开源 RPC 框架。
Dubbo 是一个框架
Dubbo 是一个分布式服务框架,致力于提供高性能和透明化的 RPC 远程服务调用方案、服
务治理方案。
Dubbo 是 阿 里 巴 巴 服 务 化 治 理 方 案 的 核 心 框 架 , 每 天 为 2,000+ 个 服 务 提 供
3,000,000,000+次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点:

已知的使用企业:

其他的 RPC 框架
- 新浪微博的 Motan (https://github.com/weibocom/motan)
- Dubbox 是 由 当 当 对 阿 里 的 Dubbo 的 升 级 , 可 以 被 视 为 Dubbo 的 增 强 版
(https://github.com/dangdangdotcom/dubbox) - 国外的有 google grpc
前两个是基于 java 语言的和 spring 集成在一起的, grpc 是跨语言的,使用面更广。
- Dubbo:国内最早开源的 RPC 框架,由阿里巴巴公司开发并于 2011 年末对外开源,仅支持 Java 语言。
- Motan:微博内部使用的 RPC 框架,于 2016 年对外开源,仅支持 Java 语言。
- Tars:腾讯内部使用的 RPC 框架,于 2017 年对外开源,仅支持 C++ 语言。
- SpringCloud:国外 Pivotal 公司 2014 年对外开源的 RPC 框架,提供了丰富的生态组件。
- gRPC:Google 于 2015 年对外开源的跨语言 RPC 框架,支持多种语言。
- Thrift:最初是由 Facebook 开发的内部系统跨语言的 RPC 框架,2007 年贡献给了 Apache 基金,成为Apache 开源项目之一,支持多种语言。
Dubbo 能做什么
- 实现透明的远程方法调用,就像调用本地方法一样。可以忽略远程调用的实现细节。简单配置即可使用。
- 服务的自动注册和服务发现。通过注册中心,服务实现动态管理(增减服务方)。调用
服务的消费者无需写死调用地址。 - 软件的负载均衡实现和容错机制,无需使用硬件。降低成本。
Dubbo 服务的实现原理
Dubbo 的底层实现是动态代理, 由 Dubbo 框架创建远程服务(接口)对象的代理对象,
通过代理对象调用远程方法。

Dubbo 支持的协议
支持 8 种协议:dubbo , hessian , rmi , http, webservice , thrift , memcached , redis。
dubbu 官方推荐使用 dubbo 协议。dubbo 协议默认端口 20880
Dubbo 协议
Dubbo 协议特点
Dubbo 协议采用单一长连接和异步通讯,适合于小数据量大并发的服务调用,以及服务消费
者机器数远大于服务提供者机器数的情况。
网络通信
Dubbo 协议底层网络通信默认使用的是 netty,性能非常优秀,官方推荐使用
不适合的地方
Dubbo 协议不适合传送大数据量的服务,比如传文件,传视频等,除非请求量很低
使用 Dubbo 协议
<dubbo:protocol name="dubbo" port="20880" />
长连接和短连接
Dubbo 协议使用的长连接:

短链接:

长连接和短连接接:
所谓长连接,指在一个连接上可以连续发送多个数据包,在连接保持期间,如果没有
数据包发送,需要双方发检测包。短连接是指通讯双方有数据交互时,就建立一个连接,数
据发送完成后,则断开此连接,即每次连接只完成一项业务的发送。
长连接多用于操作频繁,点对点的通讯,而且连接数不能太多情况。例如:数据库的
连接用长连接。像 Web 网站的 http 服务一般都用短链接,因为长连接对于服务端来说会耗
费一定的资源,而像 Web 网站频繁的用,使用短连接会更省一些资源,并发量大,但每个
用户无需频繁操作情况下需用短连好。
Dubbo 的组件


浙公网安备 33010602011771号