1. 什么是Dubbo?
Dubbo 是一个高性能的、基于 java 的、开源 RPC 框架
2. 什么是RPC?
RPC 是 Remote Procedure Call Protocol ,称为:远程过程调用协议。是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。该协议允许运行于一台计算机的程序调用另一台计算机的程序。程序员无需编为网络交互功能编码。
RPC 的作用?
主要功能是让构建分布式应用更容易,在提供强大的远程调用能力时不损失本地调用的语义简洁性。在一台计算的程序使用其他计算机上的功能就是使用自己的功能一样。RPC 技术提供了透明的访问其他服务的底层实现细节。使用分布式系统中的服务更加方便。
什么是分布式?
分布式指多台计算机位于网络系统中,形成一个整体对外界提供服务。
3. Dubbo能做什么?
⚫ 实现透明的远程方法调用,就像调用本地方法一样。可以忽略远程调用的实现细节。简
单配置即可使用。
⚫ 服务的自动注册和服务发现。通过注册中心,服务实现动态管理(增减服务方)。调用
服务的消费者无需写死调用地址。
⚫ 软件的负载均衡实现和容错机制,无需使用硬件。降低成本。
4. Dubbo服务的实现原理
Dubbo 的底层实现是动态代理, 由 Dubbo 框架创建远程服务(接口)对象的代理对象,通过代理对象调用远程方法。
5. Dubbo 协议
dubbu 官方推荐使用 dubbo 协议。dubbo 协议默认端口 20880
A 、Dubbo 协议特点
Dubbo 协议采用 单一长连接 和 异步通讯 ,适合于小数据量大并发的服务调用,以及服务消费
者机器数远大于服务提供者机器数的情况。
B 、网络通信
Dubbo 协议底层网络通信默认使用的是 netty,性能非常优秀,官方推荐使用。
C 、不适合的地方
Dubbo 协议不适合传送大数据量的服务,比如传文件,传视频等,除非请求量很低
D 、使用 Dubbo 协议
<dubbo:protocol name=“dubbo” port=“20880” />
6. 长连接和短连接
Dubbo 协议使用的长连接:
短连接如下:
长连接和短连接:
所谓长连接,指在一个连接上可以连续发送多个数据包,在连接保持期间,如果没有数据包发送,需要双方发检测包。短连接是指通讯双方有数据交互时,就建立一个连接,数据发送完成后,则断开此连接,即每次连接只完成一项业务的发送。
长连接多用于操作频繁,点对点的通讯,而且连接数不能太多的情况。例如:数据库的连接用长连接。像 Web 网站的 http 服务一般都用短链接,因为长连接对于服务端来说会耗费一定的资源,而像 Web 网站频繁的使用,用短连接会更省一些资源,并发量大,但每个用户无需频繁操作的情况下用短连接好。
7. Dubbo 的组件
dubbo由五大部分组成:
1、Container:服务运行容器。
2、Provider:暴露服务的服务提供方。
3、Consumer: 调用远程服务的服务消费方。
4、Registry:服务注册与发现的注册中心。
5、Monitor:统计服务调用次调和调用时间的监控中心。
调用关系说明:
0.start:服务容器负责启动,加载,运行服务提供者。
1.register:服务提供者在启动时,向注册中心注册自己提供的服务。
2.subscribe:服务消费者在启动时,向注册中心订阅自己所需的服务。
3.notify:注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。
4.invoke:服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。
5.count:服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。
我们做dubbo框架时实际上只需三个部分:提供者,消费者,注册中心