# Goners(组件库)
# 核心级Goners
核心组件也是Goner,可以被其他Goner注入,这部分Goners,是Gone运行的基础,是Gone运行不可或缺的部分。
接口名 | 实现 | GoneId | 功能介绍 |
---|---|---|---|
Heaven (opens new window) | heaven (opens new window) | gone-heaven | 负责将Goner从cemetery中复活,执行安装的Hook函数,管理框架的启停流程和状态。 |
Cemetery (opens new window) | cemetery (opens new window) | gone-cemetery | 管理Goners,提供将Goner注册的Bury方法;依赖注入的逻辑主要在该结构体中实现。 |
# 框架内置Goners
框架内置Goners,是为丰富Gone的功能而开发的,比如支持Web开发、支持数据库连接、支持Redis等…
代码实现在 goner目录 (opens new window),该目录下的每个子目录分别实现了一个gone的特性,每个特性包含一个或多个Goner的定义和实现。
为了方便使用,我们在 goner/priest.go (opens new window) 中定义了Priest
函数,可以按功能直接批量注册相关Goners。
目录/组件 | 实现功能 | 文档 |
---|---|---|
config | 读取config目录下的配置文件,允许配置项注入到Goner | 通过内置Goners支持配置文件 |
logrus | 封装github.com/sirupsen/logrus ,提供日志打印相关的方法,支持将日志按格式打印 | 日志打印 |
tracer | 日志追踪,提供traceId;在处理同一请求时,日志打印可以拥有相同的traceId | 使用traceId追踪日志 |
gin | 封装github.com/gin-gonic/gin ,使gone支持web开发 | - |
xorm | 封装xorm.io/xorm ,用于操作数据 | 通过内置Goners支持数据库连接 |
redis | 封装github.com/gomodule/redigo/redis ,用于操作redis,提供redis缓存和redis分布式锁的功能 | 利用redis提供分布式锁和分布式缓存 |
schedule | 封装github.com/robfig/cron/v3 ,提供定时任务的能力 | 用cron表达式配置定时任务 (opens new window) |
urllib | 封装github.com/imroc/req/v3 ,提供http调用能力 | - |
grpc | 提供开发grpc服务端和客户端的能力 | 使用gRPC通信 (opens new window) |
cmux | 封装github.com/soheilhy/cmux ,是统一端口可以提供混合服务的能力 | - |
zap | 封装go.uber.org/zap ,实现gone.Logger 日志接口,可以替换logrus 实现更高效的日志输出 | - |
viper | 封装github.com/spf13/viper ,用于替换配置接口默认实现,可以支持丰富的配置文件格式 | - |
# 生态级 Goners
- emitter (opens new window),封装事件处理,可以用于 DDD 的 事件风暴