GopherChina GopherChina 2018 keynote 点评

AlexaMa · 2018年04月18日 · 678 次阅读
本帖已被设为精华帖!

GopherChina 2018 keynote 点评

作为一名参加了两届 GopherChina 的「老人」,今年为了去沟里吃樱桃,就没去现场凑热闹了。不过,会议的 keynote 是绝不会错过的。AstaXie 也在会议结束后的第一时间放出了会议的 ppt. 看了一下,里面的 ppt 并不完整,缺了第二天的第一个 keynote. 手上有这个资源的同学可以分享我一下.

1.1 基于 Go 构建滴滴核心业务平台的实践

介绍了滴滴老服务迁移到 Go 的过程。很多内容感同身受,因为在一年前,我们也完成了类似的操作。从 slides 看,其日志收集、分布式调用追踪等微服务演进过程中解决的问题都是一笔带过,但是其实都是挺花时间的事情。可以参考微服务 troubleshooting 利器——调用链

比较遗憾的是没有看到其在服务迁移的时候如何确定服务边界和问题领域,更没有深入谈如何拆分低耦合高内聚的微服务的思考。

解决WaitGroup和 GC 问题比较有意思,了解一下即可。

最后介绍了两个开源工具Gendryjsonitr, 典型的瑞士军刀、直击目标风格,很棒。

Gendry 是一个数据库操作辅助工具,核心是 sql builder。我非常喜欢其设计理念:为什么要开发 Gendry。简单讲,就是在不透明和不易调优的 ORM 与繁琐、低效的裸写 sql 之间找一个平衡。

jsosniter 则是一个高效的 json encodec. 虽然 benchmark 亮眼,但是我想大部分场景下,我还是会优先选择标准库。因为很多 json 序列换和反序列化的细节处理上,标准库还是最完善的。

1.2 Go 在 Grab 地理服务中的实践

从 slides 看,应该是最容易听懂的一个 keynote 吧。没有贬义的意思,而是对于作者的思维清晰程度和表达能力非常佩服。基于地理位置做供需匹配的同学可以把这个当做范文,看看作者是如何把系统从基于 PostGIS 开始逐步演进到 geohash/redis/shard/cell 方案的。

整个内容非常顺畅,似乎作者在现场还普及了一个「能够做叫车服务就能够做送外卖」的梗。

1.3 Rethinking Errors for Go 2

来自 Golang 核心组的 Marcel 同学向大家介绍了 Go 2 中可能会引入的 error 处理机制。我个人还是能够接受 Go 2 中这个 draft 阶段的错误处理方式的。

作者在 demo 中使用errcerrd两个 lib 做演示,想了解细节的同学可以直接点进去看看如何使用。

与现有的错误处理方式比较,能够显著减少 if err != nil 这种代码,并且有更强的语言表达能力。虽然很多人吐槽说 Go 2 最终还是可能会引入关键字 try,但是从 Marcel 的介绍看,这只不过是一个语法糖而已,编译时候就 inline 掉了。另外,即使最终的方案通过 try 实现了更多的其他功能,也没有必要一定要避免try关键字与其他语言撞车的事实吧。毕竟语言设计追求的是尽可能的合理性和正确性,而不是独特性。

Go 在区块链的发展和演进

仅从 slides 看,就是个区块链科普文,当然,不排除作者现场演讲能力比较强,抖了很多现场才能听到的料。如果你已经对区块链比较了解,可以略过。

Badger_ Fast Key-Value DB in Go

一个 pure go 的基于 LSM tree 的 key-value 数据库。如果你不是很了解 LSM Tree, 可以参考鄙人的拙文:LSM Tree/MemTable/SSTable 基本原理。Badger 主要有以下几个特点:

  1. pure go 实现,没有 cgo 依赖。
  2. Badger 的 LSM tree 存储的是 {key, value_pointer},因此可以有效降低 LSM tree 的大小, 直接 load 到内存。
  3. 印度小哥现场跑分,读写性能比 boltDB 和 RocksDB 都有相当优势。
  4. bloom-filter 和 file merge 实现中规中矩。
  5. 支持无锁的并发事物。

开源那是必须的,想进一步研究的同学可以移步dgraph-io/badger.

Golang 在阿里巴巴调度系统 Sigma 中的实践

slides 看不出太多架构、思路和案例的内容,可能是一个干货在心中的 speaker,ppt 只是提词器罢了。Golang 语言采坑部分比较基础,稍微有经验的 gopher 应该都知道。不过从去年对阿里分享的失望看,今年大家对阿里的分享好评率要好很多。

罗辑思维 Go 语言微服务改造实践

都说这次大会 speaker 的幽默水平历届最高,来自罗辑思维的方圆老师更是重新定义了「系统可用性」:只要老板觉得是就可以。

分享的内容涵盖了一个中小互联网企业微服务化的方方面面:api gateway, 服务注册、服务发现、多级缓存、熔断降级。基本可以作为一个公司微服务进程第一阶段的范文来研究。微服务化的后续阶段,比如容器化以及与之配合的 CI/CD、日志管理、分布式追踪、auto-scale、立体监控,从其展望上看也有计划。因此可以持续关注方圆老师的后续动作。

Golang 打造下一代互联网-IPFS 全解析

本质上是一个 p2p 的去中心化分布式存储系统。基于其之上,可以构建各种应用。最 promising 的当然是 http 服务。

整个 IPFS 使用的基本都是现成的,但是却组合出了一个非常有意思的场景应用。因为之前也有关注 IPFS,内容本身没有太多其他收获。权当是一次复习吧。

如何用 GO 开发一个区块链项目

从 slides 看,就是介绍了一些区块链的基础概念,后面两页 ppt 才遇到 go,一笔带过. 个人没有太多收获。

Bazel build Go

对 Bazel 不是太熟悉,在看这个 keynote 前,只在 tensorflow 教程中跟着走过一下 Bazel,因此看到国内有公司把 Bazel 拿来在实际开发中应用还是心生敬仰的。

就我经历的项目看,go 的 build 和依赖管理都有不错的轻量级工具,使用 Bazel 来 build 应该更加适合大型的多语言混合项目。

基于 Go-Ethereum 构建 DPOS 机制下的区块链

又是一个区块链科普文,不过相对更加聚焦到共识算法上。

深入 CGO 编程

打开 slides 我就被震惊了,足足 145 页 ppt, 内容也毫无灌水,问题聚焦,示例丰富。 本来觉得自己是知道什么叫做 CGO 的,但是看完以后,感觉自己才真正开始入门。建议谢大应该给这样负责的 speaker 加鸡腿。

这应该是我见过的关于 Golang 中使用 CGO 最全面、丰富、深入的资料了。虽然在大部分场景下,都会避免使用 CGO,但是如果遇到绕不开的场景的时候,这绝对是第一手的学习资料。

runv-kata-gopher-china

kata container: 安全如虚拟机,快如容器。在去年的 kubeCOn'17 就发布了,目前还没有看到国内有公司在生成环境使用。持观望态度吧。slides 内容太少,脑补不出来。不评价细节了。

Go toolchain internals and implementation based on arm64

介绍了 golang arm64 的编译工具链。除了开始提到的 AST 分析最近体会较深(基于 AST 写代码生成器),其他的还停留在概念了解上。不过还是向作者深入钻研的精神致敬。

Go 在探探后端的工程实践

又是一个公司落地 go 生态的例子。亮点是在测试部分做得非常全面和细致。对于在落地完善 CI 流程的同学(比如我),这部分有非常深远的参考意义。

其他

golang 从出生开始就提供了非常完善的基于 go pprof 的一系列性能 profiling 工具,这是很多其他语言羡慕不来的。而今年的会议有一个共同点是,性能调优工具除了使用 go pprof 以外,都会结合使用 Uber 开源的 golang 火焰图工具go-torch:

著名开源项目OpenResty作者章亦春也非常推崇使用火焰图来诊断性能问题。看来火焰图真的越来越火了.

看到去了现场的不少同学吐槽这次会议区块链内容比较多。其实我觉得这个 topic 还好,毕竟会议也需要结合一些当前的热点。比较遗憾的是区块链相关的 slides 质量都不是很高,这可能才是被吐槽的真正原因。

公司层面,现在不仅中小互联网公司大量使用 go 做基础架构,也越来越多大厂开始使用 go 构建一些基础组件。相信以后 gopher 不仅会在创业公司持续活跃,也会有更多到大厂工作的机会。

Originally published in liudanking.com

更多原创文章干货分享,请关注公众号
  • 加微信实战群请加微信(注明:实战群):gocnio
xiemengjun 将本帖设为了精华贴 02月11日 14:59
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册