这是我参与11月更文挑战的第13天,活动详情查看:2021最后一次更文挑战
dubbo
架构概述
三个核心作用:
-
面向接口的远程调用
-
智能容错和负载均衡
-
服务自动注册和发现
处理流程
Provider 服务提供方
Consumer 服务消费方
Registry 服务注册与发现的注册中心
Monitor 统计服务的调用次数和调用时间的监控中心
Container 服务运行容器, 负责启动加载运行服务提供者
- 服务提供者在服务容器启动时,向注册中心注册自己
- 服务消费者在启动时向注册中心订阅服务
- 注册中心返回服务提供者地址列表给消费者, 如果有变更,会基于长链接推送变更数据给消费者
- 服务消费者从提供者地址列表中基于软负载均衡算法选一台进行调用,如果调用失败,重新选择一台
- 服务提供者和消费者,在内存中的调用次数和调用时间,定时发送给监控者
配置
dubbo: application
对应org.apache.dubbo.config.RegistryConfig,代表当前应用信息
name: 程序名称
owner: 负责人
qosEnable: 是否启动QoS 默认true
qosPort: qos绑定端口
qosAcceptForeignIp: 是否允许远程访问, 默认false
dubbo:registry
对应org.apache.dubbo.config.RegistryConfig, 代表模块所在的注册中心, 可以有多个注册中心
id: 根据业务先不同配置ID
address: 注册中心的地址
protocol: 协议
timeout: 和注册中心的超时时间
dubbo: protocol
对应org.apache.dubbo.config.ProtocolConfig, 指定服务在进行数据传输使用的协议
id: 多个协议时指定
name: 指定协议名称
dubbo:service
对应org.apache.dubbo.config.ServiceConfig, 指定当前需要对外暴露的服务信息
interface: 接口
ref: 具体的实现的引用
version: 对外暴露的端口号
executes: 确保最大的并行度
dubbo:reference
对应org.apache.dubbo.config.ReferenceConfig 消费者配置。service用法相同
id: Bean在Spring的id
interface: 服务接口名
version: 服务版本
registry: 具体的注册地址的id
mock: 容错时设置成true, 写mock方法
timeout: 指定当前方法或接口中所有方法的超时时间, 根据提供者时长来具体规定
check: 启动时检验生产者是否有该服务, 默认false
retries: 指定当前服务在执行时出现错误或超时的重试机制