Help us shape the future of Go! Take the 2026 Go Developer Survey

registry

module
v0.2.6 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 15, 2026 License: MIT

README

registry

注册发现核心 + Nacos 实现 + 配置加载 + 服务发现桥接。

项目主页:https://oekit.github.io/ · 名称由来:Open Easy Kit(开源 · 易用 · 工具集合) 🤖 AI Agent:本仓规范与硬规则见 AGENTS.md;机器可读索引见 llms.txt(接口签名以源码为准)。

本仓库是 ekit(git.enjoye.top/enjoydream/ekit v0.34.0) 拆分出的独立 Go module,属于 oekit(Open Easy Kit)模块矩阵。

安装

go get github.com/oekit/registry@v0.2.5

能做什么

  • SPI 四接口:Registrar / Discoverer / Subscriber / ConfigStore,provider 无关
  • Nacos 实现:注册/发现/订阅/配置监听全家
  • nacos 门面:NewNamingClient/NewConfigClient 快捷构造
  • config:YAML 加载(LoadBootstrap[T])、环境变量、.env、merge
  • registrymocks:SPI 的现成测试 mock
  • sdbridge:各框架 Resolver 适配的共享核心

使用示例

服务注册 + 发现
import (
    nacosimpl "github.com/oekit/registry/registry/nacos"
    "github.com/oekit/registry/registry"
)

reg, _ := nacosimpl.NewRegistrar(namingCli)
_ = reg.Register(ctx, registry.Instance{IP: ip, Port: 8080, Weight: 10})

disc, _ := nacosimpl.NewDiscoverer(namingCli)
insts, _ := disc.Discover(ctx, "dep-service")
配置加载
import "github.com/oekit/registry/config"

config.LoadDotEnv(".env")
cfg, _ := config.LoadBootstrap[AppConfig]("dev") // 自动选 etc/config-dev.yaml
订阅实例变化
_ = sub.Subscribe(ctx, "dep-service", func(instances []registry.Instance) {
    // 实例列表变化回调
})
## 包清单

- \`registry/\` — Registrar/Discoverer/Subscriber/ConfigStore 核心接口 + 实例模型 + netutil
- \`registry/nacos/\` — Nacos 实现(nacos-sdk-go v2)
- \`registry/sdbridge/\` — 服务发现适配器共享核心(跨模块公开)
- \`registrymocks/\` — 4 接口统一测试 mock
- \`nacos/\` — Nacos 客户端门面
- \`config/\` — YAML/env/.env 配置加载与 merge

## 矩阵总览(23 活跃模块,自动生成)

| 模块 | 内容 | 矩阵内依赖 |
|---|---|---|
| [pkg](https://github.com/oekit/pkg) | 微工具集 16 合 1(errors/validator/stringx/slicex/enumx/convert/encoding/jsonrepair/httpjson/mathx/pathx/pagination/ptrx/timex/uidgen/cache) | — |
| [concurrency](https://github.com/oekit/concurrency) | 并发与流控原语(async/group/singleflight/progress/syncx/ratelimit/retry) | — |
| [logx](https://github.com/oekit/logx) | 统一日志门面(多后端可替换 + Sink + caller 归属)+ 优雅关停 | — |
| [core](https://github.com/oekit/core) | 应用基建件(governance 治理 schema / lifecycle 契约 / network IP 工具 / version) | — |
| [istio](https://github.com/oekit/istio) | Istio Proxyless——Kitex xDS 动态熔断 | — |
| [metrics](https://github.com/oekit/metrics) | Prometheus 门面 + 弹性指标族 | [core](https://github.com/oekit/core) |
| [tracing](https://github.com/oekit/tracing) | OpenTelemetry 追踪 + trace_id 真相源 | [logx](https://github.com/oekit/logx) |
| [registry](https://github.com/oekit/registry) | 注册发现核心 + Nacos 实现 + 配置加载 + sdbridge | [core](https://github.com/oekit/core)、[logx](https://github.com/oekit/logx) |
| [data](https://github.com/oekit/data) | 缓存检查器(TTL/failTTL/inflight 合并)+ LocalCache | [concurrency](https://github.com/oekit/concurrency)、[logx](https://github.com/oekit/logx) |
| [gorm](https://github.com/oekit/gorm) | SQL/GORM 全家——连接池增强、框架无关 CRUD Service、仓储 | [logx](https://github.com/oekit/logx)、[pkg](https://github.com/oekit/pkg) |
| [redis](https://github.com/oekit/redis) | Redis 全家——客户端封装、缓存后端、分布式锁 | [concurrency](https://github.com/oekit/concurrency)、[data](https://github.com/oekit/data)、[logx](https://github.com/oekit/logx) |
| [httpx](https://github.com/oekit/httpx) | HTTP 客户端 + 负载均衡——服务发现/熔断/重试/指标/OTel 透传 | [concurrency](https://github.com/oekit/concurrency)、[core](https://github.com/oekit/core)、[logx](https://github.com/oekit/logx)、[metrics](https://github.com/oekit/metrics)、[registry](https://github.com/oekit/registry)、[tracing](https://github.com/oekit/tracing) |
| [network](https://github.com/oekit/network) | 轻量网络客户端——WebSocket/NATS/MQ 抽象、连接与流工具、Octopus 推送 | [concurrency](https://github.com/oekit/concurrency)、[logx](https://github.com/oekit/logx)、[tracing](https://github.com/oekit/tracing) |
| [timertask](https://github.com/oekit/timertask) | 分片定时任务(FNV-1a、心跳续约) | [concurrency](https://github.com/oekit/concurrency)、[logx](https://github.com/oekit/logx) |
| [middleware](https://github.com/oekit/middleware) | Hertz 自研标准中间件栈 + contrib 桥接 + hmw | [concurrency](https://github.com/oekit/concurrency)、[core](https://github.com/oekit/core)、[logx](https://github.com/oekit/logx)、[metrics](https://github.com/oekit/metrics)、[pkg](https://github.com/oekit/pkg)、[registry](https://github.com/oekit/registry)、[tracing](https://github.com/oekit/tracing) |
| [nns](https://github.com/oekit/nns) | NNS 服务治理客户端——provider 无关发现/配置/实例缓存 | [concurrency](https://github.com/oekit/concurrency)、[core](https://github.com/oekit/core)、[logx](https://github.com/oekit/logx)、[registry](https://github.com/oekit/registry) |
| [nns-endpoint](https://github.com/oekit/nns-endpoint) | NNS 端点工厂——per-service 熔断、换实例重试、gRPC 池 | [concurrency](https://github.com/oekit/concurrency)、[core](https://github.com/oekit/core)、[httpx](https://github.com/oekit/httpx)、[logx](https://github.com/oekit/logx)、[metrics](https://github.com/oekit/metrics)、[nns](https://github.com/oekit/nns)、[registry](https://github.com/oekit/registry) |
| [bootstrap](https://github.com/oekit/bootstrap) | 应用生命周期引导——bootstrap.Run 骨架 + healthz | [concurrency](https://github.com/oekit/concurrency)、[logx](https://github.com/oekit/logx) |
| [handler](https://github.com/oekit/handler) | HTTP handler 层——通用 CRUD Handler、参数绑定、版本端点 | [concurrency](https://github.com/oekit/concurrency)、[core](https://github.com/oekit/core)、[gorm](https://github.com/oekit/gorm)、[logx](https://github.com/oekit/logx)、[metrics](https://github.com/oekit/metrics)、[middleware](https://github.com/oekit/middleware)、[pkg](https://github.com/oekit/pkg)、[registry](https://github.com/oekit/registry)、[tracing](https://github.com/oekit/tracing) |
| [hertz](https://github.com/oekit/hertz) | Hertz 运行时集成——日志桥接、生命周期、SSE/health/metrics、适配器、OTel | [bootstrap](https://github.com/oekit/bootstrap)、[concurrency](https://github.com/oekit/concurrency)、[core](https://github.com/oekit/core)、[logx](https://github.com/oekit/logx)、[metrics](https://github.com/oekit/metrics)、[nns](https://github.com/oekit/nns)、[registry](https://github.com/oekit/registry)、[tracing](https://github.com/oekit/tracing) |
| [kitex](https://github.com/oekit/kitex) | Kitex 生态——日志桥接、治理热更、生命周期、BizError 桥接、kitexotel | [bootstrap](https://github.com/oekit/bootstrap)、[concurrency](https://github.com/oekit/concurrency)、[core](https://github.com/oekit/core)、[logx](https://github.com/oekit/logx)、[metrics](https://github.com/oekit/metrics)、[nns](https://github.com/oekit/nns)、[pkg](https://github.com/oekit/pkg)、[registry](https://github.com/oekit/registry)、[tracing](https://github.com/oekit/tracing) |
| [workflow](https://github.com/oekit/workflow) | 组合式流程编排——串行/并行/异步/条件分支 + Hook AOP | [concurrency](https://github.com/oekit/concurrency)、[logx](https://github.com/oekit/logx) |
| [kitex-examples](https://github.com/oekit/kitex-examples) | Kitex echo 示例——client/server + IDL + 治理配置 | [bootstrap](https://github.com/oekit/bootstrap)、[concurrency](https://github.com/oekit/concurrency)、[core](https://github.com/oekit/core)、[kitex](https://github.com/oekit/kitex)、[logx](https://github.com/oekit/logx)、[metrics](https://github.com/oekit/metrics)、[nns](https://github.com/oekit/nns)、[registry](https://github.com/oekit/registry)、[tracing](https://github.com/oekit/tracing) |
## 当前仓库依赖

详见上方矩阵表中本仓库行。

## 与 ekit 单体仓库的关系

- 代码与 ekit v0.34.0 等价,module 路径 `git.enjoye.top/enjoydream/ekit/...` → `github.com/oekit/registry/...`
- 各子仓库独立发版(SemVer);开发规范沿用 ekit AGENTS.md 约定

## License

见 [LICENSE](LICENSE)

Directories

Path Synopsis
Package config 提供 YAML 配置文件加载和反射合并。
Package config 提供 YAML 配置文件加载和反射合并。
Package nacos 提供 Nacos 配置中心和服务注册发现客户端。
Package nacos 提供 Nacos 配置中心和服务注册发现客户端。
nacosimpl module
Package registry 提供与服务注册中心无关的服务注册与发现抽象接口。
Package registry 提供与服务注册中心无关的服务注册与发现抽象接口。
nacos
Package nacos 提供 registry 接口的 Nacos 实现。
Package nacos 提供 registry 接口的 Nacos 实现。
sdbridge
Package sdbridge 提供服务发现适配器的框架无关共享核心。
Package sdbridge 提供服务发现适配器的框架无关共享核心。
Package registrymocks 提供 registry 包 4 个接口(Registrar/Discoverer/Subscriber/ConfigStore) 的统一 mock 实现,供单元测试使用(原为 ekit internal 包,拆分后跨模块复用故公开)。
Package registrymocks 提供 registry 包 4 个接口(Registrar/Discoverer/Subscriber/ConfigStore) 的统一 mock 实现,供单元测试使用(原为 ekit internal 包,拆分后跨模块复用故公开)。

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL