Skip to content

PhxQueue配置

Tao He edited this page Apr 24, 2018 · 19 revisions

简介

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