httpx
HTTP 客户端 + 负载均衡——Hertz Client 高层封装:服务发现/熔断/重试/指标/OTel 透传/实例权重贯通。
项目主页: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/httpx@v0.1.4
能做什么
- 服务发现:NNS 无缝接入,实例权重真实生效
- 熔断 + 重试:gobreaker per-service、指数退避+抖动、5xx/网络错误才重试
- 弹性指标:熔断状态/重试计数自动上报
- OTel 透传:一行注入 trace 头
- 负载均衡:RoundRobin/Random/Weighted/Hash 可插拔
使用示例
JSON 客户端
import "github.com/oekit/httpx/httpx"
c := httpx.NewClient("payment-svc") // 服务名走服务发现
var out PayResp
err := c.GetJSON(ctx, "/api/v1/pay?id=1", &out)
err = c.PostJSON(ctx, "/api/v1/refund", body, &out)
文件上传 / 原始字节
err := c.UploadFile(ctx, "/upload", "/tmp/a.png", "file", nil, &out)
raw, err := c.DoRaw(ctx, "PUT", "/api/v1/raw", payload)
包清单
- `httpx/` — NewClient + WithNNS/WithCircuitBreaker/WithRetryConfig(指数退避+抖动)/WithMetrics/WithTracePropagation
- `loadbalance/` — 加权负载均衡策略
矩阵总览(23 活跃模块,自动生成)
当前仓库依赖
详见上方矩阵表中本仓库行。
与 ekit 单体仓库的关系
- 代码与 ekit v0.34.0 等价,module 路径
git.enjoye.top/enjoydream/ekit/... → github.com/oekit/httpx/...
- 各子仓库独立发版(SemVer);开发规范沿用 ekit AGENTS.md 约定
License
见 LICENSE