Zhenyi Zhenyi
MIT 开源 · 按需引入

zhenyi-base 基础工具库

无锁队列、对象池、网络核心、日志与序列化等积木式组件,不带业务预设;任意 Go 项目都能直接用,也是 Zhenyi 后台的底层依赖。

zhenyi-base GitHub stars zhenyi-base GitHub forks MIT Go 1.24+ 热路径低分配 · 无锁优先
安装
go get github.com/aiyang-zh/zhenyi-base
GitHub 仓库 阅读文档 返回首页

概览

按包引入,只编译用到的模块;与 Zhenyi 主项目解耦,也可单独用在工具、网关、中间件里做性能敏感路径。若要系统读框架与 Actor,可配合主仓库里的《Go Actor 模型与实时应用》开源书稿。

快速上手 · 先试试基础库

下面几段代码都来自 zhenyi-base,粘进 main.go 后执行 go run . 即可跑通。若要跑完整的 Zhenyi 示例,请看仓库里的 examples

zserver

3 步启动,收到什么回什么。另开终端运行 go run ./examples/echodemo/client/main.go 即可验证

package main

import (
    "fmt"
    "github.com/aiyang-zh/zhenyi-base/zserver"
)

func main() {
    s := zserver.New(zserver.WithAddr(":9001"))
    s.Handle(1, func(req *zserver.Request) {
        fmt.Printf("收到: %s\n", string(req.Data()))
        req.Reply(1, req.Data())
    })
    s.Run()
}
zqueue · 零依赖

MPSC 多生产者单消费者队列,不拉入任何第三方依赖

package main

import "github.com/aiyang-zh/zhenyi-base/zqueue"

func main() {
    q := zqueue.NewMPSCQueue[int](1024)
    q.Enqueue(42)
    q.Enqueue(100)
    val, ok := q.Dequeue()  // 42, true
    val2, _ := q.Dequeue()  // 100, true
}
zpool · 零依赖

按类型池化对象,减少 GC,支持任意 T

package main

import "github.com/aiyang-zh/zhenyi-base/zpool"

type MyObject struct{ Data []byte }

func main() {
    pool := zpool.NewPool(func() *MyObject {
        return &MyObject{Data: make([]byte, 0, 1024)}
    })
    obj := pool.Get()
    defer pool.Put(obj)
    obj.Data = append(obj.Data, 'H', 'i')
}

性能一览 · 基础库压测

图表来自 zhenyi-base 压测数据;Zhenyi 主项目在性能与工程取向上与之对齐(细项以各模块基准与文档为准)。测试环境:darwin/arm64 · Apple M3 · Go 1.24+

Network Echo 压测 (msg/s)

核心组件基准 (ns/op,越低越好)

zqueue vs Channel:生产者数量对延迟的影响 (Medium 4096B, Batch)

数据与 zqueue-deep-dive 一致。复现:go test -bench=BenchmarkMatrix -benchmem ./zqueue/

底层性能数据来自 zhenyi-base:核心指标 · zqueue 96 组基准原始数据

合作方式

开源贡献

欢迎通过 GitHub 提交 Issue、PR,参与文档完善、Bug 修复或新功能开发。

zhenyi 贡献指南 →

基础库:zhenyi-base CONTRIBUTING

商业合作

企业授权、定制开发、技术咨询等合作需求,欢迎来信洽谈。

联系我们 →

安全反馈

如发现安全漏洞,请通过邮件私下反馈,我们会及时响应处理。

安全报告 →