跳到主要内容
版本:2.8.x(Latest)

微服务开发的大部分内容,都和单体服务一致,甚至比单体服务简单许多。本章是一些基础准备,想必各位都驾轻就熟。

代码初始化


GoFrame为我们准备好了初始化微服务仓库的命令。执行以下命令,建立名为user的服务,并保存在app目录下。

$ gf init app/user -a
initializing...
initialization done!
you can now run "cd app/user && gf run main.go" to start your journey, enjoy!

成功后,会在app下建立一个微服务。其实和单体服务没什么两样,就是缺少了go.modgo.sum文件。

将下列文件全部删除,留下一个空白的环境。

app/user/api/*
app/user/internal/controller/*
app/user/internal/cmd/cmd.go

完成后,进入微服务仓库,开始正式开发。

$ cd app/user

生成数据模型


建立数据表

user数据库下,执行SQL语句,建立保存用户数据的表:

CREATE TABLE `users` (
id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL,
password CHAR(32) NOT NULL,
email VARCHAR(100),
created_at DATETIME,
updated_at DATETIME
);

生成dao模型

app/user/hack/config.yaml

gfcli:  
gen:
dao:
- link: "mysql:root:12345678@tcp(srv.com:3306)/user"
descriptionTag: true
$ gf gen dao
generated: D:\project\proxima\app\user\internal\dao\users.go
generated: D:\project\proxima\app\user\internal\dao\internal\users.go
generated: D:\project\proxima\app\user\internal\model\do\users.go
generated: D:\project\proxima\app\user\internal\model\entity\users.go
done!

注意,应该在微服务仓库下执行gf gen dao命令,也就是app/user目录下,这里不要弄错了。后续其他的相关操作也类似。

生成pbentity模型

app/user/hack/config.yaml

gfcli:
gen:
dao:
- link: "mysql:root:12345678@tcp(srv.com:3306)/user"
descriptionTag: true

pbentity:
- link: "mysql:root:12345678@tcp(srv.com:3306)/user"
$ gf gen pbentity
generated: D:\project\proxima\app\user\manifest\protobuf\pbentity\users.proto
done!

与 gen dao 的差别

  • gen dao 生成的数据是go文件,主要在微服务内部使用,例如ORM操作;
  • gen pbentity生成的数据是proto文件,主要用作gRPC微服务之间的通讯。