文章内容输出来源:拉勾教育Java高薪训练营
一、介绍
Dubbo是一款高性能、轻量级的Java RPC框架(官网地址)
提供了三大核心能力
- 面向接口的远程方法调用
- 智能容错和负载均衡
- 服务自动注册和发现
二、处理流程
2.1 节点说明
- Provider:服务提供方,暴露服务
- Consumer:服务消费者,调用远程服务
- Registry:注册中心,服务注册与发现
服务注册中心在整个流程中扮演了至关重要的角色。Dubbo推荐使用ZooKeeper
- Monitor:监控中心,统计服务的调用次数和调用时间
- Container:服务运行容器,启动、加载、运行服务提供者
2.2 调用关系说明
- 实线是同步调用
- 虚线是异步调用
- 蓝色虚线是在程序执行中的功能
- 紫色虚线是在启动时完成的功能
2.3 流程步骤
1.Provider部署在一个Container,启动后向Registry注册自己提供的服务
2. Consumer启动后,向Registry订阅自己所需要的服务
3. Registry返回Provider的地址列表给Consumer
4. Consumer从地址列表中,基于负载均衡算法,选择一个Provider进行调用
5. Provider和Consumer将运行情况(调用次数、时间)定时发送给Monitor进行统计
如果Provider的地址信息变更,Registry会基于长连接推送变更数据给Consumer
Consumer调用Provider的服务失败,则会重新选择一个Provider进行调用
三、管理控制台
dubbo-admin,可以对服务管理、路由规则、服务降级、负载均衡等这些功能进行监控
-
下载项目
git地址:https://github.com/apache/dubbo-admin -
修改项目中的dubbo.properties文件
dubbo.registry.address=zookeeper://zk所在机器ip:zk端口
dubbo.admin.root.password=root
dubbo.admin.guest.password=guest
- 项目打包,运行jar包
四、配置参数
4.1 dubbo:application
对应dubbo中的
ApplicationConfig
,代表当前应用的信息
- dubbo.application.name: 应用名称
- dubbo.application.owner: 应用的负责人
- dubbo.application.qosEnable: 是否启动QoS,默认是true
- dubbo.application.qosPort:启动QoS绑定的端口,默认为22222
- dubbo.application.qosAcceptForeignIp:是否允许远程访问,默认是false
QoS是Quanlity of Service,通过一些命令来动态对服务进行查询和控制,如对服务的上下线
4.2 dubbo:registry
对应dubbo中的
RegistryConfig
,代表模块使用的注册中心
- dubbo.registry.id:注册中心标识ID,有多个注册中心通过此字段进行区别
- dubbo.registry.address:注册中心的访问地址
- dubbo.registry.protocol:注册中心使用的协议是什么
- dubbo.registry.timeout:超时限制,当与注册中心不在同一个机房,会将此参数延长
4.3 dubbo:protocol
对应dubbo中的
ProtocolConfig
,指定服务进行数据传输时所使用的协议
- dubbo.protocol.id:协议的标识ID,有多个协议使用时可以区别
- dubbo.protocol.name:指定协议名称,默认是dubbo
4.4 dubbo:service
对应dubbo中的
ServiceConfig
,用于指定当前需要对外暴露的服务信息
- dubbo.service.interface:指定当前需要对外暴露的接口是什么
- dubbo.service.ref:具体实现对应的引用。一般是在Spring的容器中进行托管,所以一般这里也指的是Spring的Bean ID
- dubbo.service.version:对外暴露的版本号。消费者在消费的时候只会根据固定的版本号进行消费。
4.5 dubbo:reference
对应dubbo中的
ReferenceConfig
,做为消费者的配置
- dubbo.reference.id:服务对应的BeanId
- dubbo.reference.interface:服务接口名
- dubbo.reference.version:指定当前服务的版本,与服务提供者的版本一致
- dubbo.reference.registry:指定使用的注册中心地址的标识ID
4.6 dubbo:method
对应dubbo的
MethodConfig
,指定具体方法级别在RPC操作时的配置
- dubbo.method.name:指定方法名称
- dubbo.method.async:是否异步,默认为false
五、SPI
SPI是JDK提供的服务提供发现机制。有