-
Notifications
You must be signed in to change notification settings - Fork 334
PhxQueue配置
PhxQueue的配置分为两类:队列配置和服务器配置。队列配置控制队列的整体参数,需要在所有服务器上部署且保证内容一致,默认实现的队列配置采用json格式。服务器配置只在相应的模块机器上部署,控制当前服务器的特殊参数。
队列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配置的路径 |
队列Topic配置设定一个Topic的具体参数,文件路径为etc/topicconfig.conf
。
一个Topic有多个Publisher(发布者)和Subscriber(订阅者)。每个Publisher关联到多个Queue(类似于Kafka中的Partition)。
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组设置,有以下子配置项:
配置项 | 说明 | 类型 | 例子 |
---|---|---|---|
queue_info_id |
Queue组的唯一ID | int32, 必须 | 1 |
ranges |
Queue组的范围列表 | string, 必须 | ["0-4", "10-12"] |
Publisher设置,有以下子配置项:
配置项 | 说明 |
---|---|
pub_id |
Publisher的唯一ID |
sub_ids |
关联的Subscriber列表 |
queue_info_ids |
Queue组的列表 |
Subscriber设置,有以下子配置项:
配置项 | 说明 |
---|---|
sub_id |
Subscriber的唯一ID |
use_dynamic_scale |
是否使用Scheduler进行负载均衡 |
skip_lock |
是否跳过Lock抢锁机制 |
文件路径为etc/storeconfig.conf
。
stores
根配置项为Store的数组,每个Store包含以下配置项:
配置项 | 说明 |
---|---|
store_id |
Store的唯一ID |
addrs |
各个节点地址的数组 |
scale |
该Store的权重 |
pub_ids |
关联的PublisherID |
文件路径为etc/consumerconfig.conf
。
文件路径为etc/schedulerconfig.conf
。
文件路径为etc/lockconfig.conf
locks
根配置项为Lock的数组,每个Lock包含以下配置项:
配置项 | 说明 |
---|---|
lock_id |
Lock的唯一ID |
addrs |
各个节点地址的数组 |
scale |
该Lock的权重 |
配置一个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]
},
...
]
}
配置节 | 说明 |
---|---|
[Server] |
服务器基本设置 |
[Log] |
日志设置 |
[ServerTimeout] |
服务器超时设置 |
文件路径为etc/store_server.0.conf
,配置中的数字替换为相应服务器节点的编号。
Store模块独有设置在[Store]
节中:
配置项 | 说明 | 类型 |
---|---|---|
Topic |
所属Topic | string |
DataDirPath |
数据目录路径 | string |
PhxQueueGlobalConfigPath |
全局配置路径 | string |
PaxosPort |
Paxos端口 | int32 |
NPaxosIOThread |
Paxos IO线程数 | int32 |
文件路径为etc/consumer_server.0.conf
,配置中的数字替换为相应服务器节点的编号。
文件路径为etc/scheduler_server.0.conf
,配置中的数字替换为相应服务器节点的编号。
Scheduler模块独有设置在[Scheduler]
节中:
配置项 | 说明 | 类型 |
---|---|---|
Topic |
所属Topic | string |
PhxQueueGlobalConfigPath |
全局配置路径 | string |
文件路径为etc/lock_server.0.conf
,配置中的数字替换为相应服务器节点的编号。
Lock模块独有设置在[Lock]
节中:
配置项 | 说明 | 类型 |
---|---|---|
Topic |
所属Topic | string |
DataDirPath |
数据目录路径 | string |
PhxQueueGlobalConfigPath |
全局配置路径 | string |
PaxosPort |
Paxos端口 | int32 |