1、什么是Dubbo
Dubbo是一个分布式服务框架,Doubbo的产生让我们告别了HTTP+restful和webservice进行服务数据交互的模式,而Doubbo采用的是分布式SOA服务治理方案,通过RPC远程调用服务。
SQA;简单来说是一种服务体系规范,低耦合,根据业务逻辑将服务分割成细小部分分布式部署的服务架构
RPC:一种远程网络服务通讯协议,封装了TCP/IP协议,万平米不用关心底层,而只需要指定IP地址以及端口号,找到我们需要的服务端,得到我们需要的服务。
2、Doubbo的主要功能
远程通讯:提供多种基于长来凝结的NIO框架抽象封装,包括多种线程模型,序列化,以及‘请求‘ ’响应‘ 模式的信息叫唤方式
集体容错:提供基于接口方法的透明远程调用,包括多协议支持,以及软负载均衡,失败容错,地址路由,动态配置等集体支持
自动发现:基于注册中心目录服务,使服务消费放能动态的查找服务提供方,使地址透明,使服务提供可以平滑增加或减少机器。
Dobbo架构分层:
服务接口层:service,该层是与实现业务逻辑相关的,根据微服务提供方和服务消费方的业务设计对应接口和实现
配置层(config);对外配置接口,以ServiceConfig为中心,可以直接new配置类,也可以通过spring解析配置生成配置类
服务代理层(Registry):封装服务地址的注册与发现,以服务URL为中心,扩展接口为RegistryFactory、Registry和RegistryService,可能没有服务注册中心,此时服务提供方直接暴露服务
集群层(Cluster):封装多个提供者的路由及负载均衡,并桥接注册中心,以Invoker为中心,扩展接口为Cluster、Directory、Router和LoadBalance。将多个服务提供方组合为一个服务提供方,实现对服务消费方来透明,只需要与一个服务提供方进行交互。
监控层(Monitor):RPC调用次数和调用时间监控,以Statistics为中心,扩展接口为MonitorFactory、Monitor和MonitorService。
远程调用层(Protocol):封将RPC调用,以Invocation和Result为中心,扩展接口为Protocol、Invoker和Exporter。Protocol是服务域,它是Invoker暴露和引用的主功能入口,它负责Invoker的生命周期管理。Invoker是实体域,它是Dubbo的核心模型,其它模型都向它靠扰,或转换成它,它代表一个可执行体,可向它发起invoke调用,它有可能是一个本地的实现,也可能是一个远程的实现,也可能一个集群实现。
信息交换层(Exchange):封装请求响应模式,同步转异步,以Request和 Response为中心,扩展接口为Exchanger、ExchangeChannel、ExchangeClient和ExchangeServer。
网络传输层(Transport):抽象mina和netty为统一接口,以Message为中心,扩展接口为Channel、Transporter、Client、Server和Codec。
数据序列化层(Serialize):可复用的一些工具,扩展接口为Serialization、 ObjectInput、ObjectOutput和ThreadPool。