All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- zactor:新增
StartAsyncThen(零 Promise 快路径,worker 执行 + Actor 主线程回写)。 - zactor:
AsyncRun/AsyncRunWithMsg新增AsyncRunResult/AsyncRunWithMsgResult返回值语义,调用方可显式处理提交失败场景。 - zactor:新增
CallActorAll并发聚合调用能力;提交失败时立即回填RpcErr,避免阻塞等待; - zgate:新增
SetGateMonitorLogEnabled,支持实例级开关[Gate Monitor]周期日志(默认开启,兼容历史行为)。 - zstartup:
NewApp启动早期启用Grace.EnableSignalNotify,缩小启动窗口期信号竞态。 - 依赖:
github.com/aiyang-zh/zhenyi-base升级到v1.1.2(go.mod/go.sum同步)。
- 压测报告:新增
docs/BENCHMARK.md与docs/BENCHMARK_EN.md,统一公开 7 天稳态与 1 小时高压压测结论 - 压测归档:压测原始日志与截图改为归档在
zhenyi-site/docs/bench/(按场景目录 +logs.zip),主仓库文档改为引用归档路径。 - README 导航:
README.md/README_EN.md增加压测报告入口(docs/BENCHMARK.md/docs/BENCHMARK_EN.md)。
- zactor:新增
zactor/flow.go与zactor/flow_test.go,覆盖StartAsyncThen行为与回调线程语义。
- zactor:新增提交失败/验证失败路径测试(
CallActorAll、AsyncRunWithMsgResult),补齐 refcount 与不阻塞保证。 - zgate:新增
SetGateMonitorLogEnabled覆盖测试,验证开关与 nil receiver 安全行为。
- zactor/group:
Group.Run启动流程改为“失败返回错误 + 回滚已成功 Actor(Close + Unregister)”,不再在初始化失败时直接Fatal退出;并将watchActor启动时机后移到全部本地 Actor 启动成功之后。 - zactor:
Actor.Close的mailBoxQueue.Close与workerPool.Release移入closeOnce,重复关闭路径更安全。 - zstartup:
App.Run收敛为统一且幂等的 shutdown 路径(信号退出与启动失败共用);启动失败时也会执行 best-effort 清理。 - ziface:
IGroup收敛为统一关闭入口Close(ctx);不再暴露CloseScriptEngines等实现细节方法。 - zdiscovery/noop:
Watchchannel 改为带缓冲,降低误用写入时发送方阻塞风险(noop 语义保持不变)。 - zgate:补充
sendClient在连接已关闭竞态下的 debug 日志,便于排障。
- zgate:
WithNetServerHook(func(IServer))— 底层 ztcp/zws/zkcp Server 创建并完成 TLS/encrypt/shared-send 注入后回调,便于对znet.BaseServer等做额外调参(如SetHeartbeatTimeout);多次注册按顺序链式执行。 examples/mmo_web_demo:进入房间后向新房及(换房时的)旧房广播world_snapshot,同步房内其他客户端列表。examples/mmo_web_demo:enter_ack/world_snapshot增加attackRange;Web 端绘制脚下近战攻击范围圈并与服务端一致。- 文档:
docs/EXAMPLES.md/docs/EXAMPLES_EN.md增加im_single_demo_bench说明与运行示例。
examples/mmo_web_demo:pickAttackTarget在显式targetId不可攻击时 不再 退化为「打最近」;flushRespawns改为接收调用方传入的 时间戳(与 Tick/消息处理一致)。examples/mmo_web_demo(Web):Shift+点击 使用与角色精灵一致的 AABB 命中,并按绘制顺序 逆序 命中最上层目标。
examples/mmo_web_demo:修复仅enter_ack发给新连接、先进入者需等待MSG_MOVE才能看到后进者的问题。- zactor:修复 Actor 空闲时 CPU 过高(调整空闲 backoff 的 sleep 粒度,避免忙等空转)。
docs/MODULE_API.md/docs/MODULE_API_EN.md、zgate/README.md:补充WithNetServerHook。examples/im_single_demo/README.md:补充 TLS/GM-TLS 说明及--reactor、--sharedSendWorker参数表项。examples/mmo_web_demo/README.md:说明 Demo 通过WithNetServerHook禁用空闲读超时以便本地体验。
- zgate:
SetReactorMode(bool)— 在 TCP、无传输层 TLS/GM-TLS、底层为*ztcp.Server时走ztcp.ServerReactor(Linux epoll / macOS kqueue);否则保持原Server(ctx)。 - zgate:
SetSharedSendWorkerMode(bool)— 将底层长连接IServer(ztcp / zws / zkcp,经znet.BaseServer)切到 共享写 worker(默认 关闭,与历史行为一致)。 - 示例:
im_single_demo/im_multi_demo增加--reactor、--sharedSendWorker,并调用上述 Gate API。 examples/mmo_web_demo:浏览器 MMO 示例补充战斗循环(攻击、HP、阵亡、延迟重生、冷却与范围判定)。examples/mmo_web_demo:world_snapshot/combat_event按zaoi(WorldManager+Zone+StaticAoi九宫格与视距)做 AOI 过滤下发。- zactor:
SendToClient在总耗时超过zmodel框架调优中的SlowLogThreshold时打 Warn,并拆分记录 前半段处理耗时 与SendMsg耗时。 - 测试(fuzz):
zcodec/zroute/zaoi/zactor/ztrace/zdiscovery/zgate/zmsg/zscript等包增加go test -fuzz入口(不 panic、关键路径断言)。
examples/im_multi_client_load:收包回调内 recv 计数改为 批量 flush 到全局原子,降低高并发下recv原子竞争(统计语义仍为「收到回包数」量级)。
zgate/zmsg:修复核心模块 fuzz 相关测试,使其可正确编译运行。
- 文档同步更新:
docs/EXAMPLES.md、docs/EXAMPLES_EN.md、docs/MODULE_API.md、docs/MODULE_API_EN.md、zgate/README.md,补充--reactor/--sharedSendWorker与mmo_web_demo的使用说明。
-
Actor 运行时 (zactor)
- 单 Actor 单 mailbox(MPSC 无锁队列)
- 消息处理、Tick、RPC、Dispatcher 扩展
- CircuitBreaker 熔断器
- Watchdog 看门狗监控
-
统一网关 (zgate)
- TCP / WebSocket / KCP 长连接支持
- 可选 HTTP 服务 (zhttp)
- TLS / GM-TLS (国密) 支持
- Session 管理与路由策略
-
服务发现 (zdiscovery)
- Etcd 实现
- Noop 空实现(单机/测试用)
-
路由 (zroute)
- FirstCandidateStrategy(首选候选)
- RoundRobinStrategy(轮询)
- RendezvousHashStrategy(一致性哈希)
-
消息总线 (znats / zbus)
- NATS 连接池与广播
- 总线抽象
-
可观测性
- zmetrics: Prometheus 指标导出
- zmonitor: 运行时监控数据
- ztrace: W3C traceparent 链路追踪
- zpyroscope: 可选 Grafana Pyroscope 持续剖析(与
zmetrics解耦);重导出Config/Profiler等,业务仅需import本包,无需直接依赖github.com/grafana/pyroscope-go
-
脚本引擎(5种)
- zjs: JavaScript 引擎
- ztengo: Tengo 脚本
- zlua: Lua 引擎
- zstarlark: Starlark 脚本
- zscript: 通用脚本接口
-
其他模块
- zaoi: 九宫格 AOI(空间邻近)
- zcheck: 健康检查
- zconfig: 配置管理
- zmodel / zmsg: 消息模型与序列化
- 文档索引:
docs/DOCS_INDEX.md(架构、监控、模块 API、示例与图书等入口)
- 单机压测数据:500 连接 / 10K QPS
- RTT P50: ~5.5ms
- RTT P99: ~34ms
- 内存占用: ~28MB
- GC 暂停占比: <0.1%
- AGPL-3.0 + 商业双授权
- 依赖库 zhenyi-base 为 MIT 授权
| 版本 | 日期 | 说明 |
|---|---|---|
| 0.1.1 | 2026-04-03 | zgate WithNetServerHook、mmo 进入房间快照同步与近战范围展示、文档与示例补充 |
| 0.1.1 | 2026-04-02 | 网关 reactor/共享写开关、MMO AOI+战斗示例、fuzz 覆盖扩展 |
| 0.1.0 | 2026-03-27 | 首次开源 |