# 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