Dubbo教程(一) | 认识 Dubbo

一、Dubbo是什么?

Dubbo是一款高性能、轻量级的Java RPC(远程过程调用)框架,主要用于实现服务的分布式调用。由阿里巴巴公司开发并开源。
其核心组件主要包括服务提供者、服务消费者、注册中心、和监控中心。

什么是RPC?

  1. RPC全称为remote procedure call,即远程过程调用。
    比如两台服务器A和B,A服务器上部署一个应用,B服务器上部署一个应用,A服务器上的应用想调用B服务器上的应用提供的方法,由于两个应用不在一个内存空间,不能直接调用,所以需要通过网络来表达调用的语义和传达调用的数据。
  2. 需要注意的是RPC并不是一个具体的技术,而是指整个网络远程调用过程。
  3. RPC是一个泛化的概念,严格来说一切远程过程调用手段都属于RPC范畴。
    各种开发语言都有自己的RPC框架。Java中的RPC框架比较多,广泛使用的有RMI、Hessian、Dubbo等。

二、Dubbo 的架构图解

在这里插入图片描述
节点角色说明:

节点 角色名称
Provider 暴露服务的服务提供方
Consumer 调用远程服务的服务消费方
Registry 服务注册与发现的注册中心
Monitor 统计服务的调用次数和调用时间的监控中心
Container 服务运行容器

调用关系说明:

0、服务容器负责启动,加载,运行服务提供者。
1、服务提供者在启动时,向注册中心注册自己提供的服务。
2、服务消费者在启动时,向注册中心订阅自己所需的服务。
3、注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。
4、服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。
5、服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。

那么,整个发布-订阅的过程就非常的简单了:

  • 启动容器,加载,运行服务提供者。
  • 服务提供者在启动时,在注册中心发布注册自己提供的服务。
  • 服务消费者在启动时,在注册中心订阅自己所需的服务。

如果考虑失败或变更的情况,就需要考虑下面的过程:

  • 注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。
  • 服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。
  • 服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。

三、核心组件

1. 服务提供者(Provider)

1.负责实际提供服务的实现。
2.在服务启动时,将服务接口实现注册到注册中心,以便消费者能够发现并调用该服务。
3.实现业务逻辑,并通过暴露的接口对外提供服务。
4.支持服务的多版本控制,不同版本的服务可以共存。

2. 服务消费者(Consumer)

1.调用远程服务的角色,通过服务接口调用服务提供者的实现。
2.通过注册中心发现服务,并通过Dubbo框架透明地进行远程调用。
3.可以配置负载均衡策略,从多个服务提供者中选择最优的服务实例。
4.支持调用超时、失败重试等机制,增强服务调用的稳定性。

3. 注册中心(Registry)

1.Dubbo分布式系统的核心组件之一,负责管理服务的元数据信息,包括服务的注册和发现。
2.所有的服务提供者在启动时都会将自己注册到注册中心,而服务消费者则从注册中心订阅自己需要的服务。
3.保存服务提供者的元数据信息,如服务接口、地址、版本等。
4.向服务消费者提供动态的服务地址列表,支持服务的动态扩展和缩减。
5.支持服务的健康检查,移除失效的服务实例。
6.注册中心的高可用性对系统的稳定性至关重要,常用的注册中心有Zookeeper、Nacos等。

4. 监控中心(Monitor)

1.Dubbo分布式系统中的关键组件,用于统计和监控服务的调用情况。
2.收集和记录服务调用的各种数据,如调用次数、调用时间、成功率、失败率等。
3.提供可视化的监控界面,方便运维人员实时查看服务的运行状态和性能指标。
4.支持报警功能,当服务调用出现异常或性能指标达到阈值时,能够自动触发报警通知相关人员。
5.通过监控数据,可以帮助开发者和运维人员及时发现并解决服务调用中的问题,提升系统的稳定性和可靠性。
6.常用的监控中心实现有Dubbo自带的简单监控中心、基于Zookeeper的监控中心等,也可以集成第三方监控工具如Prometheus、Grafana等。

四、其他常用组件

Dubbo框架除了核心组件外,还有其他常用组件:

1. 协议(Protocol)

Dubbo进行远程调用的核心,决定了服务之间如何通信。
Dubbo支持多种协议,如Dubbo自身的二进制协议、RMI、HTTP等。选择合适的协议可以大大提高服务的性能和兼容性。
协议定义了服务之间的通信方式,包括序列化、反序列化、编码、解码等,确保服务调用的可靠性和高效性。

2. 远程调用(RPC)

Dubbo的核心功能之一,负责将服务消费者的调用请求传递给服务提供者。
Dubbo提供了一整套机制来处理远程调用的请求和响应,包括序列化、反序列化、网络传输、超时控制、失败重试等。
远程调用过程中,消费者的调用请求会被封装为远程调用请求,并通过网络传输到服务提供者。服务提供者处理请求后,响应会被返回给消费者。

3. 负载均衡(Load Balance)

Dubbo中的重要组件,负责在多个服务提供者实例中选择最优的实例来处理请求。
Dubbo提供了多种负载均衡策略,如随机策略(Random)、轮询策略(Round Robin)、最少活跃调用数策略(Least Active)、一致性哈希策略(Consistent Hash)等,以应对不同的业务场景。

等等之类的

五、Dubbo 和 Spring Cloud区别

1、通信方式不同:Dubbo 使用的是 RPC 通信,而Spring Cloud 使用的是HTTP RESTFul 方式。

2、组成不一样:

  • dubbo的服务注册中心为Zookeerper,服务监控中心为dubbo-monitor,无消息总线、服务跟踪、批量任务等组件;
  • Spring Cloud的服务注册中心为spring-cloud netflix enruka,服务监控中心为spring-boot admin,有消息总线、数据流、服务跟踪、批量任务等组件;

【1】Dubbo详解,用心看这一篇文章就够了【重点】
【2】Dubbo是什么?Dubbo干什么?Dubbo怎么用?
【3】秒懂Dubbo框架(原理篇)
【4】Dubbo 一篇文章就够了:从入门到实战

猜你喜欢

转载自blog.csdn.net/qq_20236937/article/details/142927455