我写过很多 “从…到…” 的文章,你如果也想看看,请访问 fromto 这个 Tag。

Golang Resources 这篇中我给自己挖了个 Golang 的坑。中老年程序员都知道,最快掌握一门技术的方法就是用它做项目,而且要做真实的项目。所以,我准备把 SAGITEAM 目前正在使用的 MJP API 服务中的部分功能采用 Golang 实现一些。

MJP API 采用 Python Web 框架 Flask 开发,使用 uwsgi + Nginx 部署。目前有几十个实例,服务的游戏群 DAU 大约 200 万。选择 Flask 框架的原因在 Python web框架的选择 一文中有提及。

MJP API 是采用微服务思想实现的,换一个架构来实现新功能,对原来的服务不会产生任何影响。我选择了一个新的微服务使用 Golang 的 Gin 框架开发。选择 Gin 的原因在 Golang Resources 一文中有提及:

得益于 Golang 自带的 http 包的完善度,Golang 的 Web 框架可是百花齐放。我仔细比较了大约十几个 Web 框架,根据我的标准(小巧、灵活、优雅、性能、成长),在两个框架里面纠结了好一阵子:

最终我选择了 Gin。至于原因么…… 可能是因为名字短一点?

在具体实现的过程中,我碰到了不少问题。目前这个使用 Gin 开发的服务已经开发完成并上线了,我打算花一点时间,写一个系列文章,简短地介绍一下从 Flask 到 Gin 的转变。这个系列文章不会深入到框架原理层面,也不会非常详细,仅仅是我解决现实问题的记录。其中出现的源码基本都是片段。

所以呢,这并不是一个初学者入门系列。文中我只求记录,不求完整和连贯。若文中有部分内容对你有用,我就会感到很开心了。

基于上面的原因,读这个系列文章,可能需要下面的技能:

当然,如果你本来是 Golang 的老司机,现在希望了解一下 Flask,这个系列也会有所帮助的。

下面是目录部分:

  • 处理 JSON
  • Logging
  • 读取和生成配置文件
  • SQLAlchemy 和 gorm
  • 装饰器和中间件
  • 部署和优雅重启

从 Flash 到 Gin,并不代表我会放弃 Flask。新的服务使用 Gin 还是 Flask 实现,取决于具体的情况。毕竟作为程序员,不停折腾才有意义嘛。

只要我们还活着,最大的不变就是改变本身。

全文完