GopherCon

4 19

第二届 Gopher China 大会

又一次,和同事去参加 GopherChina 2016 大会,了解 Go 语言相关的最新动态。和一年前不同,Go 语言已经受到许多企业青睐。一些知名企业开始使用 Go 语言开发。因而,本届大会更多的内容注重在 Go 实现的业务场景和架构上。

Go 与 高并发服务

Go 语言的 goroutine 特性,非常适合开发高并发网络服务。大会有几个题目聊起相关的内容。

百度前端接入团队分享了《Go在百度BFE的应用》。相关的内容其实在InfoQ有过分享。百度的服务体量太过巨大(日均千亿),代码优化手段 + Go的版本更新 对服务整体的提升作用不大,只能用特殊的措施 ———— 车轮大战。关闭 runtime 的GC,由代码根据目前程序的运行情况判断是否手动 runtime.GC()。以 master-worker的模式轮换正在服务和正在GC的程序。这种架构估计只有百度这种规模才用得上吧。但是私下的交流来说,小伙伴还是觉得 nginx + C 模块更适合。况且BFE之前那套也就是C写的,有足够的技术实力。

对比的来看是,吴小伟(skoo)的《Go在阿里云CDN系统的应用》。阿里 CDN 的网络接入系统还是 C 语言写的。CDN 的日志系统、调度系统和刷新系统是 Go 写的。这些业务对 Go 语言的 GC 不敏感,加上 Go 比 C 更简洁的语法特性,更快的开发效率,开发周围系统是很适合的。这里可以看到,同样是大流量系统,思考的角度也有不同。顺便说一下,skoo 是比较早研究 Go 语言的技术大神之一,博客有一些关于 Go 核心原理的文章。

4 29

第一届 Gopher China 大会

前两天去上海参加 Gopher China 2015 大会,见到很多久闻大名的大神和朋友,感觉很好。而且看到许多的企业,尤其是大企业都已经开始成规模的使用 golang,说明 golang 本身的设计和性能,已经受到了大家的认可。当然其实有很多的话题,不局限在 golang 了。

Go 语言核心

最重量级的话题,就是 雨痕 的 《Go 1.4 Runtime》。主要说了 Go 的内存分配器、垃圾回收器和goroutine调度器三块内容。我之前阅读过他的 《Go 语言笔记》 ,非常不错。很详细的阐述了 Go 语言本身的实现设计,同时为更合理的利用 golang 提供一些参考。 再加上他本人也很低调,真的是 隐士高人 的感觉。这次的他的演讲也相当不错。流畅的思路和平和的语言,而且不时的有诙谐幽默,让人听起来很有意思。唯一的遗憾是,他准备的ppt其实可以讲到3个小时,可惜会程只有45min,尽管大家还是争取多听了一些,但还是意犹未尽。

另一个超级话题,是 Robert Griesemer 的演讲。他是 Go 的三位作者之一,也是 Google V8 和 Java Hotspot VM 开发者之一,相当巨大的光环!他的演讲是关于 gofmt 的。 Go语言本身有很多的外围工具,比如 gofmt, godoc。其中格式化工具 gofmt 帮助大家简单直接的就统一了代码风格。Go 本身就带有 parser 包,就能够很好的去解析go源码到语法树。 唯一要吐槽的是 Q&A 环节,提问的童鞋用谁都听不懂的“英语”去问,哈哈哈!