Kratos适配GaussDB开源开发任务心得
代码仓库
https://github.com/qixia1998/kratos_gauss
开发过程
参考:go kratos的文档:https://go-kratos.dev/docs/
1.使用go kratos创建一个user用户服务项目结构目录如下:
分别提供user服务的gRPC和HTTP接口,编写接口对应相关的逻辑之后生成相关API接口,可以在swagger文档中看到我们的接口。
在data层中引入GaussDB的驱动然后修改驱动连接配置
这里需要注意在 GORM 中,默认情况下,表名是根据模型的名称通过复数化规则生成的。例如,模型 user
的表名会被默认设为 users
这里需要设置SingularTable: true,
来禁用表名复数化。
另外在config配置文件中:
data:
database:
driver: opengauss
source: host=host port=port user=user dbname=dbname password=password sslmode=disable
驱动名称需要设置为 opengauss。
总结
Kratos internal 目录里的 biz、data、service、server、conf 这 5 个目录。
- biz:文档里说了类似 DDD 的 domain 层,也就是 DDD 架构中的领域层。这里还定义了对业务操作的接口。业务逻辑组装。
- data:对数据库 db,缓存 cache 的封装,并且实现 biz 中定义的接口。它将领域对象重新拿出来,这里去掉了 DDD 的基础层。
- service:实现 api 定义的服务层,类似 DDD 的应用层。处理数据传输对象到 biz(领域实体)的转换。同时协同各类 biz 交互,不应处理复杂逻辑。
- server:http 和 grpc 实例的创建和配置,以及注册对应的 service。
Gorm 默认情况下,表名是根据模型的名称通过复数化规则生成的。解决方案:
1. 禁用表名复数化 SingularTable: true
2. 通过 TableName
方法自定义表名
3. 动态指定表名
4. 保持复数化规则但自定义特定表名
验证截图
验证思路
通过kratos run 启动服务,分别调用HTTP接口或者gRPC接口,验证user服务的四个接口是否可用,并查看kratos是否能与GaussDB进行数据交互。
1.swagger
2.HTTP接口
/get接口
/delete接口
create接口&udpdate接口在gRPC中演示
3.gRPC接口
/update接口
/create接口
4.控制台日志
- 点赞
- 收藏
- 关注作者
评论(0)