这是我参与「第五届青训营 」伴学笔记创作活动的第 5 天
这篇笔记列出了我在做大项目时候遇到的一些问题和解决方法或是配置方法,由于大项目还处于早期,因此可能这次总结的问题都是初期配置的问题。这篇笔记是大项目的第一篇总结。
1、连接数据库方法
我们团队在大项目中使用MySQL数据库。这里介绍两种连接MySQL数据库方式。
1)使用Gorm连接
Gorm是Golang目前比较热门的数据库ORM操作库。 在项目根目录下创建dal文件夹,创建init文件启动mysql数据库。之后再在dal文件夹下创建mysql文件夹。mysql再创建init.go文件。init.go文件代码如下:
package mysql
import (
"gorm.io/driver/mysql"
"gorm.io/gorm"
)
var dsn = "root:mysql@tcp(127.0.0.1:3306)/web" //配置dsn(Data Source Name)。其中,root是数据库账户,mysql是数据库账户对应的密码,127.0.0.1:3306是数据库的ip和端口号,TCP表示使用TCP方式连接。
var DB *gorm.DB
func Init() {
var err error
DB, err = gorm.Open(mysql.Open(dsn), &gorm.Config{ //用gorm连接Mysql
if err != nil {
// todo 异常处理
panic(err)
}
}
2)使用goland连接
点击goland右侧的database,如图。
点击加号->Data Source->MySQL,如图。
填写信息,如图。其中,Host是连接ip地址,Port是端口号,User是用户名,PassWord是用户对应密码,之后点击OK即可。
2、Hertz框架更换
Hertz 是字节跳动服务框架团队研发的超大规模的企业级微服务 HTTP 框架,具有高易用性、易扩展、低时延等特点。在经过了字节跳动内部一年多的使用和迭代后,如今已在 CloudWeGo 正式开源。 目前,Hertz 已经成为了字节跳动内部最大的 HTTP 框架,线上接入的服务数量超过 1 万,峰值 QPS 超过 4 千万。除了各个业务线的同学使用外,也服务于内部很多基础组件, 如:函数计算平台 FaaS、压测平台、各类网关、Service Mesh 控制面等,均收到不错的使用反馈。在如此大规模的场景下,Hertz 拥有极强的稳定性和性能,在内部实践中某些典型服务, 如框架占比较高的服务、网关等服务,迁移 Hertz 后相比 Gin 框架,资源使用显著减少,CPU 使用率随流量大小降低 30%—60%,时延也有明显降低。
大项目给的基础版demo用的是Gin框架,本次大项目要将Gin框架全面换成Hertz框架。
在import中,将
"github.com/gin-gonic/gin"
替换为
"context"
"github.com/cloudwego/hertz/pkg/app"
在func定义中,将形参
func fun(c *gin.Context)
替换为
func fun(ctx context.Context, c *app.RequestContext)
在所有go文件和函数替换这两步,就基本完成了gin框架到hertz框架的转变,hertz框架的功能更加强大,推荐大作业还是使用hertz框架。
3、创建数据库模型
在根目录,创建model文件夹,之后创建common.go文件。在common文件中创建结构体,映射到数据库模型。以user为例。
type User struct {
Id int64 `json:"id,omitempty"`
Name string `json:"name,omitempty"`
}
此外,需要重新定义Response结构体,如下。
type Response struct {
StatusCode int32 `json:"status_code"`
StatusMsg string `json:"status_msg,omitempty"`
}
最后,在需要用到这些model的go文件中(controller中的go文件,用于各个模块的功能实现),需要import上述model文件,代码如下。
"github.com/RaymondCode/simple-demo/model"
4、总结
以上就是大项目初期的配置,本人水平有限,如有错误欢迎指正。