Skip to content

配置参考

本文是 Zeze XML 配置的完整参考——覆盖 <zeze> 全局属性、DatabaseConfTableConfServiceConf、网络握手、Acceptor/Connector、GlobalCacheManagers、ServiceManager 等所有配置元素及其属性,供运维和调优时随查随用。数据库选型见 选配数据库,上线检查见 上线清单

根元素 <zeze> 携带全局配置属性:

属性默认值说明
ServerId分布式必需。Server 为正整数,Linkd 可为负数
Name未使用,供扩展
CheckpointPeriod60000Checkpoint 周期(毫秒)
CheckpointModeTableTable(按表批量刷写,默认,分布式必须)/ Immediately(每事务立即,源码中标注为不可用)
CheckpointFlushModeMultiThreadMergeSingleThread / MultiThread / SingleThreadMerge / MultiThreadMerge(推荐,默认)
CheckpointModeTableFlushSetCount50
CheckpointTransactionPeriod300000
NoDatabasefalseLinkd 等设 true
GlobalCacheManagerHostNameOrAddress单台 ip / 多台 ip1:port1;ip2:port2 / Raft 版见 GlobalCacheManagersConf / 空不启用
GlobalCacheManagerPort
ServiceManager"""" 默认单点 / raft / disable
OnlineLogoutDelay60000
WorkerThreads0(0 时按 processors*30 自动设置)普通业务线程池容量
ScheduledThreads0(0 时按 processors 自动设置)调度线程池容量
ProcessReturnErrorLogLevelINFO
AllowReadWhenRecordNotAccessedtrue
FastRedoWhenConflictfalse
AutoResetTablefalse
DelayRemoveHourStart3
DelayRemoveHourEnd7
DelayRemoveDays7
OfflineTimerLimit200
ProviderThreshold2000
ProviderOverload4000
HotWorkingDir""(空串,即当前目录)热更新工作目录
HotDistributeDirdistributes热更新分发目录
DeadLockBreakerPeriod60000
ProcedureLockWatcherMin50
AppVersion应用版本(表名后缀 @AppMainVersion 用到)
History
<zeze ServerId="1"
CheckpointPeriod="60000"
CheckpointMode="Table"
CheckpointFlushMode="MultiThreadMerge"
GlobalCacheManagerHostNameOrAddress="127.0.0.1"
GlobalCacheManagerPort="5533">
...
</zeze>

属性必填说明
Name库名。空串表示默认库
DatabaseType见下方类型表
DatabaseUrl连接串,见下方示例
DatabaseName库名(MongoDB 等需要)
DistTxn分布式事务,仅 TiKV
DisableOperates禁用的操作
类型说明
Memory纯内存
MySqlMySQL
PostgreSQLPostgreSQL
MongoDbMongoDB
SqlServerSQL Server
TikvTiKV
RocksDbRocksDB
RedisRedis
DynamoDbDynamoDB(当前版本工厂未接线,配置即抛异常,不可用
Dbh2Dbh2
DatabaseTypeDatabaseUrl 示例
Memory
MySqljdbc:mysql://127.0.0.1:3306/db
PostgreSQLjdbc:postgresql://127.0.0.1:5432/db
MongoDbmongodb://127.0.0.1:27017(配合 DatabaseName
RocksDb./rocksdb_data(路径)
Tikv172.21.15.68:2379
Dbh2dbh2://127.0.0.1:10999/dbh2_unittest

<DruidConf> 子节点(关系型连接池)

Section titled “<DruidConf> 子节点(关系型连接池)”
属性说明
DriverClassNameJDBC 驱动类名
UserName用户名
Password密码
InitialSize初始连接数
MinIdle最小空闲
MaxActive最大活跃
MaxWait最大等待
MaxOpenPreparedStatements最大预编译语句
PhyMaxUseCount物理连接最大使用次数
PhyTimeoutMillis物理连接超时
属性默认值说明
regionCN_NORTH_1区域
<DatabaseConf Name="" DatabaseType="MySql"
DatabaseUrl="jdbc:mysql://127.0.0.1:3306/game">
<DruidConf DriverClassName="com.mysql.cj.jdbc.Driver"
UserName="root" Password="***"
InitialSize="5" MinIdle="5" MaxActive="50"/>
</DatabaseConf>
<DatabaseConf Name="" DatabaseType="RocksDB" DatabaseUrl="./rocksdb_data"/>
<DatabaseConf Name="" DatabaseType="Memory"/>

属性默认值说明
Name表名。空串表示默认配置(应用于所有表)
CacheCapacity最重要。建议设为预期在线人数;实际 = CacheCapacity × CacheFactor
CacheFactor5.0容量因子
CacheInitialCapacity缓存初始容量
CacheNewAccessHotThreshold新热点段阈值
CacheCleanPeriod缓存清理周期
CacheNewLruHotPeriod新 LRU 热点周期
CacheMaxLruInitialCapacityLRU 最大初始容量
CacheCleanPeriodWhenExceedCapacity超容量时清理周期
CheckpointWhenCommitfalse提交时即刷写,适用关键数据
DatabaseName指定该表使用的库
DatabaseOldName旧库名(数据迁移)
DatabaseOldMode旧库模式(数据迁移)
<!-- 默认配置(应用于所有表) -->
<TableConf Name="" CacheCapacity="10000" CacheFactor="5.0"/>
<!-- 关键数据:提交即刷写 -->
<TableConf Name="tAccount" CheckpointWhenCommit="true"/>
<!-- 指定库 -->
<TableConf Name="tLog" DatabaseName="logDb"/>

属性默认值说明
Name服务名
NoDelay游戏建议 true
SendBuffer发送缓冲,支持 K/M 后缀
ReceiveBuffer接收缓冲,支持 K/M 后缀
InputBufferMaxProtocolSize2M最大协议大小,防攻击
OutputBufferMaxSize输出缓冲最大
Backlog连接队列
maxConnections1024最大连接数
CloseWhenMissHandle无处理器时关闭连接
TimeThrottle流控(queue / counter
TimeThrottleSeconds流控时间窗口
TimeThrottleLimit流控限额
TimeThrottleBandwidth带宽流控
OverBandwidth超带宽阈值
OverBandwidthFusingRate1.0超带宽熔断率
OverBandwidthNormalRate0.7超带宽正常率
DhGroups握手 DH 组
SecureIp安全 IP
RsaPubKeyRSA 公钥
RsaPriKeyFileRSA 私钥文件
CompressS2c服务端到客户端压缩(0 关 / 1 MPPC / 2 Zstd)
CompressC2s客户端到服务端压缩
EncryptType加密类型(0 关 / 1 AES)
KeepCheckPeriod心跳检查周期
KeepRecvTimeout接收超时
KeepSendTimeout发送超时
HaProxyKeyHAProxy 密钥
机制说明
TimeThrottlequeue / counter 两种限流
OverBandwidth超带宽阈值,配合熔断率/正常率
属性说明
DhGroupsDH 握手组
SecureIp安全 IP 白名单
CompressS2c / CompressC2s压缩(0/1 MPPC/2 Zstd)
EncryptType加密(0 关 / 1 AES)
KeepCheckPeriod / KeepRecvTimeout / KeepSendTimeout心跳
HaProxyKeyHAProxy 代理密钥
<ServiceConf Name="GameServer" NoDelay="true"
SendBuffer="1M" ReceiveBuffer="1M"
InputBufferMaxProtocolSize="2M"
maxConnections="1024"
CompressS2c="2" EncryptType="1"/>

属性说明
Ip监听 IP,支持 @internal / @external
Port端口
<Acceptor Ip="@external" Port="20000"/>
<Acceptor Ip="@internal" Port="20001"/>
属性默认值说明
HostNameOrAddress主机名或地址
Port端口
IsAutoReconnect是否自动重连
MaxReconnectDelay8最大重连延迟(XML 中单位为秒,框架内部解析时 ×1000 转为毫秒;最小 1000 毫秒)
<Connector HostNameOrAddress="127.0.0.1" Port="5533" IsAutoReconnect="true"/>
属性说明
Name名称
Path路径
IpIP
Port端口
<Websocket Name="wsGame" Path="/ws" Ip="0.0.0.0" Port="20002"/>

<GlobalCacheManagersConf> 全局缓存管理器(Raft 版)

Section titled “<GlobalCacheManagersConf> 全局缓存管理器(Raft 版)”

多台时配多个 <host>顺序须一致

<GlobalCacheManagersConf>
<host name="global.raft.xml"/>
<!-- 多台:顺序必须各实例一致 -->
<host name="global2.raft.xml"/>
</GlobalCacheManagersConf>
属性默认值说明
sessionName会话名
raftXmlRaft 配置
loginTimeout12000登录超时(毫秒)
<ServiceManagerConf sessionName="default" raftXml="sm.raft.xml" loginTimeout="12000"/>

设置 Java 系统属性(等价 -D):

属性说明
Key属性名
Value属性值
<Property Key="zeze.debug" Value="true"/>

自定义配置节点,由 Config.parseCustomize 解析。


<?xml version="1.0" encoding="UTF-8"?>
<zeze ServerId="1"
CheckpointPeriod="60000"
CheckpointMode="Table"
CheckpointFlushMode="MultiThreadMerge"
GlobalCacheManagerHostNameOrAddress="127.0.0.1"
GlobalCacheManagerPort="5533"
OnlineLogoutDelay="60000"
AppVersion="1">
<!-- 数据库:默认 MySQL + 日志库 -->
<DatabaseConf Name="" DatabaseType="MySql"
DatabaseUrl="jdbc:mysql://127.0.0.1:3306/game">
<DruidConf DriverClassName="com.mysql.cj.jdbc.Driver"
UserName="root" Password="***"
InitialSize="5" MinIdle="5" MaxActive="50"/>
</DatabaseConf>
<DatabaseConf Name="logDb" DatabaseType="MySql"
DatabaseUrl="jdbc:mysql://127.0.0.1:3306/gamelog"/>
<!-- 表配置 -->
<TableConf Name="" CacheCapacity="10000" CacheFactor="5.0"/>
<TableConf Name="tAccount" CheckpointWhenCommit="true"/>
<TableConf Name="tLog" DatabaseName="logDb"/>
<!-- 网络服务 -->
<ServiceConf Name="GameServer" NoDelay="true"
SendBuffer="1M" ReceiveBuffer="1M"
InputBufferMaxProtocolSize="2M"
maxConnections="1024"
CompressS2c="2" EncryptType="1"/>
<!-- 监听端点 -->
<Acceptor Ip="@external" Port="20000"/>
<Acceptor Ip="@internal" Port="20001"/>
<!-- 连接 GlobalCacheManager -->
<Connector HostNameOrAddress="127.0.0.1" Port="5533" IsAutoReconnect="true"/>
<!-- WebSocket -->
<Websocket Name="wsGame" Path="/ws" Ip="0.0.0.0" Port="20002"/>
<!-- Raft 版 GCM -->
<GlobalCacheManagersConf>
<host name="global.raft.xml"/>
</GlobalCacheManagersConf>
<!-- 服务管理器 -->
<ServiceManagerConf sessionName="default" raftXml="sm.raft.xml" loginTimeout="12000"/>
<!-- Java 系统属性 -->
<Property Key="zeze.debug" Value="false"/>
</zeze>