Dubbo是什么?
Dubbo是Apache开源基金会顶级项目,最开始是由阿里巴巴开源并贡献给Apache。他的本质是一个高性能分布式Rpc服务调用框架。最新版本已经到了3.0,具备应用级服务注册和发现的能力。笔者在工作中使用的版本是2.7.2版本,最近关于Dubbo系列的文章将基于Dubbo 2.7.2版本分析。
下面是官网首页的介绍:
正如上图所述,随着Dubbo的演进迭代,Dubbo不再只是一个简单rpc框架,更是一个服务治理的生态系统,兼具远程服务调用,服务容错和负载均衡,服务自动注册发现等服务治理能力,Dubbo还是一个扩展性极强的框架,因为他有一套灵活的扩展点机制,支持任意Dubbo组件插件式的扩展。
Dubbo出现的背景
任何技术都不是凭空出现的,它肯定是为了解决某一类问题而产生,在中国互联网的不断发展中,系统越来越复杂,以前的单体应用已经无法支撑业务正常发展下去,因此分布式系统逐渐演化而来,分布式系统中一定会存在远程通信的功能,笔者工作中接触过webservice,http等远程通信方式,这些通信技术只有最基本的通信能力,在复杂的分布式系统中使用和业务功能耦合性极高,并且没有任何服务治理能力,比如负载均衡,服务自动发现注册等,因此Dubbo就出现了,Dubbo支持http,webservice,rest,redis等通信协议,Dubbo不仅支持各种通信协议,还具备自动服务注册和发现的能力,使得分布式应用实现远程通信更加简单高效。
Dubbo需要解决的问题
1、不同公司,不同系统,采用不同分布式通信协议,因此统一的远程通信模型抽象也是很有必要。
2、随着分布式服务越来越多,服务的地址信息越难维护,因此自动管理服务地址的能力迫在眉睫。
3、分布式服务越来越多,服务器的资源情况各不相同,哪些服务可以分配更多的请求处理也是一个非常关键的问题,分布式服务负载均衡的能力也必须具备。
4、随着越来越多的服务调用,服务治理能力也需要提升,比如服务容错,服务缓存,服务调用情况等等。
Dubbo架构
Dubbo框架包括服务提供者Provider,服务注册中心Registry,服务消费者Consumer,服务监控中心Monitor组成。
1、服务提供者Provider注册服务信息到服务注册中心Registry
2、服务消费者订阅并从注册中心Registry获取服务提供者信息
3、服务消费者根据从服务注册中心获取到的服务提供者信息发起远程调用,这是Dubbo最基本也是最核心的能力
4、服务提供者和服务消费者定期向服务监控中心Monitor上报状态。
Dubbo功能特性
Dubbo最基本的能力是远程调用
同时还支持下列或更多功能特性:
1、服务自动注册发现
2、支持多协议远程服务调用
3、多注册中心
4、服务容错
5、客户端Consumer负载均衡
6、服务扩展点
7、服务泛化调用
Dubbo采用的技术
1、Netty用于远程通信
2、反射和动态代理技术实现面向接口远程调用
3、序列化和反序列化技术实现远程请求和响应的解析处理
4、注册中心实现服务信息的缓存
总结
Dubbo是分布式系统治理的比较经典的一项技术,学习Dubbo可以了解分布式系统调用的原理,以及分布式治理的相关手段,如果能学好Dubbo,对于学习其他分布式中间件框架非常有帮助,后续的文章笔者将围绕Dubbo核心功能进行剖析,帮助读者系统的学习Dubbo,了解Dubbo,同时也将笔者学习心得进行记录和沉淀。