一、Dubbo简介
Dubbo是阿里巴巴开源的基于 Java 的高性能 RPC(一种远程调用) 分布式服务框架(SOA),致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。
要了解Dubbo就得先了解什么是RPC。
RPC(远程过程调用):是一种计算机通信协议(可以是http、rest、webservice等网络通信协议)。该协议允许运行于一台计算机的程序调用另一台计算机的子程序,而程序员无序额外地为这个交互作用编程。如果涉及的软件采用面向对象编程,那么远程过程调用亦可称作远程调用或者远程方法调用。
![70a799328fac2e3f48bb0ed4f7315aee.png](https://i-blog.csdnimg.cn/blog_migrate/889abf106390211f4f75a0380614db5e.png)
程序A和程序B分别位于不同的服务器中,程序A的createOrder方法通过tcp协议调用了程序B的reduceStock方法。这就是一次远程过程调用。
二、Dubbo的特性说明
Dubbo的主要特性(优点)主要有如下六种:
- 面向接口代理的高性能RPC调用:提供高性能的基于代理的远程调用能力,服务以接口为粒度,为开发者屏蔽远程过程调用的底层细节。
- 智能负载均衡:内置多种负载均衡策略,智能感知下游节点健康状况,显著减少调用延迟,提高系统吞吐量。
- 服务自动注册与发现:支持多种注册中心服务,服务实例上下线实时感知。
- 高度可扩展能力:遵循微内核+插件的设计原则,所有核心能力如Protocol、Transport、Serialization被设计为扩展点,平等对待内置实现和第三方实现。
- 运行期流量调度:内置条件、脚本等路由策略,通过配置不同的路由规则,轻松实现灰度发布,同机房优先等功能。
- 可视化的服务治理与运维:提供丰富服务治理、运维工具(监控):随时查询服务元数据、服务健康状态及调用统计,实时下发路由策略、调整配置参数。
传统的负载均衡方案(Nginx)存在一个缺点:当服务集群数量达到一定程度时,需要大量的人工成本进行维护(集群服务器的增删,需要手动去修改配置表)。使用注册中心,将服务在注册中心中注册/撤销,可以解决此问题。
(可自行了解ServiceMesh:其主要功能就是将客户端(服务消费者)中嵌入的负载均衡等代理集成到一个独立的代理服务器上,多个客户端可以共用一个代理服务器。)
Dubbo的原理图:
![c2c578e52e9b46a1d53abeb6270c1e51.png](https://i-blog.csdnimg.cn/blog_migrate/113e1287b99d8e491e25e27396bb9daf.jpeg)