Dubbo是阿里巴巴公司开源的一个高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现使得应用可通过高性能的 RPC 实现服务的输出和输入
主要核心部件
Remoting:网络通信框架,实现了 sync-over-async 和request-response 消息机制.
RPC:一个远程过程调用的抽象,支持负载均衡、容灾和集群功能
Registry:服务目录框架用于服务的注册和服务事件发布和订阅
Dubbo发展
2018.2月,阿里将Dubbo捐献给Apache基金会,Dubbo成为Apache孵化器项目
Dubbo版本
Dubbo 目前有如图所示的 5 个分支,其中 2.7.1-release 只是一个临时分支,忽略不计,对其他 4 个分支进行介绍。
Dubbo解决了什么问题
负载均衡——同一个服务部署在不同的机器时该调用那一台机器上的服务,软负载均衡及容错机制,可在内网替代F5等硬件负载均衡器,降低成本,减少单点。
服务调用链路生成——随着系统的发展,服务越来越多,服务间依赖关系变得错踪复杂,甚至分不清哪个应用要在哪个应用之前启动,架构师都不能完整的描述应用的架构关系。Dubbo 可以为我们解决服务之间互相是如何调用的。
服务访问压力以及时长统计、资源调度和治理——基于访问压力实时管理集群容量,提高集群利用率。
服务降级——某个服务挂掉之后调用备用服务
透明化的远程方法调用,就像调用本地方法一样调用远程方法,只需简单配置,没有任何API侵入。
服务自动注册与发现,不再需要写死服务提供方地址,注册中心基于接口名查询服务提供者的IP地址,并且能够平滑添加或删除服务提供者。