Documentation
¶
Overview ¶
Copyright 2022 cralack. All rights reserved. Use of this source code is governed by a MIT style license that can be found in the LICENSE file.
Index ¶
- Constants
- type App
- type CacheService
- type Config
- type CtxFielder
- type DBOption
- type Distributed
- type Env
- type Formatter
- type IDService
- type Kernel
- type Log
- type LogLevel
- type ORMService
- type RedisConfig
- type RedisOption
- type RedisService
- type RememberFunc
- type SSHConfig
- type SSHOption
- type SSHService
- type Trace
- type TraceContext
Constants ¶
const ( // EnvProduction 代表生产环境 EnvProduction = "production" // EnvTesting 代表测试环境 EnvTesting = "testing" // EnvDevelopment 代表开发环境 EnvDevelopment = "development" // EnvKey 是环境变量服务字符串凭证 EnvKey = "PineappleBee:env" )
const ( TraceKeyTraceID = "trace_id" TraceKeySpanID = "span_id" TraceKeyCspanID = "cspan_id" TraceKeyParentID = "parent_id" TraceKeyMethod = "method" TraceKeyCaller = "caller" TraceKeyTime = "time" )
const AppKey = "PineappleBee:app"
AppKey 定义字符串凭证
const CacheKey = "PineappleBee:cache"
const (
// ConfigKey is config key in container
ConfigKey = "PineappleBee:config"
)
const DistributedKey = "PineappleBee:distributed"
const IDKey = "PineappleBee:id"
const KernelKey = "PineappleBee:kernel"
const LogKey = "PineappleBee:log"
协议关键字
const ORMKey = "PineappleBee:orm"
ORMKey 代表 ORM的服务
const RedisKey = "PineappleBee:redis"
const SSHKey = "PineappleBee:ssh"
const TraceKey = "PineappleBee:trace"
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type App ¶
type App interface { // AppID 表示当前这个app的唯一id, 可以用于分布式锁等 AppID() string // Version 定义当前版本 Version() string //BaseFolder 定义项目基础地址 BaseFolder() string // AppFolder 定义业务代码所在的目录,用于监控文件变更使用 AppFolder() string // ConfigFolder 定义了配置文件的路径 ConfigFolder() string // LogFolder 定义了日志所在路径 LogFolder() string // ProviderFolder 定义业务自己的服务提供者地址 ProviderFolder() string // MiddlewareFolder 定义业务自己定义的中间件 MiddlewareFolder() string // CommandFolder 定义业务定义的命令 CommandFolder() string // RuntimeFolder 定义业务的运行中间态信息 RuntimeFolder() string // TestFolder 存放测试所需要的信息 TestFolder() string // DeployFolder 存放部署的时候创建的文件夹 DeployFolder() string // LoadAppConfig 加载新的AppConfig,key为对应的函数转为小写下划线,比如ConfigFolder => config_folder LoadAppConfig(kv map[string]string) }
App 定义接口
type CacheService ¶ added in v1.0.0
type CacheService interface { // Set 设置某个key和值到缓存,带超时时间 Set(ctx context.Context, key string, val string, timeout time.Duration) error // SetObj 设置某个key和对象到缓存, 对象必须实现 https://pkg.go.dev/encoding#BinaryMarshaler SetObj(ctx context.Context, key string, val interface{}, timeout time.Duration) error // SetMany 设置多个key和值到缓存 SetMany(ctx context.Context, data map[string]string, timeout time.Duration) error // SetForever 设置某个key和值到缓存,不带超时时间 SetForever(ctx context.Context, key string, val string) error // SetForeverObj 设置某个key和对象到缓存,不带超时时间,对象必须实现 https://pkg.go.dev/encoding#BinaryMarshaler SetForeverObj(ctx context.Context, key string, val interface{}) error // Get 获取某个key对应的值 Get(ctx context.Context, key string) (string, error) // GetObj 获取某个key对应的对象, 对象必须实现 https://pkg.go.dev/encoding#BinaryUnMarshaler GetObj(ctx context.Context, key string, model interface{}) error // GetMany 获取某些key对应的值 GetMany(ctx context.Context, keys []string) (map[string]string, error) // SetTTL 设置某个key的超时时间 SetTTL(ctx context.Context, key string, timeout time.Duration) error // GetTTL 获取某个key的超时时间 GetTTL(ctx context.Context, key string) (time.Duration, error) // Remember 实现缓存的Cache-Aside模式, 先去缓存中根据key获取对象,如果有的话,返回,如果没有,调用RememberFunc 生成 Remember(ctx context.Context, key string, timeout time.Duration, rememberFunc RememberFunc, model interface{}) error // Calc 往key对应的值中增加step计数 Calc(ctx context.Context, key string, step int64) (int64, error) // Increment 往key对应的值中增加1 Increment(ctx context.Context, key string) (int64, error) // Decrement 往key对应的值中减去1 Decrement(ctx context.Context, key string) (int64, error) // Del 删除某个key Del(ctx context.Context, key string) error // DelMany 删除某些key DelMany(ctx context.Context, keys []string) error }
CacheService 缓存服务接口定义
type Config ¶
type Config interface { // IsExist 检查一个属性是否存在 IsExist(key string) bool // Get 获取一个属性值 Get(key string) interface{} // GetBool 获取一个 bool 属性 GetBool(key string) bool // GetInt 获取一个 int 属性 GetInt(key string) int // GetFloat64 获取一个 float64 属性 GetFloat64(key string) float64 // GetTime 获取一个 time 属性 GetTime(key string) time.Time // GetString 获取一个 string 属性 GetString(key string) string // GetIntSlice 获取一个 int 数组属性 GetIntSlice(key string) []int // GetStringSlice 获取一个 string 数组 GetStringSlice(key string) []string // GetStringMap 获取一个 string 为 key,interface 为 val 的 map GetStringMap(key string) map[string]interface{} // GetStringMapString 获取一个 string 为 key,string 为 val 的 map GetStringMapString(key string) map[string]string // GetStringMapStringSlice 获取一个 string 为 key,数组 string 为 val 的 map GetStringMapStringSlice(key string) map[string][]string // Load 加载配置到某个对象 Load(key string, val interface{}) error }
Config 定义了配置文件服务,读取配置文件,支持点分割的路径读取 例如: .Get("app.name") 表示从 app 文件中读取 name 属性 建议使用 yaml 属性, https://yaml.org/spec/1.2/spec.html
type CtxFielder ¶
CtxFielder 定义了从context中获取信息的方法
type Distributed ¶
type Distributed interface { // Select 分布式选择器, 所有节点对某个服务进行抢占,只选择其中一个节点 // ServiceName 服务名字 // appID 当前的AppID // holdTime 分布式选择器hold住的时间 // 返回值 // selectAppID 分布式选择器最终选择的App // err 异常才返回,如果没有被选择,不返回err Select(serviceName string, appID string, holdTime time.Duration) (selectAppID string, err error) }
Distributed 分布式服务
type Env ¶
type Env interface { // AppEnv 获取当前的环境,建议分为 development/testing/production AppEnv() string // IsExist 判断一个环境变量是否有被设置 IsExist(string) bool // Get 获取某个环境变量,如果没有设置,返回"" Get(string) string // All 获取所有的环境变量,.env 和运行环境变量融合后结果 All() map[string]string }
Env 定义环境变量服务
type Formatter ¶
type Formatter func(level LogLevel, t time.Time, msg string, fields map[string]interface{}) ([]byte, error)
Formatter 定义了将日志信息组织成字符串的通用方法
type Log ¶
type Log interface { // Panic 表示会导致整个程序出现崩溃的日志信息 Panic(ctx context.Context, msg string, fields map[string]interface{}) // Fatal 表示会导致当前这个请求出现提前终止的错误信息 Fatal(ctx context.Context, msg string, fields map[string]interface{}) // Error 表示出现错误,但是不一定影响后续请求逻辑的错误信息 Error(ctx context.Context, msg string, fields map[string]interface{}) // Warn 表示出现错误,但是一定不影响后续请求逻辑的报警信息 Warn(ctx context.Context, msg string, fields map[string]interface{}) // Info 表示正常的日志信息输出 Info(ctx context.Context, msg string, fields map[string]interface{}) // Debug 表示在调试状态下打印出来的日志信息 Debug(ctx context.Context, msg string, fields map[string]interface{}) // Trace 表示最详细的信息,一般信息量比较大,可能包含调用堆栈等信息 Trace(ctx context.Context, msg string, fields map[string]interface{}) // SetLevel 设置日志级别 SetLevel(level LogLevel) // SetCtxFielder 从context中获取上下文字段field SetCtxFielder(handler CtxFielder) // SetFormatter 设置输出格式 SetFormatter(formatter Formatter) // SetOutput 设置输出管道 SetOutput(out io.Writer) }
Log 定义了日志服务协议
type LogLevel ¶
type LogLevel uint32
const ( // UnknownLevel 表示未知的日志级别 UnknownLevel LogLevel = iota // PanicLevel level, panic 表示会导致整个程序出现崩溃的日志信息 PanicLevel // FatalLevel level. fatal 表示会导致当前这个请求出现提前终止的错误信息 FatalLevel // ErrorLevel level. error 表示出现错误,但是不一定影响后续请求逻辑的错误信息 ErrorLevel // WarnLevel level. warn 表示出现错误,但是一定不影响后续请求逻辑的报警信息 WarnLevel // InfoLevel level. info 表示正常的日志信息输出 InfoLevel // DebugLevel level. debug 表示在调试状态下打印出来的日志信息 DebugLevel // TraceLevel level. trace 表示最详细的信息,一般信息量比较大,可能包含调用堆栈等信息 TraceLevel )
type ORMService ¶ added in v1.0.0
ORMService 表示传入的参数
type RedisConfig ¶ added in v1.0.0
type RedisConfig struct {
*redis.Options
}
RedisConfig 为PineappleBee定义的Redis配置结构
func (*RedisConfig) UniqKey ¶ added in v1.0.0
func (conf *RedisConfig) UniqKey() string
UniqKey 用来唯一标识一个RedisConfig配置
type RedisOption ¶ added in v1.0.0
type RedisOption func(container framework.Container, config *RedisConfig) error
RedisOption 代表初始化的时候的选项
type RedisService ¶ added in v1.0.0
type RedisService interface { // GetClient 获取redis连接实例 GetClient(options ...RedisOption) (*redis.Client, error) }
RedisService 表示一个redis服务
type RememberFunc ¶ added in v1.0.0
RememberFunc 缓存的Remember方法使用,Cache-Aside模式对应的对象生成方法
type SSHConfig ¶ added in v1.0.0
type SSHConfig struct { NetWork string Host string Port string *ssh.ClientConfig }
SSHConfig 为PB定义的SSH配置结构
type SSHService ¶ added in v1.0.0
type SSHService interface { // GetClient 获取ssh连接实例 GetClient(option ...SSHOption) (*ssh.Client, error) }
SSHService 表示一个ssh服务
type Trace ¶
type Trace interface { // WithContext register new trace to context WithTrace(c context.Context, trace *TraceContext) context.Context // GetTrace From trace context GetTrace(c context.Context) *TraceContext // NewTrace generate a new trace NewTrace() *TraceContext // StartSpan generate cspan for child call StartSpan(trace *TraceContext) *TraceContext // traceContext to map for logger ToMap(trace *TraceContext) map[string]string // GetTrace By Http ExtractHTTP(req *http.Request) *TraceContext // Set Trace to Http InjectHTTP(req *http.Request, trace *TraceContext) *http.Request }