这是我参加「第五届青训营 」伴学笔记创作活动的第 6 天
本文记录一下在大项目中遇到的问题,并作出现阶段的解答。暂作保留,后续回头再看,可能会发现进步多多。
记录问题如下:
- kitex和hertz交互的问题
- kitex与数据库交互的问题
- kitex根据idl生成结构与自定义数据库结构的问题
接下来依次作出记录
kitex和hertz交互的问题
kitex属于微服务框架。如果一个实体要与kitex所生成的微服务进行交互,也就是RPC交互,其实本质上只要按照RPC规定的数据结构向服务器发送指定结构的数据即可做到。
hertz是http框架。hertz可以注册http的路由,比如“http://daxiangmu/douyin” 其中/douyin就是hertz注册的路由。
用户访问/douyin这个路由即可访问相应的功能。这个功能由hertz进行导向。
hertz在接收到http请求之后,可以选择导入微服务的客户端接口。并基于客户端接口编写与微服务交互的函数,向微服务发送请求。
kitex与数据库交互的问题
kitex的微服务架构主要可以分为两层或者三层。
最底层的就是与数据库交互的接口。在go语言中一般使用gorm将sql语句封装。
往上层就是业务处理逻辑,业务逻辑向数据库交互接口发送数据,并接收数据库返回。
kitex根据idl生成结构与自定义数据库结构的问题
kitex根据idl生成的go的结构和数据库表所对应的go的结构不一定一致。
在实际开发中,由于远程沟通不及时、人员不熟悉、安排不到位等等因素,导致每个队员基本上是各自为战。数据库表改来改去,go对应的数据结构变来变去。实在是折磨人。
但是idl根据官网的需求分析,大家有一个统一的标准。个人认为下次开发时,要以idl已有的字段为主。
比如idl中Video结构包括了author、userid等等字段。那么设计数据库时,首先要把这些字段包含进去,可能结构不一定全部一致,但是至少不能有所缺失或者细小的变动。