在上一篇在上一篇Dubbo主题文章,也是作者分享的第一篇Duboo文章,介绍了SPI让大家提前掌握duboo中一个高频出现的技术。接下来,我们要回归到基础,和大家一起了解这个Duboo这个框架的概况和基本工作流程。
一、Duboo概况
Duboo是一个出现比较早的分布式框架,比Spring cloud要早。它是由阿里巴巴研发出的一款开源的基于Java语言的RPC分布式服务框架,主要目的是为了提升系统性能、提供透明化的RPC远程服务调用方案,以及SOA服务治理方案。
因其优秀的性能,被国内很多大厂封装成自己的分布式服务框架的内核,duboo在当中充当远程服务调用的核心模块。
深入对duboo的使用,大家可以了解到这个框架的核心主要有三部分:
1、远程通讯
duboo是基于TCP长连接的通讯方式,为用户提供多种NIO框架封装(如netty和mina)。同时线程模型和序列化方式也有多种选择。在追求代码API零入侵的前提下,用户只需简单的配置,就可以进行透明的远程方法调用(就像调本地方法一样去调用远程方法)。
2、集群容错
以接口为基础的透明远程调用方法,为用户提供提供多种协议的支持、失败容错、地址路由和动态配置等集群支持功能,在内网情况下可以实现软负载均衡,减少建设成本以及单点问题。
3、自动发现
基于注册中心目录服务,让服务的注册和发现更加灵活,不需要再写死在相关的服务上面。而注册中心是基于接口名来查询服务提供者的IP地址,可以动态添加和删除异常的服务提供者。
二、Duboo基本工作流程
了解了duboo的作用和核心功能后,我们再继续去了解它的工作流程。
1、架构
duboo的基本架构如下图,包含了5个节点角色,它们之间的通讯包括三大类型:初始化、同步通讯和异步通讯。
我们可以顺着通讯的序号,了解到整个框架由容器启动开始,然后把服务提供者注册到注册中心,服务调用者会订阅相关服务并获取到服务注册信息缓存到本地。在服务发生变化时,注册中心会通知给服务调用方。
2、节点角色和调用关系
节点角色 | 作用 | 调用关系 |
Container | 服务运行容器 | 负责启动,加载,运行服务提供者 |
Provider | 暴露服务的服务提供方 | 在启动时,向注册中心注册自己提供的服务 |
Registry | 服务注册与发现的注册中心 | 把服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者 |
Consumer | 调用远程服务的服务消费方 | 从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用 |
Monitor | 统计服务的调用次数和调用时间的监控中心 | 服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心 |
3、节点连通要点
a、服务提供者和消费者只在启动时与注册中心交互,注册中心不转发请求。
b、服务提供者和消费者对服务调用次数和时间的统计先在内存汇总,然后每分钟一次发送到监控中心服务器,并以报表展示。
c、注册中心,服务提供者,服务消费者三者之间均为长连接
d、注册中心和监控中心都是可选的,服务消费者可以直连服务提供者
以上就是作者为大家提供的duboo入门介绍,进行了框架的概述以及架构中各个节点的作用和通信要点,帮助大家对框架有个大致的认识。