专注于 JetBrains IDEA 全家桶,永久激活,教程
持续更新 PyCharm,IDEA,WebStorm,PhpStorm,DataGrip,RubyMine,CLion,AppCode 永久激活教程

Dubbo配置(一) -- 服务发布与消费

github测试Demo项目地址:github.com/HopeAndStar…

一:概述

本文为Dubbo学习第一步,使用XML配置文件与消费服务。文件配置参考Dubbo官网后经过自身Demo项目测试完成编写,当然不对亦或是不全地方欢迎大家补充或自行查看Dubbo官网。当然本文主要还是讲述使用评率较高的配置项

二:服务dubbbo:service

服务方配置,进行服务类型、分组、版本的限定。以及服务注册中心、服务协议类型、延时以及负载均衡、最大连接执行线程数量等关联调优配置。

2.1 服务发现

简单来讲即一个服务以后消费方调用需要完全匹配一致的属性,匹配完成才能远程调用消费。共三个属性分别为:interface、group、version

90_1.png

属性 作用 默认值 描述
interface 服务类型 必填项,无默认值 个人理解与Spring中依赖注入先匹配对象类型相似
group 服务分组 Dubbo采用分组实现多服务实例时的分别消费,要求提供方与消费方一致
version 服务版本 0.0.0 通常使用情况为接口进行修改后不兼容,如入参修改等
2.2 配置关联

Dubbo的服务可以向多注册中心,同时也支持多种通信协议。在标签中对上述两者可以进行相应定义,注册中心的配置需要,协议配置需要,这两块会有专门文章讲解。目前在这里就是讲怎么在中配置两者

90_2.png

属性 作用 默认值 描述
registry 服务注册中心 默认向所有<dubbo:registry>服务 Dubbo默认情况下向所有配置的注册中心服务,如果需要限定服务范围则可以在属性registry中填入对应注册中心<dubbo:registry>的id属性,中间”,“隔开
protocol 服务协议 默认所有<dubbo:protocol>配置协议类型 Dubbo默认情况下所有<dubbo:protocol>标签配置协议,需要限定某服务通信协议类型可以在属性protocol中填入对应通信协议<dubbo:protocol>的id属性,中间用”,“隔开
provider 属性补全 默认使用第一个<dubbo:provider> 配置很多服务,这时许多服务具备公共属性不想逐一填写,则可以配置<dubbo:provider>。当<dubbo:service>中缺少属性配置时就会采用其中的属性配置,当有多个<dubbo:provider>时默认采用第一个,若想指定则在provider属性中写入对应<dubbo:provider>标签id属性即可
2.3 服务治理

服务经过服务发现与注册中心、协议类型等关联配置已经可以正常、消费。但是在这基础上如果需要对服务进行其它管理,Dubbo中也提供了许多配置属性

90_3.png

属性 作用 默认值 描述
token 令牌 限定消费者只能在注册中心进行服务消费,空值表示不开启,true表示随机生成,固定值相当于密码
deprecated 设置服务过时 false 当服务被设置为过时,消费者调用会打印error级别的日志
dynamic 动态注册 true 设置为false时需要将服务手动启用才能使用
register 是否注册到注册中心 true 设置false以后的协议服务不会到注册中心
2.3 性能调优

服务被调用肯定涉及到性能问题,Dubbo在针对服务的层面设计了一些相关属性参数进行调节

90_4.png

属性 作用 默认值 描述
delay 延迟注册服务时间 0 毫秒级别的设置,-1表示Spring容器初始化完成时暴露服务
connnections 连接数量 100 短连接协议表示限制的连接数量,长连接表示建立长连接个数
loadbalance 负载均衡策略 random random随机、roundrobin轮训、leastactive最少活跃
weight 服务权重
cluster 集群方式 failover 集群方式,可选:failover/failfast/failsafe/failback/forking
filter 拦截器 default 服务提供方远程调用过程拦截器名称,多个名称用逗号分隔
listener 监听器 default 服务提供方导出服务监听器名称,多个名称用逗号分隔

三:服务消费dubbo:reference

服务消费者配置,设置服务发现三大属性interface、group、version。同时还能对Bean注入Id以及发现服务列表注册中心registry进行配置。当然也可以对可获取服务提供协议类型进行限定等操作

3.1 服务发现

90_5.png服务发现相关属性与服务dubbo:service介绍一致,注意保持服务方相关属性配置与服务消费方相关属性配置一致性。不然无法提供远程服务

3.2 配置关联

90_6.png

属性 作用 默认值 描述
id 声明容器实例ID 必填项 当消费方消费服务提供方提供的多实现服务时,Spring容器就需要ID进行区别注入
registry 声明注册中心 默认所有配置注册中心 默认将所有<dubbo:registry>的服务列表合并后寻找提供者,指定只需要使用registry属性配置<dubbo:registry>的id属性即可,多个中间用”,“隔开
consumer 默认配置 与provider一致
3.3 服务治理
属性 作用 默认值 描述
generic 是否缺省泛化接口 缺省使用<dubbo:consumer>的generic 如果为泛化接口,将返回GenericService
check 启动检查服务提供是否存在 缺省使用<dubbo:consumer>的check 启动时检查提供者是否存在,true报错,false忽略
url 绕开注册中心,服务直连 点对点直连服务提供者地址,将绕过注册中心
validation 参数注解校验 是否启用JSR303标准注解验证,如果启用,将对方法参数上的注解进行校验
protocol 消费服务协议类型 只调用指定协议的服务提供方,其它协议忽略
stub 详情如下3.3.1描述
mock 详情如下3.3.2描述
3.3.1 stub示例

90_7.png90_8.png远程服务调用前执行。参数可以为true/false打开关闭,亦或是直接写调用前执行类。当使用boolean变量时默认类名为接口名+Stub,寻找类包路径与接口一致。该类必须提供参数为接口类型的有参构造函数

3.3.2 mock示例

90_9.png90_10.png远程服务调用失败后执行。参数与stub一致,使用boolean时默认类名为接口名+Mock,寻找类包路径与接口一致

3.4 性能调优

服务消费的性能调优更多的是倾向于消费调用层面,对响应时间、尝试次数、延迟初始化等方面实现

属性 作用 默认值 描述
timeout 远程调用超时时长 缺省使用<dubbo:consumer>的timeout 服务方法调用超时时间(毫秒)
retries 远程调用重试次数 2 不包括第一次调用
filter 拦截器 default 服务消费方远程调用过程拦截器名称,多个名称用逗号分隔
listener 监听器 default 服务消费方引用服务监听器名称,多个名称用逗号分隔
init 是否延迟加载 false 是否在afterPropertiesSet()时饥饿初始化引用,否则等到有人注入或引用该实例时再初始化

文章永久链接:https://tech.souyunku.com/38240

未经允许不得转载:搜云库技术团队 » Dubbo配置(一) -- 服务发布与消费

JetBrains 全家桶,激活、破解、教程

提供 JetBrains 全家桶激活码、注册码、破解补丁下载及详细激活教程,支持 IntelliJ IDEA、PyCharm、WebStorm 等工具的永久激活。无论是破解教程,还是最新激活码,均可免费获得,帮助开发者解决常见激活问题,确保轻松破解并快速使用 JetBrains 软件。获取免费的破解补丁和激活码,快速解决激活难题,全面覆盖 2024/2025 版本!

联系我们联系我们