Dubbo配置(二) -- 协议与注册中心

998 阅读6分钟

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

一:概述

继上篇文章讲解如何进行服务发布与消费之后本文将讲解服务发布协议配置项<dubbo:protocol>与注册中心配置项<dubbo:registry>。声明一点就是Dubbo支持多种通信协议,同时也支持多种服务注册中心。所以本文仅仅是讲解这两个标签的配置,具体每种协议发布或者是注册中心使用后面有文章进行介绍

二:服务协议 dubbo:protocol

服务协议配置中最核心的当属name属性指定协议类型,当然配置关联的id属性、port属性以及性能调优的threadpool线程池、serialization序列化方式等也比较重要

2.1 重要基础配置

在这里插入图片描述

属性 作用 默认值 描述
id 指定id,供service、reference使用 默认service、reference使用所有配置协议 <dubbo:servicer>与<dubbo:reference>中都有protocol配置属性,分别代表服务发布通信协议与指定消费通信协议类型。其中属性值默认为所有<dubbo:protocol>配置通信协议,如果指定则可以在属性值中填入<dubbo:protocol>配置项id属性值,以","隔开
name 指定协议名称 必填项 用以指定协议配置协议类型,比如dubbo代表Dubbo协议、http代表Http协议、rest代表Rest风格协议等
port 发布端口 dubbo默认20880、rmi默认1099、http和hessian默认80,-1则自动分配未占用端口 Dubbo消费服务除了在注册中心进行消费外,reference还能通过url属性进行直连消费,这时候的port就是必须的在url中指定的
register 是否发布 true service中可以通过register指定是否发布服务,protocol中也可以指定该类型协议服务是否发布
accesslog 访问日志输出 可以配置boolean类型标识开启关闭,也可以配置日志文件路径,直接将访问日志输出到日志文件中
server 协议的服务器端实现 dubbo协议缺省为netty,http协议缺省为servlet 例如在配置Rest协议的时候使用tomcat、jetty等
2.2 性能调优配置

在这里插入图片描述

属性 作用 默认值 描述
threadpool 指定线程池类型 fixed 可选类型有默认fixed加载时创建线程不会删除一直持有,以及cached空闲一分钟后删除线程,需要时再创建
threads 线程池固定大小 200 了解线程池组成的同学应该知道这个配置的含义,不知道的自己去学线程池
queues 线程池队列大小 0 核心线程占用完时会在线程池队列等待,官网建议不进行配置,直接不等待失败后重试其它服务机器
iothreads IO线程池大小 CPU + 1 Dubbo有两个线程池,上面说的threadspool是一个,剩下的就是这个IO线程池。可以通过dispatcher分配请求处理
payload 服务响应数据包大小 8M 不同协议有不同特点,这个属性可以限制不同场景服务下的数据传输容量
serialization 协议序列化方式 dubbo协议缺省为hessian2,rmi协议缺省为java,http协议缺省为json 后面会有章节讲协议序列化
dispatcher 协议消息派发方式 dubbo协议缺省为all 具体分派方式如下无序列表所示
charset 序列化编码 UTF-8 没有啥特殊要求吧,个人理解在国内而言
  • all :所有消息都派发到线程池,包括请求,响应,连接事件,断开事件,心跳等
  • direct: 所有消息都不派发到线程池,全部在 IO 线程上直接执行
  • message: 只有请求响应消息派发到线程池,其它连接断开事件,心跳等消息,直接在 IO 线程上执行
  • execution :只有请求消息派发到线程池,不含响应,响应和其它连接断开事件,心跳等消息,直接在 IO 线程上执行
  • connection :在 IO 线程上,将连接断开事件放入队列,有序逐个执行,其它消息派发到线程池
2.3 个人想法

协议这块的配置除了id、name、port常规配置外。比较常用的调优就俩方面,线程池相关的threadpoool、threads、iothreads、dispatcher以及协议序列化方式serialization。其余的配置个人理解基本不会太常规使用,可能我见识少,有这方面经验的朋友可以交流下

三:注册中心 dubbo:registry

Dubbo支持向多种以及多个注册中心发布服务,注册中心的配置就是用标签<dubbo:registry>进行配置

3.1 重要基础配置

在这里插入图片描述

属性 作用 默认值 描述
id 指定id,供service、reference使用 默认service、reference向所有注册中心发布服务 <dubbo:servicer>与<dubbo:reference>中都有registry配置属性,分别代表服务发布注册中心与指定消费注册中心地址。其中属性值默认为所有<dubbo:registry>配置注册中心,如果指定则可以在属性值中填入<dubbo:registry>配置项id属性值,以","隔开
address 注册中心地址 如果一个配置项代表多个注册中心,需要使用","进行隔开,注册中心协议类型可以在属性中配置,当然也可以通过protocol属性配置
protocol 注册中心通信协议 dubbo zookeeper注册中心的zookeeper、Redis的redis等等
port 注册中心缺省端口 9090 当配置address没有携带注册中心端口时使用本端口
username 注册中心用户名 如果注册中心不需要验证则可以不写
password 注册中心密码 注册中心不需要验证不写
file 注册中心地址以及服务提供者列表缓存文件,当服务重启时将根据此文件重启。不同注册中心不能使用同一文件
check 注册中心存在检查 true 当注册中心不存在时是否进行报错
register 是否注册 true 设置为false将只订阅不注册
subscrible 是否订阅 true 设置为false将只注册不订阅
group 注册中心分组 向同一注册中心可以分组注册,不同分组之间的服务不能相互调用也不会相互影响
  • 最核心的配置为address,其中的注册中心协议protocol可以设置,注册中心端口port可以设置
  • id属性供给service与reference消费
  • group可以对注册中心分组
  • 注册中心验证采用username与password两个属性配置
  • 当然如果想要限定只注册不订阅通过subscrible,只订阅不注册可以同属register