go-zero api配置

2022-04-25 17:47 更新

api配置

api配置控制著api服務中的各種功能,包含但不限于服務監(jiān)聽地址,端口,環(huán)境配置,日志配置等,下面我們從一個簡單的配置來看一下api中常用配置分別有什么作用。

配置說明

通過yaml配置我們會發(fā)現(xiàn),有很多參數(shù)我們并沒有與config對齊,這是因為config定義中,有很多都是帶optional或者default 標簽的,對于optional可選項,你可以根據(jù)自己需求判斷是否需要設置,對于default標簽,如果你覺得默認值就已經(jīng)夠了,可以不用設置, 一般default中的值基本不用修改,可以認為是最佳實踐值。

Config

type Config struct{
    rest.RestConf // rest api配置
    Auth struct { // jwt鑒權(quán)配置
        AccessSecret string // jwt密鑰
        AccessExpire int64 // 有效期,單位:秒
    }
    Mysql struct { // 數(shù)據(jù)庫配置,除mysql外,可能還有mongo等其他數(shù)據(jù)庫
        DataSource string // mysql鏈接地址,滿足 $user:$password@tcp($ip:$port)/$db?$queries 格式即可
    }
    CacheRedis cache.CacheConf // redis緩存
    UserRpc    zrpc.RpcClientConf // rpc client配置
}

rest.RestConf

api服務基礎配置,包含監(jiān)聽地址,監(jiān)聽端口,證書配置,限流,熔斷參數(shù),超時參數(shù)等控制,對其展開我們可以看到:

service.ServiceConf // service配置
Host     string `json:",default=0.0.0.0"` // http監(jiān)聽ip,默認0.0.0.0
Port     int // http監(jiān)聽端口,必填
CertFile string `json:",optional"` // https證書文件,可選
KeyFile  string `json:",optional"` // https私鑰文件,可選 
Verbose  bool   `json:",optional"` // 是否打印詳細http請求日志
MaxConns int    `json:",default=10000"` // http同時可接受最大請求數(shù)(限流數(shù)),默認10000
MaxBytes int64  `json:",default=1048576,range=[0:8388608]"` // http可接受請求的最大ContentLength,默認1048576,被設置值不能必須在0到8388608之間
// milliseconds
Timeout      int64         `json:",default=3000"` // 超時時長控制,單位:毫秒,默認3000
CpuThreshold int64         `json:",default=900,range=[0:1000]"` // cpu降載閾值,默認900,可允許設置范圍0到1000
Signature    SignatureConf `json:",optional"` // 簽名配置

service.ServiceConf

type ServiceConf struct {
    Name       string // 服務名稱
    Log        logx.LogConf // 日志配置
    Mode       string            `json:",default=pro,options=dev|test|pre|pro"` // 服務環(huán)境,dev-開發(fā)環(huán)境,test-測試環(huán)境,pre-預發(fā)環(huán)境,pro-正式環(huán)境
    MetricsUrl string            `json:",optional"` // 指標上報接口地址,該地址需要支持post json即可
    Prometheus prometheus.Config `json:",optional"` // prometheus配置
}

logx.LogConf

type LogConf struct {
    ServiceName         string `json:",optional"` // 服務名稱
    Mode                string `json:",default=console,options=console|file|volume"` // 日志模式,console-輸出到console,file-輸出到當前服務器(容器)文件,,volume-輸出docker掛在文件內(nèi)
    Path                string `json:",default=logs"` // 日志存儲路徑
    Level               string `json:",default=info,options=info|error|severe"` // 日志級別
    Compress            bool   `json:",optional"` // 是否開啟gzip壓縮
    KeepDays            int    `json:",optional"` // 日志保留天數(shù)
    StackCooldownMillis int    `json:",default=100"` // 日志write間隔
}

prometheus.Config

type Config struct {
    Host string `json:",optional"` // prometheus 監(jiān)聽host
    Port int    `json:",default=9101"` // prometheus 監(jiān)聽端口
    Path string `json:",default=/metrics"` // 上報地址
}

SignatureConf

SignatureConf struct {
    Strict      bool          `json:",default=false"` // 是否Strict模式,如果是則PrivateKeys必填
    Expiry      time.Duration `json:",default=1h"` // 有效期,默認1小時
    PrivateKeys []PrivateKeyConf // 簽名密鑰相關(guān)配置
}

PrivateKeyConf

PrivateKeyConf struct {
    Fingerprint string // 指紋配置
    KeyFile     string // 密鑰配置
}

cache.CacheConf

ClusterConf []NodeConf

NodeConf struct {
    redis.RedisConf
    Weight int `json:",default=100"` // 權(quán)重
}

redis.RedisConf

RedisConf struct {
    Host string // redis地址
    Type string `json:",default=node,options=node|cluster"` // redis類型
    Pass string `json:",optional"` // redis密碼
}


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號