网络研讨会视频:高效开发 Go 微服务
所谓高效程序员不仅要快速地完成代码,更要将代码写得有品质。如何把代码写得又快又好,手上有没有一个好的辅助工具就是重要的关键。前一阵子的 2020 中国 Go 开发者调查报告指出,超过 70% 的 Gopher 都选用 JetBrains 的 GoLand 做开发工具,可见 GoLand 在生产力的提升是已经通过业界验证的。(可在腾讯视频或哔哩哔哩观看)
数据来源:Go CN 开发者调查报告
为了让更多 Gopher 同学更高效,也搭上目前微服务的热潮,我们在 4/17(五)晚上 9 点举办了「高效开发 Go 微服务」网络研讨会,视频现已上传,需要回放的同学可以线上观看了。
主題分享
本次邀请到 GoLand 专属技术布道师 Florin Pățan 来为我们分享。Florin 相信大家已经不陌生,去年也跟我一起飞到北京参加 Gopher China 大会。对于 Go 语言开发、GoLand 生产力技巧都有很深的研究。在这场分享里,Florin 先以一个非常简单、仅回传 Hello, World 字符串的程序做为开始(视频 00:03:35 处),通过将回传格式改成 JSON(视频 00:52:45 处)、把程序 build 成 Docker Image(视频 00:25:00 处)、以 Kubernetes Cluster 运行 PostgreSQL 数据库容器并将程序连接其上(视频 00:07:52 处),逐步呈现实现一个 Go 微服务所需经历的完整工作流程。全程演示采用 GoLand 一镜到底,不需在多个不同软件间切换而损失专注力,并将生产力最大化,尽享编程乐趣。
在前 50 分钟的分享里,Florin 演示包括:创建项目对 Go SDK、环境变量、Go Module 的支持(视频 00:04:55 处),写代码时对 Go 语法及依赖包的提示、补全及自动修正(视频 00:12:30 处),连接数据库时在字符串注入 SQL 语法高亮以及对 SQL 语句、Table 和 Column 名称的补全(视频 00:09:40 处),通过 Service 窗口操作 Docker 和 Kubernetes Cluster 及对 YAML 文件支持(视频 00:08:10 处),以 HTTP Client 验证服务运行(视频 00:33:15 处)。在最后故意安排了一个失误来演示如何用 GoLand 生成测试文件、写测试代码并检示覆盖率报告等(视频 00:45:10 处)超过数十个操作技巧,让 Gopher 们体现高效程序员的编程技巧。
在活动的最后,Florin 为了协助我抽出幸运的得奖者,还将这个微服务新增了一个随机数字的产生器,并通过 GoLand 一键分享到 GitHub 上(视频 01:33:00 处)。好奇 Florin 的代码是怎么写?可以到他的 GitHub 上下载一份回来瞧瞧,假如你想要贡献的话,可以发 PR 给他呦!
嘉宾分享
本次活动也很荣幸邀请到舒先、利开园及 Mark 三位嘉宾与我们分享与微服务相关的主题:
舒老师(视频 00:56:25 处)分享 Go-Micro 框架的历史、特性及 Go-Micro 中国站提供的资源,并以清楚的图表解释其三层架构及框架内各组件间的分工,并以 GoLand 演示如何以 Go-Micro 实现一个简单的微服务,并在命令行及网页 UI 上演示调用方式。舒老师提到他平时就是使用 GoLand 在做开发,因为「傻瓜式」的默认配置就能直接使用,非常方便!
利老师(视频 01:06:10 处)则是通过几个不同的场景跟大家讨论微服务治理会面临的挑战,以及 TARS 提供哪些方案来协助开发者更优雅的解决。并以图表说明 TARS 在各个层面包括日志、可视化、变更能提供给开发者的好处有哪些?以及如何以调度、弹性扩缩来降低容灾所带来损失。利老师也提到使用 IDL 接口定義語言的微服务框架将可以让如 GoLand 这种 IDE 有更好的支持。
Mark (视频 01:17:40 处)则补充 TARS 在腾讯内部已经应用十余年,是个支持多语言的框架,不止是 Go 语言,也支持 C++、Java、PHP、Nodejs。在捐赠给 Linux 基金会後,今年 3 月也正式成立基金会,未来会迈向国际、并专注发展微服务开源生态。基金会也与社区友好,已经多年支持 Gopher China 大会,目前也正在计划到国际大会上发表,更多细节可以关注公众号及官网。
问答环节整理
这次会后提问非常多(视频 01:31:15 开始),问答重点整理如下:
Q. 在 GoLand 里如何使用深色的 Theme 搭配浅色的 Editor Color Scheme,避免在 debug 时候看不清文字?
通过快捷键 Ctrl + ` 调用出快速切换 Theme 菜单,先选 Editor Color Scheme 成深色,GoLand 会询问是否要将 Theme 也切换。
Q. Go-Micro 目前有哪些案例?
可以参考官网的使用者案例,开源案例可以看中国站(github: micro-in-cn)
Q. Go-Micro 的 Service 支持负载均衡么?存在单点故障么?
支持。Selector 模块就是做这个的。单点故障任何服务都存在,Go-Micro 有 wrapper 可以完成自定义降级。
Q. 微服务适用于游戏开发么?业界有没有成功的案例呢?
适合。腾讯本身就是一个成功的案例,内部使用 TarsGo 已完成许多项目。
Q. GitHub上的 TarsGo 与同学内部的版本是不是同步的吗?
最近已把之前没同步的都同步了,可到 GitHub 上查阅最新版本。
Q. TarsGo 考虑支持 Web Socket 吗?
TarsGo 主要专注在后台服务的开发,想要使用 Web Socket 的话,可以用 TarsNode。
Q. TarsGo 对 Go Module 支持的如何?
目前 TarsGo 是支持 Go Module 的。
Q. 除了 TarsGo、Go-Micro,还有哪些流行的微服务方案?
还可以参考 go-kit、dubbo-go、motan-go 等项目。
在观看 Florin 的演示时,有没有发现他的进度条跟原生的 GoLand 不太一样呢?这个是由 Florin 亲自开发的 Gopher 视觉插件,安装后 GoLand 里的所有进度条都会有 Go 吉祥物在那边跑呢!希望这场「高效开发 Go 微服务」的分享对各位同学使用 GoLand 开发微服务有帮助。我们也会持续举办不同主题的网络研讨会,请大家持续关注,下次见!
特别鸣谢 – Go CN 中国
Go中国技术社区面向国内Go语言开发者,提供中立的、由Go语言技术实践主导的技术资讯、技术会议、赛事及培训等,搭建国内最具规模和生命力的 Go 开发者社区。