// InitDbConn 数据库连接
func InitDbConn(){
dbUrl := global.ServerConfig.HisInfo.DBUrl
dbUrl = fmt.Sprintf("%s?%s", dbUrl,"charset=utf8&parseTime=true")
MysqlDB, err := sql.Open("mysql", dbUrl)
if err !=nil{
panic(err)
}
err = MysqlDB.Ping()
if err!=nil{
panic(err)
}
global.MysqlDB = MysqlDB
}
// 服务启动方式
func main() {
global.BasePath = utils.ProjectPath()
defer initialize.InitClose()
initialize.InitConfig() // 初始化配置
initialize.InitLogger() // 初始化日志
initialize.InitDbConn() // 数据库连接
initialize.InitDb() // 数据库连接
fmt.Println(" gorm 连接成功...")
initialize.InitSrvConn() // grpc 连接
fmt.Println(" grpc 连接成功...")
global.Logger.Info("数据库连接成功...")
fmt.Println(" 数据库连接成功...")
global.Logger.Info(fmt.Sprintf("启动服务器,端口:%d", global.Port))
// 注册 interceptor
var opts []grpc.ServerOption
opts = append(opts, grpc.UnaryInterceptor(middleware.Interceptor))
g := grpc.NewServer(opts...)
fee.RegisterGreeterServer(g, &Server{})
grpcDns := fmt.Sprintf("0.0.0.0:%v", global.GrpcPort)
lis, err := net.Listen("tcp", grpcDns)
if err != nil {
panic("failed to listen:" + err.Error())
}
err = g.Serve(lis)
if err != nil {
panic("failed to start grpc:" + err.Error())
}
// 接收终止信号
quit := make(chan os.Signal)
signal.Notify(quit, syscall.SIGINT, syscall.SIGTERM)
<-quit
}
之前 python 就是单线程 初始化了一个 mysql 连接,每个请求都会排队使用 mysql 连接。 问一下 go 是不是也这种情况?各位大佬有没有遇到这种情况,多核的情况下是怎么个使用的。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.