大项目学习 1 | 青训营笔记

149 阅读2分钟

这是我参加「第五届青训营 」伴学笔记创作活动的第 6 天

本文记录一下在大项目中遇到的问题,并作出现阶段的解答。暂作保留,后续回头再看,可能会发现进步多多。

记录问题如下:

  1. kitex和hertz交互的问题
  2. kitex与数据库交互的问题
  3. 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等等字段。那么设计数据库时,首先要把这些字段包含进去,可能结构不一定全部一致,但是至少不能有所缺失或者细小的变动。