简介
PhxQueue的配置分为两类:队列配置和服务器配置。队列配置控制队列的整体参数,需要在所有服务器上部署且保证内容一致,默认实现的队列配置采用json格式。服务器配置只在相应的模块机器上部署,控制当前服务器的特殊参数。
1. 队列配置
1.1 队列Global配置
队列Global配置设定队列的总体参数,文件路径为etc/globalconfig.conf。
topic_infos根配置项为Topic的数组。每个Topic有以下配置项:
配置项
说明
topic_id
Topic的全局唯一ID(不要求连续)
topic_name
Topic的名字
topic_config_path
队列Topic配置的路径
store_config_path
队列Store配置的路径
consumer_config_path
队列Consumer配置的路径
scheduler_config_path
队列Scheduler配置的路径
lock_config_path
队列Lock配置的路径
1.2 队列Topic配置
队列Topic配置设定一个Topic的具体参数,文件路径为etc/topicconfig.conf。
一个Topic有多个Publisher(发布者)和Subscriber(订阅者)。每个Publisher关联到多个Queue(类似于Kafka中的Partition)。
topic配置项
Topic设置,有以下子配置项:
配置项
说明
类型
topic_id
Topic的全局唯一ID(需与队列Global配置中指定的一致)
int32, 必须
handle_ids
Handler列表
int32, 必须
items_byte_size_limit
一次入队的尺寸上限
int32, 不建议修改
batch_limit
一次出队的尺寸上限
int32, 不建议修改
store_paxos_batch_count
Store的Batch入队个数上限
int32
store_paxos_batch_delay_time_ms
Store的Batch入队时间上限
int32
store_adjust_master_rate_time_interval_s
Store调整master权重时间间隔
int32
consumer_lock_lease_time_s
Consumer租约时长
int32, 不建议修改
scheduler_get_scale_interval_s
Scheduler负载均衡准备时间
int32, 不建议修改
scheduler_load_balance_interval_s
Scheduler负载均衡时间间隔
int32, 不建议修改
scheduler_lock_lease_time_s
Scheduler租约时长
int32, 不建议修改
lock_adjust_master_rate_time_interval_s
Lock调整master权重时间间隔
int32
queue_infos配置项
Queue组设置,有以下子配置项:
配置项
说明
类型
例子
queue_info_id
Queue组的唯一ID
int32, 必须
1
ranges
Queue组的范围列表
string, 必须
["0-4", "10-12"]
pubs配置项
Publisher设置,有以下子配置项:
配置项
说明
pub_id
Publisher的唯一ID
sub_ids
关联的Subscriber列表
queue_info_ids
Queue组的列表
subs配置项
Subscriber设置,有以下子配置项:
配置项
说明
sub_id
Subscriber的唯一ID
use_dynamic_scale
是否使用Scheduler进行负载均衡
skip_lock
是否跳过Lock抢锁机制
1.3 队列Store配置
文件路径为etc/storeconfig.conf。
stores根配置项为Store的数组,每个Store包含以下配置项:
配置项
说明
store_id
Store的唯一ID
addrs
各个节点地址的数组
scale
该Store的权重
pub_ids
关联的PublisherID
1.4 队列Consumer配置
文件路径为etc/consumerconfig.conf。
1.5 队列Scheduler配置
文件路径为etc/schedulerconfig.conf。
1.6 队列Lock配置
文件路径为etc/lockconfig.conf
locks根配置项为Lock的数组,每个Lock包含以下配置项:
配置项
说明
lock_id
Lock的唯一ID
addrs
各个节点地址的数组
scale
该Lock的权重
1.7 队列配置示例:多订阅
配置一个Topic,该Topic的ID为1000;单个Publisher,ID为1;多个Subscriber,ID为1和2。
修改etc/topicconfig.conf如下:
{
"topic":
{
"topic_id": "1000",
"handle_ids": ["1", "2"],
},
"queue_infos":
[
{
"queue_info_id": "1",
"ranges": ["0"]
}
],
"pubs":
[
{
"pub_id": "1",
"sub_ids": ["1", "2"],
"queue_info_ids": ["1"]
}
],
"subs":
[
{
"sub_id": "1",
"use_dynamic_scale": "0",
"skip_lock": "1"
},
{
"sub_id": "2",
"use_dynamic_scale": "0",
"skip_lock": "1"
}
]
}
修改etc/consumerconfig.conf,指派Consumer处理Subscriber1和Subscriber2。确保相应Consumer的sub_ids配置如下或者不配置sub_ids(不配置则默认处理所有Subscriber):
{
"consumers":
[
{
...
"scale": "1000",
"sub_ids": [1, 2]
},
...
]
}
1.8 队列配置示例:多级重试
2. 服务器配置
2.1 服务器公共配置
配置节
说明
[Server]
服务器基本设置
[Log]
日志设置
[ServerTimeout]
服务器超时设置
2.2 Store服务器配置
文件路径为etc/store_server.0.conf,配置中的数字替换为相应服务器节点的编号。
Store模块独有设置在[Store]节中:
配置项
说明
类型
Topic
所属Topic
string
DataDirPath
数据目录路径
string
PhxQueueGlobalConfigPath
全局配置路径
string
PaxosPort
Paxos端口
int32
NPaxosIOThread
Paxos IO线程数
int32
2.3 Consumer服务器配置
文件路径为etc/consumer_server.0.conf,配置中的数字替换为相应服务器节点的编号。
2.4 Scheduler服务器配置
文件路径为etc/scheduler_server.0.conf,配置中的数字替换为相应服务器节点的编号。
Scheduler模块独有设置在[Scheduler]节中:
配置项
说明
类型
Topic
所属Topic
string
PhxQueueGlobalConfigPath
全局配置路径
string
2.5 Lock服务器配置
文件路径为etc/lock_server.0.conf,配置中的数字替换为相应服务器节点的编号。
Lock模块独有设置在[Lock]节中:
配置项
说明
类型
Topic
所属Topic
string
DataDirPath
数据目录路径
string
PhxQueueGlobalConfigPath
全局配置路径
string
PaxosPort
Paxos端口
int32