Directories
¶
| Path | Synopsis |
|---|---|
|
Package afterwork 提供请求级后台任务延寿(waitUntil 语义)。
|
Package afterwork 提供请求级后台任务延寿(waitUntil 语义)。 |
|
Package audit 提供操作审计日志:结构化记录"谁在何时对什么资源做了什么操作", 仅记录成功的请求(失败请求走普通日志),用于合规与运维审计。
|
Package audit 提供操作审计日志:结构化记录"谁在何时对什么资源做了什么操作", 仅记录成功的请求(失败请求走普通日志),用于合规与运维审计。 |
|
Package authz 提供授权(authorization)机制:在认证(pkg/middleware/auth、pkg/token 确认 "你是谁 + 有哪些角色")之上,判定"这个身份能否对某资源做某动作"。
|
Package authz 提供授权(authorization)机制:在认证(pkg/middleware/auth、pkg/token 确认 "你是谁 + 有哪些角色")之上,判定"这个身份能否对某资源做某动作"。 |
|
Package backoff 提供指数退避 + 抖动(jitter)的重试原语,纯标准库。
|
Package backoff 提供指数退避 + 抖动(jitter)的重试原语,纯标准库。 |
|
Package bitmap 提供位图:用 1 bit 表示一个布尔状态,极省内存的大规模标记与集合运算。
|
Package bitmap 提供位图:用 1 bit 表示一个布尔状态,极省内存的大规模标记与集合运算。 |
|
Package buildinfo 在运行时暴露构建信息(版本 / commit / 构建时间 / Go 版本 / 模块 / 是否 dirty),用于 /version 端点、启动日志、诊断。
|
Package buildinfo 在运行时暴露构建信息(版本 / commit / 构建时间 / Go 版本 / 模块 / 是否 dirty),用于 /version 端点、启动日志、诊断。 |
|
Package cache 提供有界内存缓存(带淘汰)与防击穿加载器,是 web/API 读路径的常用原语:
|
Package cache 提供有界内存缓存(带淘汰)与防击穿加载器,是 web/API 读路径的常用原语: |
|
Package callbacks 提供非侵入的执行切面:在某个执行单元的开始/结束/出错时机 触发回调,用于统一注入可观测性(trace、metrics、日志)而不改动业务代码。
|
Package callbacks 提供非侵入的执行切面:在某个执行单元的开始/结束/出错时机 触发回调,用于统一注入可观测性(trace、metrics、日志)而不改动业务代码。 |
|
Package chanx 提供无界 channel 等 channel 扩展原语。
|
Package chanx 提供无界 channel 等 channel 扩展原语。 |
|
Package circuitbreaker 提供熔断器原语:当下游错误率超过阈值时自动"断开"保护调用方, 经过冷却期后进入半开探测,探测成功则恢复、失败则继续断开。
|
Package circuitbreaker 提供熔断器原语:当下游错误率超过阈值时自动"断开"保护调用方, 经过冷却期后进入半开探测,探测成功则恢复、失败则继续断开。 |
|
client
|
|
|
grpcclient/resolver/consul
Package consul registers a Consul-backed gRPC name resolver.
|
Package consul registers a Consul-backed gRPC name resolver. |
|
grpcclient/resolver/etcd
Package etcd registers an etcd-backed gRPC name resolver.
|
Package etcd registers an etcd-backed gRPC name resolver. |
|
grpcclient/resolver/k8s
Package k8s registers a Kubernetes-backed gRPC name resolver.
|
Package k8s registers a Kubernetes-backed gRPC name resolver. |
|
grpcclient/resolver/nacos
Package nacos registers a Nacos-backed gRPC name resolver.
|
Package nacos registers a Nacos-backed gRPC name resolver. |
|
grpcclient/resolver/polaris
Package polaris registers a Polaris-backed gRPC name resolver.
|
Package polaris registers a Polaris-backed gRPC name resolver. |
|
grpcclient/xds
Package xds 启用客户端 xDS 支持。
|
Package xds 启用客户端 xDS 支持。 |
|
Package cooldown 提供按 key 的冷却(CD)原语:某个动作触发后,要等到冷却结束 才能再次触发。
|
Package cooldown 提供按 key 的冷却(CD)原语:某个动作触发后,要等到冷却结束 才能再次触发。 |
|
Package counter 提供按 key 的滑动窗口计数与时间窗配额,纯内存实现。
|
Package counter 提供按 key 的滑动窗口计数与时间窗配额,纯内存实现。 |
|
Package ctxkey 提供类型安全的 context.Context 键。
|
Package ctxkey 提供类型安全的 context.Context 键。 |
|
Package dag 提供一个轻量的有向无环图(DAG)执行器: 按依赖关系将节点拓扑分层,同一层内的节点并行执行,层间串行。
|
Package dag 提供一个轻量的有向无环图(DAG)执行器: 按依赖关系将节点拓扑分层,同一层内的节点并行执行,层间串行。 |
|
Package dberr 把数据库驱动错误翻译为 pkg/errors 的 *Status, 让仓储层只抛原生 driver error,中间件/网关层统一拿到带业务码的错误。
|
Package dberr 把数据库驱动错误翻译为 pkg/errors 的 *Status, 让仓储层只抛原生 driver error,中间件/网关层统一拿到带业务码的错误。 |
|
Package delayqueue 提供定点单次触发的延迟任务原语:注册一个未来时刻要执行的 回调,到点由后台 goroutine 触发;支持按 key 取消 / 改期。
|
Package delayqueue 提供定点单次触发的延迟任务原语:注册一个未来时刻要执行的 回调,到点由后台 goroutine 触发;支持按 key 取消 / 改期。 |
|
Package dlock 定义跨进程分布式锁与选主(leader election)的后端无关接口。
|
Package dlock 定义跨进程分布式锁与选主(leader election)的后端无关接口。 |
|
domain
|
|
|
chat
Package chat 提供频道聊天消息:按 channel 持久化 + 自增 message_id 游标分页。
|
Package chat 提供频道聊天消息:按 channel 持久化 + 自增 message_id 游标分页。 |
|
energy
Package energy 提供体力/精力系统原语:惰性时间回复 + 消耗 + 充值 + 倒计时计算。
|
Package energy 提供体力/精力系统原语:惰性时间回复 + 消耗 + 充值 + 倒计时计算。 |
|
group
Package group 提供群组实体:成员角色、邀请/申请审核、公告、最大人数、封禁名单。
|
Package group 提供群组实体:成员角色、邀请/申请审核、公告、最大人数、封禁名单。 |
|
inbox
Package inbox 提供点对点离线消息收件箱:已读/未读、游标分页、ACK。
|
Package inbox 提供点对点离线消息收件箱:已读/未读、游标分页、ACK。 |
|
mail
Package mail 提供游戏内信箱原语:泛型附件 + 领取状态 + 过期 + 批量发送 + Store 接口。
|
Package mail 提供游戏内信箱原语:泛型附件 + 领取状态 + 过期 + 批量发送 + Store 接口。 |
|
notification
Package notification 提供离线通知队列:用户不在线时存通知,上线后拉取, 与 pkg/router 的实时路由互补——router 投在线者,notification 投离线者。
|
Package notification 提供离线通知队列:用户不在线时存通知,上线后拉取, 与 pkg/router 的实时路由互补——router 投在线者,notification 投离线者。 |
|
party
Package party 提供无权威的多人小团体原语:Leader + Members + 加入请求队列, 成员变更时广播给全员。
|
Package party 提供无权威的多人小团体原语:Leader + Members + 加入请求队列, 成员变更时广播给全员。 |
|
relationship
Package relationship 提供社交图谱原语:用二部有向图刻画"谁对谁是什么关系", 支持好友(双向)、关注(单向)、拉黑(单向隔离)、群组成员(带角色)等多种语义, 通过状态编码 + position 游标实现高效查询与分页。
|
Package relationship 提供社交图谱原语:用二部有向图刻画"谁对谁是什么关系", 支持好友(双向)、关注(单向)、拉黑(单向隔离)、群组成员(带角色)等多种语义, 通过状态编码 + position 游标实现高效查询与分页。 |
|
signin
Package signin 提供每日签到原语:月 bitmap 存储 + 连签天数 + 补签 + 奖励回调。
|
Package signin 提供每日签到原语:月 bitmap 存储 + 连签天数 + 补签 + 奖励回调。 |
|
storage
Package storage 提供版本化的对象存储原语:owner + collection + key + value + version, 通过乐观并发控制(OCC)保证并发写不覆盖,支持三种写语义与懒淘汰索引。
|
Package storage 提供版本化的对象存储原语:owner + collection + key + value + version, 通过乐观并发控制(OCC)保证并发写不覆盖,支持三种写语义与懒淘汰索引。 |
|
tournament
Package tournament 提供锦标赛(时间窗排行榜):在 pkg/leaderboard 之上 增加"按 cron 表达式周期性重置"的能力,每周期一个独立榜单,到期自动滚动到下一周期。
|
Package tournament 提供锦标赛(时间窗排行榜):在 pkg/leaderboard 之上 增加"按 cron 表达式周期性重置"的能力,每周期一个独立榜单,到期自动滚动到下一周期。 |
|
wallet
Package wallet 提供虚拟货币/积分/库存的账本式钱包: 采用"不可变事务日志(append-only ledger) + 当前余额派生"双模型, 通过 changeset 差值更新原子校验,避免超扣/超发。
|
Package wallet 提供虚拟货币/积分/库存的账本式钱包: 采用"不可变事务日志(append-only ledger) + 当前余额派生"双模型, 通过 changeset 差值更新原子校验,避免超扣/超发。 |
|
Package ephemeral 提供短期 TTL KV:不版本化、不持久,纯内存 + 到点自动过期。
|
Package ephemeral 提供短期 TTL KV:不版本化、不持久,纯内存 + 到点自动过期。 |
|
Package eventbus 提供进程内、按主题(topic)分发的泛型事件总线:发布者按 topic 发事件,订阅者按 topic 注册回调处理函数,解耦"谁发"与"谁收"。
|
Package eventbus 提供进程内、按主题(topic)分发的泛型事件总线:发布者按 topic 发事件,订阅者按 topic 注册回调处理函数,解耦"谁发"与"谁收"。 |
|
Package featureflag 提供本地评估的特性开关与 A/B 实验: 布尔开关、百分比灰度、按属性定向、多变体实验,均基于确定性哈希分桶, 同一标识(如 userID)多次评估结果稳定,无需远程调用。
|
Package featureflag 提供本地评估的特性开关与 A/B 实验: 布尔开关、百分比灰度、按属性定向、多变体实验,均基于确定性哈希分桶, 同一标识(如 userID)多次评估结果稳定,无需远程调用。 |
|
Package fsm 提供泛型有限状态机原语:声明式定义"状态 + 事件 → 目标状态"的 合法转移表,运行时 Fire(event) 只允许沿合法转移推进,非法转移报错而非静默改状态。
|
Package fsm 提供泛型有限状态机原语:声明式定义"状态 + 事件 → 目标状态"的 合法转移表,运行时 Fire(event) 只允许沿合法转移推进,非法转移报错而非静默改状态。 |
|
Package gameloop 是一个「机制而非策略」的定步长游戏循环原语,用于在 beauty 上 搭帧同步(lockstep)/状态同步的服务端骨架。
|
Package gameloop 是一个「机制而非策略」的定步长游戏循环原语,用于在 beauty 上 搭帧同步(lockstep)/状态同步的服务端骨架。 |
|
Package gameroom 提供 dedicated server 房间生命周期 FSM(Waiting→Running→Draining→Closed)。
|
Package gameroom 提供 dedicated server 房间生命周期 FSM(Waiting→Running→Draining→Closed)。 |
|
Package generic 提供一组类型安全的泛型/反射小工具。
|
Package generic 提供一组类型安全的泛型/反射小工具。 |
|
Package geohash 提供经纬度的 Geohash 编码/解码、邻居计算与覆盖查询,纯标准库。
|
Package geohash 提供经纬度的 Geohash 编码/解码、邻居计算与覆盖查询,纯标准库。 |
|
governance
|
|
|
bannednodes
Package bannednodes 提供单次请求内的节点禁用机制。
|
Package bannednodes 提供单次请求内的节点禁用机制。 |
|
circuitbreaker
Package circuitbreaker 提供节点级熔断器。
|
Package circuitbreaker 提供节点级熔断器。 |
|
overloadctrl
Package overloadctrl 提供反馈驱动的自适应限流。
|
Package overloadctrl 提供反馈驱动的自适应限流。 |
|
router
Package router 提供服务发现与负载均衡之间的路由过滤层。
|
Package router 提供服务发现与负载均衡之间的路由过滤层。 |
|
Package handler 提供声明式 HTTP handler 包装器:把 auth 策略 + 资源注入 + 错误归一化从业务 handler 上移到包装器,handler 只关心 (ctx, req) => (resp, error)。
|
Package handler 提供声明式 HTTP handler 包装器:把 auth 策略 + 资源注入 + 错误归一化从业务 handler 上移到包装器,handler 只关心 (ctx, req) => (resp, error)。 |
|
Package hedge 实现对冲请求(hedged / backup requests):一个操作发出后,若在 delay 内还没返回, 就并发补发一个副本(最多 maxHedge 个额外副本),取最先成功返回者,随后取消其余。
|
Package hedge 实现对冲请求(hedged / backup requests):一个操作发出后,若在 delay 内还没返回, 就并发补发一个副本(最多 maxHedge 个额外副本),取最先成功返回者,随后取消其余。 |
|
Package hls 提供一个直播/点播 HLS origin:管理滚动分片窗口、生成 m3u8 播放列表, 并作为 http.Handler 挂在任意 mux(如 pkg/service/webserver)上分发。
|
Package hls 提供一个直播/点播 HLS origin:管理滚动分片窗口、生成 m3u8 播放列表, 并作为 http.Handler 挂在任意 mux(如 pkg/service/webserver)上分发。 |
|
Package idempotency 提供幂等执行原语:同一 key 的重复请求只执行一次, 后续请求(含并发)复用首次结果,直到该 key 过期。
|
Package idempotency 提供幂等执行原语:同一 key 的重复请求只执行一次, 后续请求(含并发)复用首次结果,直到该 key 过期。 |
|
Package idgen 提供分布式唯一 ID 生成器(Snowflake 算法),纯标准库实现。
|
Package idgen 提供分布式唯一 ID 生成器(Snowflake 算法),纯标准库实现。 |
|
infra
|
|
|
k8s
Package k8s 提供基于 Kubernetes 原生选主能力实现 pkg/dlock.Elector 的后端, 使 Cron 等"多实例只该有一个在跑"的场景可以直接用集群内已有的 k8s API, 不必额外运维一套 etcd/Redis。
|
Package k8s 提供基于 Kubernetes 原生选主能力实现 pkg/dlock.Elector 的后端, 使 Cron 等"多实例只该有一个在跑"的场景可以直接用集群内已有的 k8s API, 不必额外运维一套 etcd/Redis。 |
|
mysql
Package mysql 基于 MySQL Advisory Lock(GET_LOCK / RELEASE_LOCK)实现 pkg/dlock 的 Locker 与 Elector。
|
Package mysql 基于 MySQL Advisory Lock(GET_LOCK / RELEASE_LOCK)实现 pkg/dlock 的 Locker 与 Elector。 |
|
pg
Package pg 基于 PostgreSQL Advisory Lock 实现 pkg/dlock 的 Locker 与 Elector。
|
Package pg 基于 PostgreSQL Advisory Lock 实现 pkg/dlock 的 Locker 与 Elector。 |
|
redis
Package redis 提供基于 Redis 的基建适配:分布式锁/选主(实现 pkg/dlock)与 带 TTL 的原子 KV 存储(实现 pkg/kvstore.Store,给 counter/cooldown/idempotency 等原语一个真实的跨实例后端)。
|
Package redis 提供基于 Redis 的基建适配:分布式锁/选主(实现 pkg/dlock)与 带 TTL 的原子 KV 存储(实现 pkg/kvstore.Store,给 counter/cooldown/idempotency 等原语一个真实的跨实例后端)。 |
|
Package inputclock 记录客户端帧与服务器帧映射,并估算 RTT(延迟补偿入口)。
|
Package inputclock 记录客户端帧与服务器帧映射,并估算 RTT(延迟补偿入口)。 |
|
Package keyedmutex 提供按 key 的细粒度锁:同一 key 的持有者互斥(串行), 不同 key 之间互不阻塞(并行)。
|
Package keyedmutex 提供按 key 的细粒度锁:同一 key 的持有者互斥(串行), 不同 key 之间互不阻塞(并行)。 |
|
Package kvstore 定义一个带 TTL 的原子键值存储接口,供需要"跨进程共享状态"的 原语(counter / cooldown / idempotency)接入分布式后端(如 Redis)。
|
Package kvstore 定义一个带 TTL 的原子键值存储接口,供需要"跨进程共享状态"的 原语(counter / cooldown / idempotency)接入分布式后端(如 Redis)。 |
|
Package lagcomp 在 snapbuf + inputclock 之上提供 server rewind 查询(延迟补偿)。
|
Package lagcomp 在 snapbuf + inputclock 之上提供 server rewind 查询(延迟补偿)。 |
|
Package leaderboard 提供排行榜的内存排名缓存:用堆排序维护每个榜的有序结构, O(log N) 查"我的名次"、按名次取记录,避免高频读时每次 ORDER BY 击穿数据库。
|
Package leaderboard 提供排行榜的内存排名缓存:用堆排序维护每个榜的有序结构, O(log N) 查"我的名次"、按名次取记录,避免高频读时每次 ORDER BY 击穿数据库。 |
|
Package leveling 提供经验值 / 等级曲线原语:给定当前经验加一笔增量,算出新等级、 是否升级、跨了几级、当前等级内进度。
|
Package leveling 提供经验值 / 等级曲线原语:给定当前经验加一笔增量,算出新等级、 是否升级、跨了几级、当前等级内进度。 |
|
Package loadbalance 提供通用的负载均衡算法原语,不绑定任何 RPC/服务发现框架。
|
Package loadbalance 提供通用的负载均衡算法原语,不绑定任何 RPC/服务发现框架。 |
|
Package loot 提供加权随机抽取原语:抽卡 / 开宝箱 / 怪物掉落 / 直播抽奖。
|
Package loot 提供加权随机抽取原语:抽卡 / 开宝箱 / 怪物掉落 / 直播抽奖。 |
|
Package match 提供有状态实时会话原语,采用 actor 模型: 每个会话(房间/对战/协作编辑)由独立 goroutine 驱动,固定帧率 tick, 所有输入(业务数据、成员变更、同步信号)经带缓冲 channel 串行消费, 状态封装在 goroutine 内,无需锁。
|
Package match 提供有状态实时会话原语,采用 actor 模型: 每个会话(房间/对战/协作编辑)由独立 goroutine 驱动,固定帧率 tick, 所有输入(业务数据、成员变更、同步信号)经带缓冲 channel 串行消费, 状态封装在 goroutine 内,无需锁。 |
|
Package matchmaker 提供基于属性匹配的组队原语。
|
Package matchmaker 提供基于属性匹配的组队原语。 |
|
Package media 提供直播/视频服务的编排薄机制:多路流管理(Hub)、子进程监督 (Supervisor,如 ffmpeg 转码进程,含崩溃重启)与 OTel 运维指标。
|
Package media 提供直播/视频服务的编排薄机制:多路流管理(Hub)、子进程监督 (Supervisor,如 ffmpeg 转码进程,含崩溃重启)与 OTel 运维指标。 |
|
hlsmux
Package hlsmux 把 RTMP 采集到的 FLV(H.264 + AAC)喂给 bluenviron/gohlslib,产出 生产级 HLS——支持 MPEG-TS、fMP4 和 **LL-HLS(低延迟)** 三种 variant。
|
Package hlsmux 把 RTMP 采集到的 FLV(H.264 + AAC)喂给 bluenviron/gohlslib,产出 生产级 HLS——支持 MPEG-TS、fMP4 和 **LL-HLS(低延迟)** 三种 variant。 |
|
rtmp
Package rtmp 提供一个 RTMP 采集(ingest)服务端,薄封装 github.com/yutopp/go-rtmp。
|
Package rtmp 提供一个 RTMP 采集(ingest)服务端,薄封装 github.com/yutopp/go-rtmp。 |
|
webrtc
Package webrtc 提供 WebRTC 的 WHIP(采集)/WHEP(分发)薄机制,基于纯 Go 的 pion/webrtc(零 cgo)。
|
Package webrtc 提供 WebRTC 的 WHIP(采集)/WHEP(分发)薄机制,基于纯 Go 的 pion/webrtc(零 cgo)。 |
|
webrtc/sfu
Package sfu 在 pkg/media/webrtc 之上提供一个「会议室」SFU 原语:多人实时音视频, 每个参会者推自己的轨道、订阅其他所有人的轨道,服务端做选择性转发(Selective Forwarding Unit,不混流不转码)。
|
Package sfu 在 pkg/media/webrtc 之上提供一个「会议室」SFU 原语:多人实时音视频, 每个参会者推自己的轨道、订阅其他所有人的轨道,服务端做选择性转发(Selective Forwarding Unit,不混流不转码)。 |
|
Package metadata 提供服务间调用的透传元数据机制。
|
Package metadata 提供服务间调用的透传元数据机制。 |
|
propagation
Package propagation 提供 MD 在 HTTP / gRPC 传输层的注入与提取实现。
|
Package propagation 提供 MD 在 HTTP / gRPC 传输层的注入与提取实现。 |
|
middleware
|
|
|
antireplay
Package antireplay 提供基于 nonce 的 HTTP 防重放中间件。
|
Package antireplay 提供基于 nonce 的 HTTP 防重放中间件。 |
|
bodylimit
Package bodylimit 提供 HTTP 请求体大小限制中间件,防止客户端发送过大 body 耗尽服务端内存。
|
Package bodylimit 提供 HTTP 请求体大小限制中间件,防止客户端发送过大 body 耗尽服务端内存。 |
|
callbacks
Package callbacks 把 pkg/callbacks 的切面接入 beauty 的 HTTP / gRPC 服务: 在每个请求前后触发已注册的 callbacks.Handler(全局或随 ctx 局部), 用于统一注入 trace / metrics / 日志,而无需改动业务 handler。
|
Package callbacks 把 pkg/callbacks 的切面接入 beauty 的 HTTP / gRPC 服务: 在每个请求前后触发已注册的 callbacks.Handler(全局或随 ctx 局部), 用于统一注入 trace / metrics / 日志,而无需改动业务 handler。 |
|
etag
Package etag 提供 HTTP ETag / 条件请求中间件:为 GET 响应计算强 ETag,并在客户端带 If-None-Match 命中时回 304 Not Modified,省去重复传输的带宽。
|
Package etag 提供 HTTP ETag / 条件请求中间件:为 GET 响应计算强 ETag,并在客户端带 If-None-Match 命中时回 304 Not Modified,省去重复传输的带宽。 |
|
grpcauth
Package grpcauth 提供轻量级 gRPC 静态 Bearer Token 认证拦截器。
|
Package grpcauth 提供轻量级 gRPC 静态 Bearer Token 认证拦截器。 |
|
signverify
Package signverify 提供基于 HMAC-SHA256 的 HTTP 请求签名校验中间件。
|
Package signverify 提供基于 HMAC-SHA256 的 HTTP 请求签名校验中间件。 |
|
tenant
Package tenant 提供多租户隔离中间件。
|
Package tenant 提供多租户隔离中间件。 |
|
Package momentum 提供"连击 + 热度时间衰减"原语:按 key 追踪连续触发的连击数, 并维护一个随时间指数衰减的热度值。
|
Package momentum 提供"连击 + 热度时间衰减"原语:按 key 追踪连续触发的连击数, 并维护一个随时间指数衰减的热度值。 |
|
Package mq 提供传输无关的消息队列抽象:发布/订阅接口 + 一个「消费者即 beauty.Service」 的运行原语 + 处理中间件。
|
Package mq 提供传输无关的消息队列抽象:发布/订阅接口 + 一个「消费者即 beauty.Service」 的运行原语 + 处理中间件。 |
|
otelmq
Package otelmq 为 pkg/mq 提供 OpenTelemetry trace 透传(opt-in)。
|
Package otelmq 为 pkg/mq 提供 OpenTelemetry trace 透传(opt-in)。 |
|
Package options 提供分层的功能选项(functional options)模式: 框架定义一组“通用选项”,各实现方再追加自己的“专属选项”,调用方把两类选项 混在同一个 []Option 里传入;框架与实现各自用类型安全的方式提取属于自己的部分。
|
Package options 提供分层的功能选项(functional options)模式: 框架定义一组“通用选项”,各实现方再追加自己的“专属选项”,调用方把两类选项 混在同一个 []Option 里传入;框架与实现各自用类型安全的方式提取属于自己的部分。 |
|
Package p2p 提供面向 P2P 数据通道的传输无关抽象:把 WebRTC DataChannel 从 "媒体通话工具"变为"通用 P2P 数据管道",支持可靠/不可靠双通道语义。
|
Package p2p 提供面向 P2P 数据通道的传输无关抽象:把 WebRTC DataChannel 从 "媒体通话工具"变为"通用 P2P 数据管道",支持可靠/不可靠双通道语义。 |
|
quictransport
Package quictransport 提供基于 QUIC 的 p2p.Transport 实现。
|
Package quictransport 提供基于 QUIC 的 p2p.Transport 实现。 |
|
signaling
Package signaling 提供面向 P2P DataChannel 的信令服务:通过 WebSocket 中继 WebRTC 协商消息(offer/answer/candidate),让 peers 能自动发现、配对、建立 直连的 DataChannel——无需业务代码接触底层 ICE/SDP 细节。
|
Package signaling 提供面向 P2P DataChannel 的信令服务:通过 WebSocket 中继 WebRTC 协商消息(offer/answer/candidate),让 peers 能自动发现、配对、建立 直连的 DataChannel——无需业务代码接触底层 ICE/SDP 细节。 |
|
tcptransport
Package tcptransport 提供基于 TCP 的 p2p.Transport 实现。
|
Package tcptransport 提供基于 TCP 的 p2p.Transport 实现。 |
|
topology
Package topology 提供 P2P 网络的拓扑策略:当 peer 加入/离开房间时,决定哪些 peer 之间应建立直连。
|
Package topology 提供 P2P 网络的拓扑策略:当 peer 加入/离开房间时,决定哪些 peer 之间应建立直连。 |
|
Package pagination 提供 keyset(游标)分页原语:把"下一页起点"编码成一个**不透明**的、URL 安全的 游标字符串,客户端原样回传即可翻页。
|
Package pagination 提供 keyset(游标)分页原语:把"下一页起点"编码成一个**不透明**的、URL 安全的 游标字符串,客户端原样回传即可翻页。 |
|
Package pathfind 提供网格地图上的 A* 寻路,纯计算、纯标准库、零依赖。
|
Package pathfind 提供网格地图上的 A* 寻路,纯计算、纯标准库、零依赖。 |
|
Package pipeline 提供类型安全的多阶段流水线:数据经过多个 Stage 顺序处理, 每个 Stage 可配置并发 worker 数(扇出)、带背压(有界 channel)。
|
Package pipeline 提供类型安全的多阶段流水线:数据经过多个 Stage 顺序处理, 每个 Stage 可配置并发 worker 数(扇出)、带背压(有界 channel)。 |
|
Package presence 提供在线状态(在场追踪)原语:维护"谁在哪个流(stream)里" 的双向索引,支持 O(1) 按流查询成员、按会话查询所在流,以及 join/leave 事件总线。
|
Package presence 提供在线状态(在场追踪)原语:维护"谁在哪个流(stream)里" 的双向索引,支持 O(1) 按流查询成员、按会话查询所在流,以及 join/leave 事件总线。 |
|
status
Package status 把用户的在线状态变化(上线/下线/进出流)推送给关注他的人。
|
Package status 把用户的在线状态变化(上线/下线/进出流)推送给关注他的人。 |
|
Package priority 提供泛型优先级队列:基于二叉堆实现,支持 Push/Pop/Peek/Update/Remove。
|
Package priority 提供泛型优先级队列:基于二叉堆实现,支持 Push/Pop/Peek/Update/Remove。 |
|
Package questlog 提供任务 / 成就的进度追踪:定义一组带目标值的任务,累加进度, 达标后可领取(一次),支持前置依赖与周期重置。
|
Package questlog 提供任务 / 成就的进度追踪:定义一组带目标值的任务,累加进度, 达标后可领取(一次),支持前置依赖与周期重置。 |
|
Package quic 提供基于 QUIC(quic-go)的连接层,作为 pkg/ws(WebSocket/TCP)之外 面向实时/游戏同步的可选传输。
|
Package quic 提供基于 QUIC(quic-go)的连接层,作为 pkg/ws(WebSocket/TCP)之外 面向实时/游戏同步的可选传输。 |
|
Package ratelimit 提供基于键的限流原语:令牌桶 + 滑动窗口两种实现, 外加 HTTP 中间件,可与 pkg/handler 组合(声明式 WithRatelimit)。
|
Package ratelimit 提供基于键的限流原语:令牌桶 + 滑动窗口两种实现, 外加 HTTP 中间件,可与 pkg/handler 组合(声明式 WithRatelimit)。 |
|
rating
|
|
|
glicko2
Package glicko2 提供 Glicko-2 评分原语:根据一组对局结果更新玩家的评分、 评分偏差与波动性。
|
Package glicko2 提供 Glicko-2 评分原语:根据一组对局结果更新玩家的评分、 评分偏差与波动性。 |
|
trueskill
Package trueskill 提供 TrueSkill 评分原语:用高斯分布 (μ, σ) 表示玩家实力, 根据 1v1 或多队伍对局结果做贝叶斯更新。
|
Package trueskill 提供 TrueSkill 评分原语:用高斯分布 (μ, σ) 表示玩家实力, 根据 1v1 或多队伍对局结果做贝叶斯更新。 |
|
Package reddot 提供小红点 / 未读聚合树:把散落各处的未读数按树形层级聚合, 父节点的未读 = 所有子节点未读之和,叶子清零自动向上传播。
|
Package reddot 提供小红点 / 未读聚合树:把散落各处的未读数按树形层级聚合, 父节点的未读 = 所有子节点未读之和,叶子清零自动向上传播。 |
|
Package replicate 提供状态同步的增量投影原语:DirtySet + AOI diff + Delta。
|
Package replicate 提供状态同步的增量投影原语:DirtySet + AOI diff + Delta。 |
|
Package resume 提供断线重连的在场状态还原:客户端用 refresh token 重连, 服务端换出 userID,查 presence 看用户还在哪些流,返回流列表让客户端自动重连。
|
Package resume 提供断线重连的在场状态还原:客户端用 refresh token 重连, 服务端换出 userID,查 presence 看用户还在哪些流,返回流列表让客户端自动重连。 |
|
Package ringbuffer 提供定长环形缓冲:只保留最近 N 条,写满后覆盖最旧的, O(1) 追加。
|
Package ringbuffer 提供定长环形缓冲:只保留最近 N 条,写满后覆盖最旧的, O(1) 追加。 |
|
Package router 提供多语义消息路由:把一条消息发给一组人(presence IDs)、 一个流(stream)的全部成员、或所有人,并支持一帧内多条消息攒批下发。
|
Package router 提供多语义消息路由:把一条消息发给一组人(presence IDs)、 一个流(stream)的全部成员、或所有人,并支持一帧内多条消息攒批下发。 |
|
Package safe 提供 panic 恢复相关的小工具:把 panic 转成带堆栈的 error, 以及安全启动 goroutine(panic 不会崩进程)。
|
Package safe 提供 panic 恢复相关的小工具:把 panic 转成带堆栈的 error, 以及安全启动 goroutine(panic 不会崩进程)。 |
|
Package saga 提供跨服务 Saga 编排:按顺序执行一组"正向操作",任一步失败时 逆序执行已成功步骤的"补偿操作",达成最终一致。
|
Package saga 提供跨服务 Saga 编排:按顺序执行一组"正向操作",任一步失败时 逆序执行已成功步骤的"补偿操作",达成最终一致。 |
|
Package scheduler 提供工作池式任务调度器:生产者把任务投递到队列, N 个 worker goroutine 并发消费;支持运行时 Pause/Resume 与优雅停止。
|
Package scheduler 提供工作池式任务调度器:生产者把任务投递到队列, N 个 worker goroutine 并发消费;支持运行时 Pause/Resume 与优雅停止。 |
|
Package semaphore 提供加权信号量原语:限制对共享资源的最大并发占用量。
|
Package semaphore 提供加权信号量原语:限制对共享资源的最大并发占用量。 |
|
service
|
|
|
Package shard 给「有状态服务」提供多副本分片路由的薄机制:用一致性哈希把每个 key (streamKey / roomID / userID 等)确定性地归属到某一个实例,请求落到非归属实例时 反向代理转发给归属实例。
|
Package shard 给「有状态服务」提供多副本分片路由的薄机制:用一致性哈希把每个 key (streamKey / roomID / userID 等)确定性地归属到某一个实例,请求落到非归属实例时 反向代理转发给归属实例。 |
|
Package sketch 提供监控/风控常用的概率数据结构:用极小、常量级内存换取"近似但够用"的答案。
|
Package sketch 提供监控/风控常用的概率数据结构:用极小、常量级内存换取"近似但够用"的答案。 |
|
Package snapbuf 提供固定深度的环形快照缓冲,用于延迟补偿/server rewind。
|
Package snapbuf 提供固定深度的环形快照缓冲,用于延迟补偿/server rewind。 |
|
Package spatial 提供网格空间索引:把实体按坐标分桶到固定大小的网格单元, 支持"范围查询"(附近的人/实体)与 KNN(最近的 N 个),避免全量遍历。
|
Package spatial 提供网格空间索引:把实体按坐标分桶到固定大小的网格单元, 支持"范围查询"(附近的人/实体)与 KNN(最近的 N 个),避免全量遍历。 |
|
aoi
Package aoi 在 pkg/spatial 之上提供兴趣区域(AOI)集合 diff:enter/leave/stay。
|
Package aoi 在 pkg/spatial 之上提供兴趣区域(AOI)集合 diff:enter/leave/stay。 |
|
Package sse 提供 Server-Sent Events 的轻量封装,屏蔽 SSE 在 Go 里的常见坑: 自动设置流式响应头、解除本连接的写超时(避免被 server WriteTimeout 掐断)、 每条事件后自动 flush(穿透 otelhttp / compress 等包装链)、客户端断开时结束。
|
Package sse 提供 Server-Sent Events 的轻量封装,屏蔽 SSE 在 Go 里的常见坑: 自动设置流式响应头、解除本连接的写超时(避免被 server WriteTimeout 掐断)、 每条事件后自动 flush(穿透 otelhttp / compress 等包装链)、客户端断开时结束。 |
|
Package stream 提供流式扇出(广播)原语:把一个事件源 fan-out 给多个订阅者, 适合 SSE / WebSocket 等"一份数据推给 N 个连接"的场景。
|
Package stream 提供流式扇出(广播)原语:把一个事件源 fan-out 给多个订阅者, 适合 SSE / WebSocket 等"一份数据推给 N 个连接"的场景。 |
|
Package syncx 提供一组便捷的并发原语(泛型),补齐标准库与 pkg/xgo 之外常被手搓、 又容易写错的模式:
|
Package syncx 提供一组便捷的并发原语(泛型),补齐标准库与 pkg/xgo 之外常被手搓、 又容易写错的模式: |
|
Package tally 提供高频累计聚合 + 批量刷写:把海量小额增量在内存里按 key 累加, 定时(或攒够阈值)合并成一批交给 flush 回调一次性处理,削平写放大。
|
Package tally 提供高频累计聚合 + 批量刷写:把海量小额增量在内存里按 key 累加, 定时(或攒够阈值)合并成一批交给 flush 回调一次性处理,削平写放大。 |
|
Package throttle 提供批量聚合触发原语:攒满 N 条或到达 T 时间即批量 flush。
|
Package throttle 提供批量聚合触发原语:攒满 N 条或到达 T 时间即批量 flush。 |
|
Package timeout 提供统一的超时执行包装:给任意函数加超时 + panic 恢复 + 错误分类。
|
Package timeout 提供统一的超时执行包装:给任意函数加超时 + panic 恢复 + 错误分类。 |
|
Package token 提供会话令牌的全生命周期管理:签发、验证、续签、注销。
|
Package token 提供会话令牌的全生命周期管理:签发、验证、续签、注销。 |
|
Package txn 提供跨域事务协调:让 wallet/storage/notification 等域包 在一个逻辑事务边界内原子提交或全部回滚。
|
Package txn 提供跨域事务协调:让 wallet/storage/notification 等域包 在一个逻辑事务边界内原子提交或全部回滚。 |
|
utils
|
|
|
Package vars 提供轻量的 ${KEY} 变量插值,零依赖。
|
Package vars 提供轻量的 ${KEY} 变量插值,零依赖。 |
|
Package versus 提供"限时多方对抗计分"原语:N 个阵营在一段倒计时内实时累计分, 到点定胜负。
|
Package versus 提供"限时多方对抗计分"原语:N 个阵营在一段倒计时内实时累计分, 到点定胜负。 |
|
Package webhook 提供事件驱动的 Webhook 通知:按事件类型过滤、自定义 header、 可选 body 模板、可选 HMAC 签名,异步触发并带指数退避重试。
|
Package webhook 提供事件驱动的 Webhook 通知:按事件类型过滤、自定义 header、 可选 body 模板、可选 HMAC 签名,异步触发并带指数退避重试。 |
|
Package worker 提供可组合到 beauty.App 的后台工作者 Service 实现。
|
Package worker 提供可组合到 beauty.App 的后台工作者 Service 实现。 |
|
Package ws 基于 github.com/coder/websocket 提供 WebSocket 的轻量封装: 自动完成握手升级、统一关闭语义,并把 *http.Request 透传给业务, 便于读取 query / header / 子协议 / 鉴权信息。
|
Package ws 基于 github.com/coder/websocket 提供 WebSocket 的轻量封装: 自动完成握手升级、统一关闭语义,并把 *http.Request 透传给业务, 便于读取 query / header / 子协议 / 鉴权信息。 |
|
session
Package session 提供基于 WebSocket 的有状态会话高阶封装。
|
Package session 提供基于 WebSocket 的有状态会话高阶封装。 |
Click to show internal directories.
Click to hide internal directories.