1 Star 0 Fork 41

张鹏/shop-search-api

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
main.go 4.11 KB
一键复制 编辑 原始数据 按行查看 历史
webphp 提交于 2022-08-15 07:44 +08:00 . update
package main
import (
"context"
"fmt"
"gitee.com/phper95/pkg/cache"
"gitee.com/phper95/pkg/db"
"gitee.com/phper95/pkg/es"
"gitee.com/phper95/pkg/httpclient"
"gitee.com/phper95/pkg/logger"
"gitee.com/phper95/pkg/nosql"
"gitee.com/phper95/pkg/prome"
"gitee.com/phper95/pkg/shutdown"
"gitee.com/phper95/pkg/timeutil"
"gitee.com/phper95/pkg/trace"
"github.com/go-redis/redis/v7"
"go.uber.org/zap"
"net/http"
"shop-search-api/config"
"shop-search-api/global"
"shop-search-api/internal/server/api"
"shop-search-api/metric"
"time"
)
func init() {
config.LoadConfig()
InitLog()
initMysqlClient()
initRedisClient()
initMongoClient()
initESClient()
initProme()
}
func InitLog() {
// 初始化 logger
global.LOG = logger.InitLogger(
//logger.WithDisableConsole(),
logger.WithTimeLayout(timeutil.CSTLayout),
logger.WithFileRotationP(config.Cfg.App.AppLogPath),
)
}
func initMysqlClient() {
mysqlCfg := config.Cfg.Mysql
logger.Warn("mysqlCfg", zap.Any("", mysqlCfg))
err := db.InitMysqlClient(db.DefaultClient, mysqlCfg.User, mysqlCfg.Password, mysqlCfg.Host, mysqlCfg.DBName)
if err != nil {
global.LOG.Error("mysql init error", zap.Error(err))
panic("initMysqlClient error")
}
global.DB = db.GetMysqlClient(db.DefaultClient).DB
}
func initRedisClient() {
redisCfg := config.Cfg.Redis
opt := redis.Options{
Addr: redisCfg.Host,
DB: redisCfg.DB,
MaxRetries: redisCfg.MaxRetries,
PoolSize: redisCfg.PoolSize,
MinIdleConns: redisCfg.MinIdleConn,
}
redisTrace := trace.Cache{
Name: "redis",
SlowLoggerMillisecond: 500,
Logger: logger.GetLogger(),
AlwaysTrace: config.Cfg.App.RunMode == config.RunModeDev,
}
err := cache.InitRedis(cache.DefaultRedisClient, &opt, &redisTrace)
if err != nil {
global.LOG.Error("redis init error", zap.Error(err))
panic("initRedisClient error")
}
global.CACHE = cache.GetRedisClient(cache.DefaultRedisClient)
}
func initESClient() {
ESCfg := config.Cfg.Elasticsearch
err := es.InitClientWithOptions(es.DefaultClient, ESCfg.Host,
ESCfg.User,
ESCfg.Password,
es.WithScheme("https"))
if err != nil {
logger.Error("InitClientWithOptions error", zap.Error(err), zap.String("client", es.DefaultClient))
panic(err)
}
global.ES = es.GetClient(es.DefaultClient)
}
func initMongoClient() {
err := nosql.InitMongoClient(nosql.DefaultMongoClient, config.Cfg.MongoDB.User,
config.Cfg.MongoDB.Password, config.Cfg.MongoDB.Host, 200)
if err != nil {
logger.Error("InitMongoClient error", zap.Error(err), zap.String("client", nosql.DefaultMongoClient))
//panic(err)
} else {
global.Mongo = nosql.GetMongoClient(nosql.DefaultMongoClient)
}
}
func initProme() {
prome.InitPromethues(config.Cfg.Prome.Host, time.Second*60, config.AppName, httpclient.DefaultClient, metric.ProductSearch)
}
func main() {
router := api.InitRouter()
listenAddr := fmt.Sprintf(":%d", config.Cfg.App.HttpPort)
global.LOG.Warn("start http server", zap.String("listenAddr", listenAddr))
server := &http.Server{
Addr: listenAddr,
Handler: router,
ReadTimeout: 10 * time.Second,
WriteTimeout: 10 * time.Second,
MaxHeaderBytes: 1 << 20,
}
go func() {
err := server.ListenAndServe()
if err != nil {
global.LOG.Error("http server start error", zap.Error(err))
}
}()
//优雅关闭
shutdown.NewHook().Close(
func() {
ctx, cancel := context.WithTimeout(context.Background(), time.Second*10)
defer cancel()
if err := server.Shutdown(ctx); err != nil {
global.LOG.Error("http server shutdown err", zap.Error(err))
}
},
func() {
es.CloseAll()
},
func() {
//关闭mysql
if err := db.CloseMysqlClient(db.DefaultClient); err != nil {
global.LOG.Error("mysql shutdown err", zap.Error(err), zap.String("client", db.DefaultClient))
}
},
func() {
err := global.CACHE.Close()
if err != nil {
global.LOG.Error("redis close error", zap.Error(err), zap.String("client", cache.DefaultRedisClient))
}
},
func() {
if global.Mongo != nil {
global.Mongo.Close()
}
},
func() {
err := global.LOG.Sync()
if err != nil {
fmt.Println(err)
}
},
)
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/zhang_peng00789/shop-search-api.git
git@gitee.com:zhang_peng00789/shop-search-api.git
zhang_peng00789
shop-search-api
shop-search-api
master

搜索帮助