Hecc-Blot 是一个基于 Go 的轻量级后端框架,采用面向接口 + IOC 容器组装。框架能力按模块拆分为独立仓库,通过 go get 按需引入。
- 面向接口 — 所有组件通过接口契约交互,实现可替换
- 依赖注入 — 基于反射的 IOC 容器,
injecttag 自动注入 - 统一响应 — 返回值自动包装为
{code, message, data} - 参数校验 — 自动绑定与校验,支持自定义错误信息
- 多数据库 — MySQL / PostgreSQL / ClickHouse / Elasticsearch / MongoDB
- 双层缓存 — 本地内存 + Redis
- 链路追踪 — OpenTelemetry,OTLP 导出
- 可观测 — 统一日志、Prometheus 指标、SSE 实时推送
- 高可用 — 限流 / 熔断 / 幂等 / 分布式锁 / 定时调度
每个模块是独立仓库,go get 引入后通过 IOC 容器组装:
go get github.com/hecc-blot/framework各模块的接口定义、配置项、用法见对应仓库 README。
| 模块 | 职责 |
|---|---|
| core | 最底层公共库:通用接口契约 + 默认实现(日志 zap) |
| framework | 框架内核:接口契约 + IOC 容器 + HTTP 内核 + 统一响应 |
| db | 关系型数据库(GORM MySQL/PostgreSQL) |
| db-clickhouse | ClickHouse 分析型数据库 |
| db-es | Elasticsearch 搜索型数据库 |
| db-mongo | MongoDB 文档型数据库 |
| cache | 双层缓存(本地 + Redis) |
| trace | 链路追踪(OpenTelemetry) |
| log-sls | 日志(阿里云 SLS) |
| httpclient | 统一 HTTP 客户端 |
| mq | 消息队列(Kafka/NSQ) |
| scheduler | 定时任务调度(cron) |
| ratelimit | 限流(内存 + Redis,滑动窗口/令牌桶) |
| sse | SSE 实时推送 |
| lock | 分布式锁(SetNX + watchdog 续期) |
| metrics | 监控指标(Prometheus 采集) |
| idempotent | 幂等(SetNX 占位 + Lua 原子完成) |
| circuitbreaker | 熔断器(连续失败熔断 + 半开探测) |
- 依赖倒置 — 高层依赖抽象接口,而非具体实现
- 接口隔离 — 每个接口只定义单一职责
- 开闭原则 — 对扩展开放,对修改关闭
MIT License