版权声明:本文为 小异常 原创文章,非商用自由转载-保持署名-注明出处,谢谢!
本文网址:https://sunkuan.blog.csdn.net/article/details/120501561
可能让大家失望了,本篇博客还是以理论为主,来讲解 Dubbo 的基本概述。下一篇将以一个 HelloWorld 给大家演示 Dubbo 的实际使用。本篇选用的是 Dubbo 2.7.3 版本。
一、Dubbo概述
- Dubbo 是由阿里巴巴开源的一个高性能、基于 Java 开源的远程调用框架(远程调用在上一篇博客我也以一个幽默的小故事给大家介绍过了)。正如在许多 RPC 系统中一样,Dubbo 是基于定义服务的概念,指定可以通过参数和返回类型远程调用的方法。在服务器端,服务器实现这个接口,并运行一个 Dubbo 服务器来处理客户端调用。在客户端,客户机有一个存根,它提供与服务器相同的方法。
- Dubbo 提供三个核心功能: 基于接口的远程调用 、 容错和负载均衡 ,以及 服务的自动注册与发现 。Dubbo 框架广泛的在阿里巴巴内部使用,以及京东、当当、去哪儿、考拉等都在使用。
二、Dubbo结构
这是摘自 Dubbo 官网上的一张 Dubbo 结构图。
我大致介绍一下这个结构,首先需要有两个角色三样东西,两个角色分别是 服务提供者 和 服务消费者,三样东西分别是 注册中心、服务容器 和 监控中心。具体的调用关系下面会有:
1、节点角色说明
- Provider: 暴露服务的服务提供方。
- Consumer: 调用远程服务的服务消费方。
- Registry: 服务注册与发现的注册中心。
- Monitor: 统计服务的调用次调和调用时间的监控中心。
- Container: 服务运行容器。
2、调用关系
- 服务容器 负责启动,加载,运行服务提供者;
- 服务提供者 在启动时,向 注册中心 注册自己提供的服务;
- 服务消费者 在启动时,向 注册中心 订阅自己所需的服务;
- 注册中心 返回 服务提供者 地址列表给 服务消费者,如果有变更,注册中心 将基于长连接推送变更数据给消费者;
- 服务消费者,从 服务提供者 地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用;
- 服务消费者 和 服务提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到 监控中心;
三、常用配置
现在一般都是基于 YML 的配置方式,官网上还是 XML 的配置方式,本篇博客我以 YML 配置方式讲解:.
# Dubbo配置
dubbo:
# Dubbo 应用配置
application:
# 应用名称
name: provider
# 配置注册中心信息
registry:
# 注册地址
address: multicast://224.5.6.7:1234
# 连接超时时间,单位毫秒
timeout: 6000
# 配置服务提供者注册服务的协议
protocol:
# 协议名称
name: dubbo
# 协议端口(Dubbo协议默认端口号是20880)
port: 20880
# 配置服务扫描
scan:
# 扫描包的位置
base-packages: com.demo.provider.service
四、注册中心
注册中心的作用: 就是更高效的管理系统的服务,它是服务的大管家。比如服务接口的发布、自动剔除无效的服务、自动恢复服务等。
Dubbo 中支持四种注册中心: Multicast 、Zookeeper(推荐) 、Redis 、Simple。