【月报】2023-04-湘北军团

湘北军团

久违了,湘北军团。迟到了二十多年的全国大赛终究没有缺席。

工作与学习

工作

因为工作的需求,这个月花了较多的时间投入到 GRPC 框架的学习和使用上。包括 GRPC 项目结构的搭建,跨 GRPC 服务中 context 的传递,GRPC interceptor 的使用,接口测试, 以及关于 protobuf 文件的管理。因为之前有 RPC 框架使用经验,所以上手还算是比较快的。

但是关于 GRPC IDL 文件的管理还是花了不少心思去研究了一下。之前在腾讯的时候,有一个独立的平台来对 protobuf 文件进行管理,可以直接在平台上进行 protobuf 文件的定义和修改,并且平台会帮你生成桩代码,且提供版本管理的功能。因为目前所在公司并没有提供这个的平台,所以 protobuf 文件的管理需要另寻它法。经过调研,大体上有三种方法。

第一种:存放在代码仓库,直接将项目所依赖到的所有 Proto 文件都存放在 proto/ 目录下,不经过开发工具的自动拉取和发布。但是这种一份 proto 文件需要多处维护,容易造成不一致。并且每次都需要程序员手动去介入 复制粘贴。基本都是不采纳的。只建议自己学习练习的时候可以这样使用。

第二种:独立仓库,即用一个独立的仓库来管理所有的 protobuf 文件。提前提供好生成桩代码的脚本文件,将生成的桩代码作为 sdk 引入使用。

第三种:镜像仓库,也是用一个独立的仓库来管理所有的 protobuf 文件。通过 ci 生成桩代码,并将桩代码同步到镜像仓库中(可以是一个 api 大仓,或者是多个子项目的小仓)。主要目的是将 protobuf 文件和桩代码文件分开管理。

同时对于第二种和第三种方法,在使用上,也有不同选择。用户可以选择用 submodule 的方法,也可以使用 se mantic version。

基于一些对比思考,我最终采用了镜像仓库 + api 大仓(通过结构来划分领域) + semantic version.

理由如下:镜像仓库将 protobuf 文件和桩代码分开管理,满足接口定义与实现划分的抽象理念,后续如果有其他语言的服务,方便扩展(修改 ci 即可)。根据 googleapis 的设计,以及我们服务的规模(体量小,微服务划分不算太多),我们倾向于对于 protobuf 的统一管理,即 api 大仓。同时采用 semantic version 来进行版本管理, 没有选择 submodule 的方式主要是因为 semantic version 这种方式更容易理解和使用,submodule 更多是用在 go 语言项目中,并且基于分支的使用方式不利于后续的管理,且在出现错误的时候,需要回滚代码。

Reference:

学习

英语

最近开始了早晨背英语。因为我个人习惯早上醒来后会赖床再躺一会,想着躺着刷手机不如拿来背单词。这样把之前规划的晚上背单词的计划提前到早上,似乎更好一些,一来早上精力更足,很多时候,一天的工作足以消耗你绝大部分的精力,晚上背单词的时候特别容易无精打采,效果不佳。二来减少了一些早上无意义的刷手机的行为,同时让自己更快的进入到良好的状态(刷手机真的很消耗工作的精力)。贵在坚持,希望自己的英语能力能够猪突猛进!

技术

  • 《kuberetes 权威指南》时常翻翻
  • 发现并看了较多的开源博客。主要是关于大数据方面的博客。(发现自己对于数据平台仍旧抱有热情)
  • 开始学习B站南京大学 jyy 的操作系统课程 ,操作系统知识永远是程序员的立身之本。

生活

无法离地的飞行

这个月开始比较频繁的开始骑单车上下班了,感觉大概有三分之二左右的时间是骑单车上下班的吧。骑车的感觉很不错,特别是在晚风吹拂的时候。我很喜欢电影《四海》的主题曲《无法离地的飞行》,骑单车会给我那种感觉。

蒙古草原,天气晴

B站播放链接:蒙古草原,天气晴(2006)

关野:

​ 你好吗?我们一家都很好。你平安回家了吗?

​ 我们这里已经入冬了,最近在渐渐地变冷,你的茶色斑点白马也非常精神地度过了寒冬。我们还是打算去找那些被偷走的马。

​ 普洁今年进了学校,她经常提起你哦。

​ 值此辞旧迎新之际,祝你的家人、朋友以及你本人身体健康。

​ 再见,在再次见面之前。

​ 普洁的母亲,艾鲁蒂内琪美古

我为普洁和她的母亲感到深深的难过。希望他们在另一个世界可以幸福。

推荐播客

【枫言枫语&梁杰】在加拿大工作和生活是什么体验

这个月听的较多的是 ggtalk 程序员的闲聊节目, 在家里无事的时候,听着梁杰讲他在加拿大的生活也挺有意思的。

下月见~