跳到主要内容
版本:latest

配置详情

Phoenix 配置列表

聚合根配置请参考: 注解解析器

Phoenix-Core 配置

配置项描述类型默认值
quantex.phoenix.core.hash-function默认的哈希函数enumMURMUR2, 可选(MURMUR2,DEK,DJB)
quantex.phoenix.core.custom-hash-function自定义哈希函数String无,输入类名(全限定类路径)

Phoenix-Akka 配置

配置项描述类型默认值
quantex.phoenix.akka.akka-confactorSystem的配置文件路径String
quantex.phoenix.akka.service-name服务名String服务名
quantex.phoenix.akka.artery-canonical-port远程服务器端口Int2551
quantex.phoenix.akka.artery-canonical-hostname远程服务器地址String127.0.0.1
quantex.phoenix.akka.method服务发现的方式Stringakka-dns
quantex.phoenix.akka.management-http-port用于集群管理的端口Int8558
quantex.phoenix.akka.management-http-bind-hostname绑定内部(0.0.0.0:8558)String0.0.0.0
quantex.phoenix.akka.required-contact-point-num要求集群最少节点数量(小于此值时无法建立集群)Int1
quantex.phoenix.akka.required-all-points是否强制和服务发现的所有节点通信(对于 Eureka 这类非强一致且不带健康检查的服务发现,推荐改为 false)booleantrue
quantex.phoenix.akka.enable-priority是否支持消息处理优先级Booleanfalse
quantex.phoenix.akka.enable-remember是否开启记住实体功能Booleantrue
quantex.phoenix.akka.starvation-detector.enabled是否开启饥饿检测器Booleanfalse
quantex.phoenix.akka.starvation-detector.max-delay-warning-threshold线程池阻塞阈值(ms),此默认较高,可适当降低Longtrue
quantex.phoenix.akka.starvation-detector.warning-interval警告输出间隔(ms)Longtrue
quantex.phoenix.akka.starvation-detector.checker-interval检查执行间隔 (ms) 可适当降低,较高的间隔也许会错过部分短期的阻塞Longtrue
quantex.phoenix.akka.starvation-detector.checker-initial-delay初始化检测任务延迟(ms)Longtrue
quantex.phoenix.akka.pipeline.capacity集群线程池计算任务最大容量int1000
quantex.phoenix.akka.pipeline.parallelism集群线程池最大并行度int8
quantex.phoenix.akka.pipeline.timeout集群线程池计算任务超时时间long30000
quantex.phoenix.akka.pipeline.dispatcher集群线程池调度程序(在单个节点上使用多少线程)Stringdistributed-computing-pool-dispatcher

Phoenix-Cluster 配置

配置项描述类型默认值
quantex.phoenix.cluster.discovery-method集群发现的方式Enumconfig
可选值:
config|kubernetes
consul|nacos |eureka
kubernetes_dns
quantex.phoenix.cluster.heart-beat-interval检索集群状态的心跳间隔Long30000
quantex.phoenix.cluster.wait-confirm-time等待集群confirm最大时间Long300000
quantex.phoenix.cluster.data-center.enable-standby是否开启热备Listakka:// + 服务名 + @127.0.0.1:2551
quantex.phoenix.cluster.data-center.data-center-name热备节点标识Listakka:// + 服务名 + @127.0.0.1:2551
quantex.phoenix.cluster.data-center.jdbc.management-table-name热备状态维护表名Listakka:// + 服务名 + @127.0.0.1:2551
quantex.phoenix.cluster.data-center.jdbc.data-source.url数据库 连接urlString
quantex.phoenix.cluster.data-center.jdbc.data-source.username数据库账户String
quantex.phoenix.cluster.data-center.jdbc.data-source.password数据库密码String
quantex.phoenix.cluster.data-center.jdbc.data-source.label数据源labelString默认 default
可选值:
default
reliability
quantex.phoenix.cluster.data-center.jdbc.data-source.initial-size初始连接池大小int2
quantex.phoenix.cluster.data-center.jdbc.data-source.min-idle最小连接池大小int2
quantex.phoenix.cluster.data-center.jdbc.data-source.max-active最大连接池大小int8
quantex.phoenix.cluster.config.seed-node集群的初始接触点Listakka:// + 服务名 + @127.0.0.1:2551
quantex.phoenix.cluster.kubernetes.pod-label-selectorKubernetes 集群时,服务发现的pod标签Stringapp=%s
quantex.phoenix.cluster.kubernetes.k8s-pod-domainKubernetes 集群时,服务发现默认集群域名后缀Stringcluster.local
quantex.phoenix.cluster.kubernetes-dns.port-nameKubernetes-DNS 集群时,Akka-Management 端口在 Kubernetes 上的端口名Stringapp=%s
quantex.phoenix.cluster.kubernetes-dns.headless-service-nameKubernetes-DNS 集群时, 上述开放 Management 端口的服务名Stringcluster.local
quantex.phoenix.cluster.consul.consul-hostConsul集群模式下,Consul的地址String127.0.0.1
quantex.phoenix.cluster.consul.consul-portConsul集群模式下,Consul的端口Int8500
quantex.phoenix.cluster.consul.group-nameConsul 集群模式下,分组的组名StringDEFAULT_GROUP
quantex.phoenix.cluster.nacos.nacos-hostNacos 集群模式下,Nacos 的地址String127.0.0.1
quantex.phoenix.cluster.nacos.nacos-portNacos 集群模式下,Nacos 的端口Int8848
quantex.phoenix.cluster.nacos.group-nameNacos 集群模式下,分组的组名StringDEFAULT_GROUP
quantex.phoenix.cluster.eureka.eureka-hostEureka 集群模式下,Eureka 的地址String127.0.0.1
quantex.phoenix.cluster.eureka.eureka-portEureka 集群模式下,Eureka 的端口Int8761
quantex.phoenix.cluster.eureka.eureka-pathEureka 集群模式下,Eureka 的资源路径Stringeureka
quantex.phoenix.cluster.eureka.group-nameEureka 集群模式下,分组的组名StringDEFAULT_GROUP
quantex.phoenix.cluster.eureka.renew-interval可选参数,Eureka 集群模式下, 续租间隔Long30000
quantex.phoenix.cluster.eureka.home-page-url可选参数,注册到 Eureka 的主页 URLString默认为 IP + servicePort
quantex.phoenix.cluster.eureka.status-page-url可选参数,注册到 Eureka 的状态 URLString默认为 Akka 集群探针
quantex.phoenix.cluster.eureka.health-page-url可选参数,注册到 Eureka 的健康 URLString默认为 Akka 集群探针
quantex.phoenix.cluster.eureka.service-port可选参数,附加在 URL 上的端口Int80

Phoenix-Server 配置

配置项描述类型默认值
quantex.phoenix.server.nameServer端服务名String
quantex.phoenix.server.packageName聚合根包所在路径String
quantex.phoenix.server.method-lookup-strategy-class-name聚合根方法查询策略Stringcom.iquantex.phoenix.server.aggregate.cls.SegmentAggregateRelatedStrategy
quantex.phoenix.server.dgc-enableDGC 功能开关Booleantrue
quantex.phoenix.server.license认证license,需要向Phoenix官方申请String
quantex.phoenix.server.default-serializer默认的序列化类型String默认 protostuff
可选值:
protostuff
java
protobuf
json
quantex.phoenix.server.ddata-utc-clock是否使用UTC时区的系统时钟Booleantrue
quantex.phoenix.server.console.enabled是否开启 Phoenix 运维工具Booleanfalse
quantex.phoenix.server.console.exception-max-sizePhoenix 运维工具异常事件最大保存数量(每个节点)Int20
quantex.phoenix.server.entity-aggregate-enable实体聚合根开关Booleantrue
quantex.phoenix.server.transaction-aggregate-enable事务聚合根开关Booleantrue
quantex.phoenix.server.mq.consumer-typeMQ 消费者模式Enumpoll
可选值:
push, poll
quantex.phoenix.server.mq.addressMQ 服务端地址String
quantex.phoenix.server.mq.partition-selector-class-name自定义分区选择器实现类全路径名(FQCN)String
quantex.phoenix.server.mq.propertiesMQ 通用配置,比如连接认证.map结构以key,value配置Map
quantex.phoenix.server.mq.groupServer端服务消费组名,对应kafka和rocketmq中的consumergroupStringServer端服务名
quantex.phoenix.server.mq.subscribe[].topic订阅的topicString
quantex.phoenix.server.mq.subscribe[].properties其他配置,比如ReceiverActor调优参数(#ReceiverOptimizedConfig)或者kafkaConsumer的配置map结构以key,value配置.此配置会覆盖mq.propertiesMapnull
quantex.phoenix.server.event-store.type选择数据库类型Enumjdbc
可选值:
jdbc, none, memory, async,详细区别请参考事件管理章节
quantex.phoenix.server.event-store.overflow-strategy缓存区溢出策略EnumFAIL
可选值:
FAIL, BACKPRESSURE, BACKOFF, DROP,详细区别请参考事件管理章节
quantex.phoenix.server.event-store.bulk-insert-thresholdBulkInsert 字节的最大阈值, 超出改字节数量则退回 BatchInsertlong6553600(64kb)
quantex.phoenix.server.event-store.delay背压溢出策略下, 等待缓冲区空闲的睡眠时间(ms)long50
quantex.phoenix.server.event-store.max-delayBackoff 溢出策略下, 重试的最大次数,超出退避为 FAILint40
quantex.phoenix.server.event-store.driver-class-name数据库驱动String可选值:
org.h2.Driver
com.mysql.jdbc.Driver
oracle.jdbc.OracleDriver
org.postgresql.Driver
com.mysql.cj.jdbc.Driver
quantex.phoenix.server.event-store.batch-persist批量持久化 批次大小int200
quantex.phoenix.server.event-store.buffer-size持久化缓冲区大小int500
quantex.phoenix.server.event-store.batch-read分页读取事件, 默认分页大小int100
quantex.phoenix.server.event-store.parallelism数据库插入线程池,保持和连接池数量一致, 避免资源浪费、不足)int8
quantex.phoenix.server.event-store.event-table-name事件存储表名Stringevent_store
quantex.phoenix.server.event-store.snapshot-table-name快照存储表名Stringsnapshot_store
quantex.phoenix.server.event-store.cluster-config-table-name集群配置表名Stringcluster_config
quantex.phoenix.server.event-store.event-query-type事件查询类型(!!!注意此参数会改变数据库表结构, 当切换时应清理并删除原有数据库表)EventQueryType默认: time
可选值:
time
slice
quantex.phoenix.server.event-store.aggregate-id-size表字段聚合根 Id 和 Type 的大小, 默认字符长度int255
quantex.phoenix.server.event-store.data-sources[].url数据库 连接urlString
quantex.phoenix.server.event-store.data-sources[].username数据库账户String
quantex.phoenix.server.event-store.data-sources[].password数据库密码String
quantex.phoenix.server.event-store.data-sources[].label数据源labelString默认 default
可选值:
default
reliability
quantex.phoenix.server.event-store.data-sources[].initial-size初始连接池大小int2
quantex.phoenix.server.event-store.data-sources[].min-idle最小连接池大小int2
quantex.phoenix.server.event-store.data-sources[].max-active最大连接池大小int8

Phoenix-Client 配置

配置项描述类型默认值
quantex.phoenix.client.enabled是否启动Booleantrue
quantex.phoenix.client.nameClient 端服务名String
quantex.phoenix.client.mq.addressMQ 服务端地址String
quantex.phoenix.client.mq.propertiesMQ 通用配置,比如连接认证.map结构以key,value配置Map
quantex.phoenix.client.mq.topicMQ 订阅 TopicString
quantex.phoenix.client.mq.groupClient 实现 RPC 所需 Consumer 的消费者组Stringphoenix@group@topic
quantex.phoenix.client.mq.partition-selector-class-name自定义分区选择器实现类全路径名(FQCN)String
quantex.phoenix.client.matching.timeout-millsRPC 匹配超时配置,超出该时间则移除(不匹配并抛出异常). 默认 10 分钟Long600_000
quantex.phoenix.client.matching.maximum-size最大容量. 默认为无界IntLong.MAX_VALUE
quantex.phoenix.client.subscribe.enabled开启订阅功能Booleanfalse

Phoenix-EventPublish 配置

配置项描述类型默认值
quantex.phoenix.event-publish.enabled总开关Booleantrue
quantex.phoenix.event-publish.shard-num数据源数量, 如 EventStore 使用多个源, 请设置为和源数量一致, 默认为 1int1
quantex.phoenix.event-publish.parallelism并行度int1
quantex.phoenix.event-publish.batch-size批量大小Int128
quantex.phoenix.event-publish.buffer-queue-size缓存队列大小Int64
quantex.phoenix.event-publish.min-backoff如果 EventPublish 异常停止,这是指数退避的初始化延迟long3,000
quantex.phoenix.event-publish.max-backoff如果 EventPublish 异常停止,这是指数退避的最大持续时间long30,000
quantex.phoenix.event-publish.backoff-factor计算下一次指数退避增加的额外延迟,例如0.2增加了20%的延迟double0.2
quantex.phoenix.event-publish.max-restart如果 EventPublish 异常停止,这是指数退避的最大重启次数intMAX
quantex.phoenix.event-publish.max-restart-timeout如果 EventPublish 异常停止,这是指数退避的最大重启次数的时间窗口long3,000
quantex.phoenix.event-publish.check-interval心跳检查启动频率long1,000
quantex.phoenix.event-publish.ack-timeout确认(Kafka、Actor)的超时时间long10,000
quantex.phoenix.event-publish.jdbc.partition-size分片大小, 部分数据库限制 WHERE IN 最大参数大小int500
quantex.phoenix.event-publish.jdbc.management-table-name热备状态维护表名Listakka:// + 服务名 + @127.0.0.1:2551
quantex.phoenix.event-publish.jdbc.data-source.url数据库 连接urlString
quantex.phoenix.event-publish.jdbc.data-source.username数据库账户String
quantex.phoenix.event-publish.jdbc.data-source.password数据库密码String
quantex.phoenix.event-publish.jdbc.data-source.label数据源labelString默认 default
可选值:
default
reliability
quantex.phoenix.event-publish.jdbc.data-source.initial-size初始连接池大小int2
quantex.phoenix.event-publish.jdbc.data-source.min-idle最小连接池大小int2
quantex.phoenix.event-publish.jdbc.data-source.max-active最大连接池大小int8
quantex.phoenix.event-publish.monitor-task.enabled监控发布任务 开关Boolean
quantex.phoenix.event-publish.monitor-task.es-server监控发布任务 上报ES服务地址String
quantex.phoenix.event-publish.d-data-task.broker-server分布式数据多播任务 Kafka 服务地址String
quantex.phoenix.event-publish.d-data-task.enabled分布式数据多播任务 开关Boolean
quantex.phoenix.event-publish.d-data-task.properties分布式数据多播任务 Kafka 自定义配置Map
quantex.phoenix.event-publish.d-data-task.partition-selector-class-name自定义分区选择器实现类全路径名(FQCN)String
quantex.phoenix.event-publish.event-task.enabled领域事件发布任务 开关Boolean
quantex.phoenix.event-publish.event-task.properties领域事件发布任务 Kafka 自定义配置Map
quantex.phoenix.event-publish.event-task.topic领域事件发布任务 Kafka TopicString
quantex.phoenix.event-publish.event-task.broker-server领域事件发布任务 Kafka 服务地址String
quantex.phoenix.event-publish.event-task.partition-selector-class-name自定义分区选择器实现类全路径名(FQCN)String

Phoenix-Kafka-Extend 配置

配置项描述类型默认值
quantex.phoenix.kafka.extend.enabled是否开启Kafka增强模式Booleanfalse
quantex.phoenix.kafka.extend.server-producer-enabled是否开启 Server 的 Consumer 增强Booleanfalse
quantex.phoenix.kafka.extend.client-consumer-enabled是否开启 Client 的 Producer 增强Booleanfalse
quantex.phoenix.kafka.extend.client-producer-enabled是否开启 Server 的 Producer 增强Booleanfalse
quantex.phoenix.kafka.extend.server-consumer-enabled是否开启 Server 的 Consumer 增强Booleanfalse
quantex.phoenix.kafka.extend.event-publish-producer-enabled是否开启 EventPublish 的 Producer 增强Booleanfalse
quantex.phoenix.kafka.extend.spring-consumer-enabled是否增加 Spring ConsumerFactory BeanBooleanfalse
quantex.phoenix.kafka.extend.spring-producer-enabled是否增加 Spring ProducerFactory BeanBooleanfalse
quantex.phoenix.kafka.extend.max-message-bytesSpring 自定义 Kafka 配置, Consumer 和 Producer 复用Map<String,String>
quantex.phoenix.kafka.extend.max-message-bytesProducer: 普通消息的最大大小,超出则开始切分. 默认 50kbLong51200
quantex.phoenix.kafka.extend.message-buffer-capacityConsumer: 用于缓冲不完整大消息段的内存总大小上限(默认是 30mbLong32000000
quantex.phoenix.kafka.extend.message-expiration-offset-gapConsumer: LargeMessage 起始 Offset 和当前 Offset 最大差距值,超出则认为 Large Message 已不完整。默认 1000Long1000
quantex.phoenix.kafka.extend.max-offset-track-pre-partitionConsumer: 每个分区要跟踪 Offset 的最大消息数,默认 500Long500

Phoenix-Stream-Kafka 配置

配置项描述类型默认值
quantex.phoenix.kafka.stream.commit.timeoutCOMMIT 超时时间, 默认 30slong30000
quantex.phoenix.kafka.stream.fetch.metrics.timeout查询 offset 进度超时时间, 默认 10slong10000
quantex.phoenix.kafka.stream.batch.size攒批配置,最大批次int500
quantex.phoenix.kafka.stream.batch.time.window最大时间窗口. 较长的时间会在频率较低的流量时获得更好的攒批效果, 以提高整体 带来的影响就是当客户端以同步的模式请求时, 延迟将会比较高.long50
quantex.phoenix.kafka.stream.retry.attempts最大重试次数int10
quantex.phoenix.kafka.stream.retry.delay重试间隔long200
quantex.phoenix.kafka.stream.deliver.timeout交付 record 的最大超时时间long1000
quantex.phoenix.kafka.stream.parallelismConsumer 并行度, 默认 1 降低资源消耗int1

配置样例

quantex:
phoenix:
server:
name: ${spring.application.name}
package-name: com.iquantex.phoenix
mq:
type: kafka
address: 127.0.0.1:9092
properties:
key: value
subscribe:
- topic: account
properties:
transactionReliabilityBatchRetry: 100
event-store:
driver-class-name: org.h2.Driver
data-sources:
- url: jdbc:h2:file:./data/test;DB_CLOSE_DELAY=-1;DATABASE_TO_UPPER=FALSE;INIT=CREATE SCHEMA IF NOT EXISTS PUBLIC
username: sa
password:
initial-size: 0
min-idle: 0
max-active: 8
client:
name: ${spring.application.name}-client
mq:
type: kafka
address: 127.0.0.1:9092
topic: account-client
properties:
key: value
event-publish:
batch-size: 64
buffer-queue-size: 64
from-begin: true
event-task:
enabled: true
broker-server: 127.0.0.1:9092
topic: bank-account-event-pub
properties:
key: value
d-data-task:
broker-server: 127.0.0.1:9092
enabled: true
properties:
key: value
monitor-task:
enabled: true
topic: bank-account-monitor

自定义Akka配置

因为 phoenix 中的部分功能依赖于 akka,所以存在一部分 akka 相关的配置。phoenix 已经抽取了一部分常用的配置集成到 phoenix-start 中,方便用户使用。 如果想要深入自定义 Akka 相关配置,可在项目Classpath目录下创建akka.conf文件进行配置。然后修改一下配置。

quantex:
phoenix:
akka:
akka-conf: akka.conf

Phoenix 调优参数

Kafka Consumer 调优参数

Phoenix 对消息的处理实现了背压机制, 当下游处理时延过高时会触发限流,针对业务上的不同场景,提供下列参数以供调优性能。

下列参数属于:quantex.phoenix.server.mq.propertiesquantex.phoenix.server.mq.subscribe[].properties, 前者是全局参数;后者是特定订阅的参数,且后者的优先级高于前者。

配置描述类型默认值
transactionReliabilityMaxAge(性能优化)在途事务最大年龄StringInteger.MAX_VALUE
transactionReliabilityRetryTimeIntervalMs(性能优化)消息重试投递等待间隔基数Long10000
transactionReliabilityBatchRetry(性能优化)批量重试批次大小Long50
limitMaxLiveThings(性能优化)在途消息最大存活数Long1000
finishThingsBatch(性能优化)接收到 ACK 次数后持久化Long250
pollDelayMs(性能优化)延迟下一次拉取消息的耗时Long10
minBackoff(监督机制)故障恢复重启的最小延迟Long1000
maxBackoff(监督机制)故障恢复重启的最小延迟Long60000
randomFactor(监督机制)故障恢复重启的的随机因子Long0.2
retryAttempts(Stream)Consumer 交付最大重试次数Long10
deliverTimeout(Stream)Consumer 交付最大重试超时时间Long1000
retryDelay(Stream)Consumer 交付重试间隔Long200
batchSize(Stream)Consumer 攒批大小Long500
batchTimeWindow(Stream)Consumer 攒批时间窗口Long50
parallelism(Stream)Consumer 并行度Long1
commitTimeout(Stream)Consumer Commit 超时时间Long1000
phoenix.retry.delay(初始化)Consumer 初始化重试间隔Long2000
phoenix.connection.timeout(初始化)Consumer 初始化连接超时时间(ms)Long10000
phoenix.max.connection.times(初始化)Consumer 初始化重试连接次数Int3