Gopher China 2021,未来可期

243 阅读16分钟

这篇仅用来记录听完2021 gopher china的感受及感悟。

2020年的gopher china因为有事买了票就没法过去听了,这次终于赶上了。6/25厦门出发到北京,从机场到酒店,遇到了暴雨、交通管制、大风、冰雹,听一场gopher china真的有这么难吗?不过还好,最后顺利到酒店了,北京朗丽兹西山花园酒店,带早餐的真是舒服。晚上还在会场逛了逛,逛了逛酒店。

言归正传,隔天的会议,早早就起了个床,吃个早餐去占位置了。有个插曲,买了票,但是小程序就是显示不出来。原来是我这次买票用的是手机号,小程序没有绑定手机号,所以没显示出来,差点吓出一个冷汗。早上应该8点就到会场了,直接就跑到第一排坐,简直VIP座位。

第一天有7场,,第二天是分会场,黑体的是我认真听的,精力有限:

  • Generics in Go ---> Ian Lance Taylor
  • 基于Golang构建高可扩展的云原生PaaS平台 ---> 刘浩杨
  • MOSN 在云原生的探索和实践 ---> 王发康
  • 浅谈全链路可观测性:从应用到Go Runtime ---> 黄东旭
  • Improving Go Backend Developer Experience in Grab ---> Chee Ming Chew
  • 利用夜莺扩展能力打造全方位监控体系 ---> 喻波
  • Build a home monitoring system with Go ---> Florin Patan
  • 深入go module ---> 鸟窝
  • 深入理解BFE ---> 章淼
  • GO如何助力企业进行微服务转型 ---> 万俊峰

听完大会,最主要的两个关键词:方案,抽象,内存

我会先分别记录下每个分享我看到的点,然后总结得再记录下自己的心得,会有点白话文,但就是自己真实的感受。


Generics in Go - Ian Lance Taylor

第一个分享就是和Go core team的成员交流,不过是gocn有个人专门在问Ian问题。网络断断续续,听得不是很完整,并且也听得不是很懂。这里有两个问题:

  • 自己的英语真的是很烂,要多锻炼啊;
  • 中国人说英语我听不懂,我听得懂外国人说一些,但是外国人又听得懂我听不懂的中国人在说什么,就很神奇。

总之,第一篇分享其实我没记到什么,在网络中断后结束了,说实话有点莫名其妙。前面的问题更多是个人的,其实在go技术方面我也应该好好反思,如果去做。就是如果真的有机会和Go core team的成员的对话的或者可以提问的时候,你能提什么问题?讲道理,即使让我准备要提问,我都不知道应该提问什么?对Go泛型的问题,我对泛型是什么怎么用都一知半解,我如果去提问题?放到一年之后,如果明年的gopher china又有机会,我是否能提上问题?

其实我还是一直专注在Go的业务使用,没有去关注社区的情况,没有去看看别人关心的问题。当然,还缺少对语言的横向比较。我不知道这个社区怎么发展,不知道在关注什么,这就会让我脱离更高的梯队。

  • 应该去多翻翻Go社区或者issue的问题,多去了解别的gopher关心的问题

  • 多去看看横向比较的文章,不要只专注在Go里面,多去请教不用语言的实现方式


基于Golang构建高可扩展的云原生PaaS平台 - 刘浩杨

这一个是这次比较期待的分享了,一个是因为看介绍比较符合自己设计的一个规划,当然没有他这么大,专业。另一个是,他也是基础架构的负责人,想看下他们的基础架构在做的一些事,请教一下。

整体听下来,也挺符合我的预期的。业务驱动了整个技术的产生,目的就是为了打造一个标准交付平台。对很多中间件,插件等,做了很多的封装,这也是整个分享最重要的一个概念抽象。能抽象的东西,绝对抽象,用来兼容。这也是高级工程师,我觉得比较的能力之一。

这个分享讲的就更多在我看来,是我对未来部门架构的一个构想,当然他们已经做出来了,和我的目标方向其实是一致的,就是这么做的。我不懂的可能就是很完整的链路,里面的一个技术选型这些。我之前可能会疑惑,怀疑是不是这么设计的,但是听完这个分享之后,我就更加明确了,我现在做的事情的正确性,方向也是没有问题。

唯一遗憾的就是,本以为架构里面的HAPPaaS是go写的,封装抽象的业务模块,但是实际不是,也没有开源,因为这里都是java写的。在我看来,这层用go写的话,就100%肯定了我设计的架构的方向了。当然,这并不影响,我基于这个PaaS的框架,去梳理我之后项目交付,代码开发架构里面的一些问题及规划。这个分享,给我的帮助还是非常大的。

最后一点,我一直以为封装抽象,例如data store,可以cos,fs等,这些是基础架构的东西,但是在他们看来是业务模块。反而是底层环境才算是基础架构的东西,这个只能说之前没接触过大厂,不知道里面的定义吧。


MOSN在云原生的探索和实践 - 王发康

这一个分享我本来没有报太大希望学到什么东西,因为觉得这个架构我听不懂,也不知道在干嘛。但是事实相反,这个分享一开始讲cgo,我觉得好像可以听点东西。当然不是一开始就讲cgo,而是先讲了MOSN这个架构。这个开源架构确实看起来是一个开源得很棒的一个项目。并且从选型,到开发,到和其他开源项目交流想法,共创社区,确实是一个很完整的开源项目。可能在某些人看来,这个是一个很正常的开源项目,但是我之前没有开源过项目,不懂这些东西。通过这个分享,我看到了一个很完整的开源过程。

这个分享听完,也给自己之后在写cgo多留了一个心眼,知道go调c的一些需要注意的问题。

一个项目好,单靠开源,并不会让大家觉得是好的,有说明,讲出来的才真正的可以看到这个项目的好。这个王老师,在讲的时候,比较了很多的其他的方案,并且每个都是了解挺透彻的,让我挺佩服的。


浅谈全链路可观测性:从应用到Go Runtime - 黄东旭

一个trace的分享,相较于其他的分享,这个分享会比较有趣。有趣的不仅仅是内容,也是这个人,和他的PPT。一开场谢大介绍这个人的时候,就说是程序员里面的音乐家。也确实,从外形看上去就很音乐。PPT的风格也是随性的,内容没有严格技术上的严谨,反而给整个演讲增添了很多趣味。

trace的概念也是在这次演讲上才完整听到的,之前很多都只是打点,收集一些数据。通过这个分享,了解了trace,也知道真正trace在做什么东西,拓宽了很多知识面。不同的trace方式,也各有自己的优缺点。

另外一点的是,在讲为什么选择go的时候,少有的讲了go的缺点是无法构建C亲和性的应用。这个倒是我之前都没听过的,甚至如果当下让我说go缺点在哪里,我还说不出来。但是这个分享上我知道了,再往深层次挖,为什么他知道我不知道呢?很重要的是之前的经历,多语言编程的经历,当然和自己写的业务也有关。当你越往高级走,或者资深走,更应该了解底层数据是如何存储及传递的。C++众所周知性能是最好的,但是不易开发,成本高,但是可以直接控制CPU线程。

所以慢慢业务写多了,同时应该用不同语言的角度去思考这个的实现,才能够对整个生态有个感知。


Improving Go Backend Developer Experience in Grab

如果说前三个分享是拓宽我的知识面的,将解决方案和技术层面的,那这个分享讲的就是如何go开发的。如何go开发指的是,从一个功能的提出,设计,开发,到最后实现,部署,这么一整个流程。我看到了一个很完整的流水线,虽然不能和大厂的比,但是是我想做的,跟我想要做的基础架构,减少开发成本提炼出来的模块化,不谋而合。让我坚信我现在的设计,及方向是没有问题的。

当然这个的演讲,说的是很沉闷的,因为声音很低,听得让人会很想睡觉。

总之,这个分享,给我一个标准流程的这个介绍,大厂里面就是这么干的,我自己也可以在团队里面实现。而且,开发不一定只是考虑技术的深度,也要考虑在开发过程中的工具,去提升团队开发的效率。

  • 梳理自己的标准开发流程

利用夜莺扩展能力打造全方位监控体系

Build a home monitoring system with Go

没认真听,听不进去了,夜莺听起来也只是随便分享,并没有什么重要,看分享的人也不是很想分享。


深入go module - 鸟窝

这个分享顾名思义就是对go module的一个分享,讲了go module的一些细节。听这个更多是完善自己对go module的一些用法,以及里面一些依赖调用的概念。听完之后,感觉之前用的go mod就是个弟弟,还有好多可以用的,而且也没有好好研究下包管理要怎么做。本来想问问题的,但是没问上。但还是很有收获的,让我会回去思考自己部门架构包的go module要怎么管理。


深入BFE - 章淼

一个我原本不觉得会获取什么东西的一个分享,但最后可以说是我收获最多的一个演讲。不仅是在技术上的开阔视野,同时看到了分享人软实力的一面。BFE这个东西我在之前还是没听过的,第一次接触,主要是实现了一个网络转入转出,限流,负载的一个L7负载均衡器(可能描述没有那么准确,不过是我的理解)。这个跟我之前想要设计的一个agent的有类似的想法,只不过我们在构思框架,百度是基于自身大流量沉淀出来的一个负载均衡器。里面的功能有很多是我没注意的,所以给了我很多启发,也让我知道,如果要在应用前面做一个软件版的负载均衡器,它的模块需要几个。具体细节就不讲了,更多的是要去看看BFE这本书,看完可以对负载均衡器的实现更了解,更明白之后无论是在自己公司,还是之后出去别的团队,都很有帮助。

前面讲了不仅在技术上的视野开阔,还有分享人的一个软实力。分享或者说在讲台上面讲,其实是很考验人的。有的人可能很会写,但是不会说。章老师,在台上的游刃有余,熟练程度,自信程度综合来看在所有分享的人里都是最好的。在分享的时候,不紧不慢,没有卡壳,很顺理成章地往下分享他要讲的东西。在技术方案的描述上,技术视野的开阔性堪称一流,对问题的把握程度也是非常厉害的。从外到内一层层分析,最后落下具体方案,并且还对整个生态有一个全局的掌握。这个在我看来是一个非常厉害的架构师,也是我之后想要发展的最终的样子。


GO如何助力企业进行微服务转型 - 万俊峰

万老师的分享,真的是刚好的一篇分享,让我学到了在转型前的一些经验。相比于了解整个微服务的搭建,设计,我觉得处在我这个阶段更适合去了解如何转型以及是否要做转型。虽然在整个分享过程中,没有讲太多的go zero,但是听完之后我就很想去看看go zero的源码,去了解里面的一些设计。从这场分享,我很庆幸我能加万老师的微信,因为从万老师身上看到很多经验,有技术,有落地。并且身上的经验是综合性的,之前也听过他的演讲,让我觉得是一个很棒的前辈。综合实力贼强,也是我要多多去学习的。

整个分享,开篇清晰,问题慢慢抛出来,再慢慢解决。PPT精辟却不简单,全都是实战沉淀下来的经验。无论是整体框架,还是技术路线成长,到最后设计落地,都有很多值得我慢慢推敲的。


从讲师身上看到的

印象给我最深的是这几位老师,刘浩洋老师,王发康老师,章淼老师,黄东旭老师,万俊峰老师,这几位老师分别给了我综合实力不同方面的意见(自己总结的)

刘浩杨老师,基础架构负责人,基于业务提炼出来的一个平台,讲的内容有深度,有视野,是我短期(3-5年)想要达到的一个水准。在里面提到了很多抽象,如何做到兼容是需要在对一块技术很了解的前提下实现的。应该说上面提到的所有老师,都是写过很多语言,有着自己融合各家的一个看法。在台上的风格,不强硬,讲自己做的东西。抽象规划能力,值得我推敲学习。

王发康老师,蚂蚁集团的专家工程师。一个词,压迫感。贬义词吗,也不算。给我一种说不上来的压力,觉得听众应该这些都懂。但是你不得不佩服的是他对自己做的东西的自信,非常自信,觉得自己做的东西非常牛逼。为什么说是专家,对技术无论是深度还是广度,都有自己的见解,并且了如指掌。如果说刘浩杨老师是我跳一跳能达到的程度,王发康老师的程度我觉得我是很难了。气场很强,思路也很清晰,锋利。当然有压力,也就是我个人的感官而言。

章淼老师,百度架构师。老练,沉稳。前两位,一位是我的目标,一个位是我达不到的程度,章老师的水平是我期望达到的最终目标。为什么这么说呢?技术的沉淀在章老师身上体现得淋漓尽致,不会直接告诉你我有多厉害,但是从方案比较,到技术难点,到最后用很舒服的,连贯的方式说出来,不愧是一名资深架构师。不会一把梭哈,但是留有韵味。在解答问题的时候,也总能一针见血。

黄东旭老师,TiDB的开发者。看起来就是个玩音乐的,PPT看起来就不是技术人员会写的。恰恰这个状态是我很喜欢的,因为我不喜欢被别人一看到就说你是程序员。有自己的爱好,同时又能兼顾自己的职业,是一件很令人羡慕的事情。PPT做得不死把,有时候可以活跃活跃气氛。在黄老师身上看到的是程序员的另一面。

万俊峰老师,go zero的作者。开口就知道有老道的经验,并且把这些经验,能用精炼的语言描述出来,让我们感受得到。有人有经验,但是他不会说呀。万老师,我感觉就是一本行走的书,可以从他身上学到很多技术书上讲不到的经验。在他的身上,可以看得出来平时一定在无时无刻地总结经验,沉淀。这也是我应该多注意的一点,而且也应该多请教,这一路走过来的精彩故事。


总结

听完gopher china会给自己一个技术的突破吗?我并不氛围,我本身就是冲着开阔视野和认识高手去的,这两个目的在参会完之后,都达到了。

我自己在部门规划一些架构也好,标准流程也好。其实,团队有时候都不配合,我不知道是自己的能力不够,还是公司太小他们觉得没有必要,曾经也一度怀疑自己。不过,好在听了gopher china以后,我坚信我现在这么做是对的,规划也是没有问题的,不是在闭门造车。只不过我的格局可能没有那么大,那也没办法,我们业务确实小,没法到那么大。还好来听了gopher china,让我看到如果做大,需要考虑的内容以及细节点。也补充了我一些知识的盲区,让我自己的知识体系又更完善了。同时,也分别看到了,高级,专家,资深专家需要的技术能力,软实力,让我也在规划我后面的路怎么走。

在我的理解一句话就是想要成为资深架构师,要懂得横向纵向比较不同技术方案,能够将不同抽象成相同,理解数据就是在操控地址,"轻描淡写"地讲给别人听且别人能听懂。

听完gopher china让我看到了我自己的可能,终有一天可以站上那个讲台。