4月13日,趣头条联合极客邦科技在上海举办了首届 Go 语言技术沙龙——Golang 在工程实践中的应用。虽然只是一场持续半天的技术沙龙活动,但是现场参会者的参与热情、从沙龙带回的收获与感悟,其意义已经远远超过活动本身。部分参会者在现场反馈说,如果不是参加了此次沙龙,真的感受不到,原来Go语言在国内这么火,在开发者群体中这么吃香!
Go语言从 2009 年发布以来,到现在正好走过了十年的时间。其天生并发、内置GC、安全性高、语法简单、编译快速、出身名门等等诸多特点,使得目前越来越多大公司都在使用 Go 语言重筑其后端的基础架构和服务。
座位不够坐了,站着也要听
本次技术沙龙从实际生产业务中出发,注重企业对Go语言的应用程度,注重讲师在Go中的实践,因此来自国内深度应用Go语言互联网大厂的三位资深架构师——趣头条基础架构部架构师徐鹏、七牛云大数据团队架构师刘凯、bilibili 主站技术中心研发工程师曹国梁,基于对Go语言的深入理解,在现场深度分享了自家企业在Go语言中的实践情况。
以下是本届技术大会三位分享嘉宾演讲的精彩回顾:
自研 ServiceMesh 在趣头条的实践
现场第一轮分享,是趣头条基础架构部架构师徐鹏带来的《自研 Service Mesh 在趣头条的实践》。
趣头条基础架构部架构师徐鹏
在演讲中,徐鹏首先对 Service Mesh 的演进历程进行了介绍。
随后徐鹏着重对趣头条完全基于Go语言实现的 Service Mesh Negri 系统进行了讲解。
Negri 架构图
自研的Service Mesh Negri有以下6个主要特点:
语言无关,无需开发多套不同语言框架、PHP、Golang、Java甚至Node.js、Python都可以接入;
维护成本低,重框架维护成本非常高、DRY会引发大面积故障,升级成本高;
服务注册发现,省去了slb部署环节、可以自动发现服务节点变化;
服务治理,限流、熔断、降级、trace、metrics、log错误注入;
图形化的控制面板,提供了统一的UI,控制服务治理的各类配置,展示服务的metric、strace、日志、调用关系等;
自研业务的支持,abtest、trace、auth、加解密、sign验签等功能的支持。
随后,徐鹏主要就 Negri 的研发历程、最佳实践以及未来发展方向做出了讲解。
最后,徐鹏对Negri的未来发展规划进行了介绍,主要包含:
兼容xds协议,支持Istio作为控制平面;
支持Redis、MySQL、Nsq、Kafka协议,能够对这些服务做限流熔断等举措;
服务授权认证,通过下发服务间调用规则/Appsecret,让服务间调用更安全。
Go在七牛全链路追踪中的实践
第二轮分享,是来自七牛云大数据团队架构师刘凯,他所带来的分享主题为《Go 在七牛全链路追踪中的实践》。
七牛云大数据团队架构师刘凯
首先,刘凯对全链路追踪这一技术进行详细的讲解,包括全链路追踪技术的起源、Opentracing、业界主要产品等等。
随后对七牛的全链路追踪进行了详细介绍。在七牛全链路追踪的功能特性方面,刘凯也进行了极为详细的阐述,主要包含:传输优化、服务拓扑、接入成本、可视化展示这四个方面。
最后,刘凯现场演示了如何用全链路追踪模块去反向监控Go项目,第一是指用户的业务,黑色就是trarcer模式,然后中间span,然后是采集模块,并现场还原了真实效果,手动演示了代码传入的途径。
Go在bilibili微服务治理中的实践
最后一个分享的是 bilibili 主站技术中心高级研发工程师曹国梁,他的分享主题是《Go 在bilibili微服务治理中的实践》。
bilibili主站技术中心高级研发工程师曹国梁
曹国梁首先让大家初步了解了下微服务化所带来的一系列挑战,并介绍了初期CP服务发现系统——ZooKeeper。
Zookeeper架构图
随后详细介绍了 bilibili 基于 Go 语言实现的AP服务发现框架——Discovery。Discovery 服务发现系统主要有保证节点信息最终一致、网络分区的自我保护、客户端实例变化这三个特点。
同时,负载均衡是微服务中非常重要的一个环节,曹国梁对负载均衡在 bilibili 内所发展的前2个阶段进行了介绍,因为性能无法满足业务快速增长的需要,bilibili 基于前面的两个版本,又引进了负载均衡3.0,主要优化点可见下图:
最后,曹国梁对微服务中“熔断与限流”的应用进行了介绍,并回顾了之所以用Go语言来实现这个框架的原因。
Lean Coffee 环节:深度讨论Go的今生与未来
本次沙龙与寻常大家只是单一的站在倾听者的角度来接收技术干货的不同,是本次沙龙引入了Lean Coffee 环节,共设有【Go的工程化实践】、【大并发和大流量下的Go实践】、【Go在行业中落地与应用】以及【Go的未来前景探讨】这四个话题,每一位参会者都可以选择自己所感兴趣的话题来与现场的小伙伴进行讨论。
我们的讲师也积极参与到大家的讨论中来
最后每个小组都派出了一位代表上台进行分享,从产出的结果来看,大家的讨论十分有成效,并且由趣头条的Kevin从中评选出了“最具价值分享”奖项。
本次技术沙龙以Go为圆心,凝结了上海本地对Go有热情和研究兴趣的开发者,大家借此相识、借此探讨,向获知最前沿的技术应用,扩大自身的社交圈子又迈进了一步。
现场参会者的大合影
三位讲师也获得定制的证书
引用Lean Coffee 环节一位技术大牛的热血之言:七牛在国内是应用Go语言的专家,但是希望在多年之后,Go语言在中国,不管什么七牛八牛,最终都将会是Go牛!