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甚至Nodejs、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,然后是采集模块,并现场还原了真实效果,手动演示了代码传入的途径。

Gobilibili微服务治理中的实践

最后一个分享的是 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牛!

bilibili go框架_当红语言只认Go!趣头条技术沙龙聚焦Golang应用热点相关推荐

  1. bilibili go框架_最好的开发语言一定是那位吗?Go语言有话说

    鲁迅先生说过,所有能用 JS 写的前端项目最终都会被用 JS 重写一遍,所有能用 Go 写的后端项目最终也都会被用 Go 重写一遍. 作为一名开发者, 周六的我们能做什么呢? 是因为产品经理的各种需求 ...

  2. java 银行框架_一般Java做银行项目使用什么技术啊?

    如果是做BS开发的话.一般需要java web相关技术. 一般的学习顺序为:html,javascript,servlet,jsp,还有主流的ssh框架. JavaEE: 第一阶段Java语言基础: ...

  3. java只允许单一继承_问题:Java语言只允许单继承,指每个类只能有一个 ( )

    问题:Java语言只允许单继承,指每个类只能有一个 ( ) 更多相关问题 用List命令显示表文件中的当前记录的命令格式是________. WHERE子句的条件表达式中,可以匹配0个到多个字符的通配 ...

  4. mongodb数据库淘汰_红帽彻底不跟MongoDB玩了,只认PostgreSQL

    原标题:红帽彻底不跟MongoDB玩了,只认PostgreSQL 用来管理Red Hat Enterprise Linux部署的系统管理解决方案Red Hat Satellite,将变更其底层数据库结 ...

  5. go web框架_干货分享:六个知名的Go语言web框架

    框架一直是敏捷开发中的利器,能让开发者很快的上手并做出应用,甚至有的时候,脱离了框架,一些开发者都不会写程序了.成长总不会一蹴而就,从写出程序获取成就感,再到精通框架,快速构造应用,当这些方面都得心应 ...

  6. python selenium自动化框架_一文讲透!实现一个Python+Selenium的自动化测试框架如此简单!...

    首先你得知道什么是Selenium? Selenium是一个基于浏览器的自动化测试工具,它提供了一种跨平台.跨浏览器的端到端的web自动化解决方案.Selenium主要包括三部分:Selenium I ...

  7. 2_MVC+EF+Autofac(dbfirst)轻型项目框架_用户权限验证

    前言 接上面两篇 0_MVC+EF+Autofac(dbfirst)轻型项目框架_基本框架 与 1_MVC+EF+Autofac(dbfirst)轻型项目框架_core层(以登陆为例) .在第一篇中介 ...

  8. 第三百一十节,Django框架,模板语言

    第三百一十节,Django框架,模板语言 模板语言就是可以将动态数据在html模板渲染的语言 一.接收值渲染 locals()函数,写在请求响应render()函数里,可以将逻辑处理函数里的变量传到h ...

  9. 智慧北京02_初步ui框架_ 主界面_viewPager事件_xUtils_slidingMenu_网络缓存_数据传递...

    智慧北京02_初步ui框架_ 主界面_viewPager事件_xUtils_slidingMenu_网络缓存_数据传递 1.使用Fragment搭建ui框架 参考分析图 1.1,Fragment生命周 ...

最新文章

  1. Spring Boot配置视图解析器
  2. BRCM5.02编译九:cannot find -lncurses
  3. 动态规划之两个字符串的最大子序列
  4. memcache使用方法测试
  5. 生产环境几个实用的命令整理(一)
  6. rtk采点后如何导入cad_ZEMAX:如何导入CAD物体
  7. matlab关于向量的基本操作
  8. Spring MVC的流程
  9. nyoj Splits the string 749
  10. 关于 笔记本换掉光驱加装全新SSD以及win10系统无损迁移到SSD 详细教程
  11. Navicat 注册机破解问题
  12. 银河麒麟V10(Kylin Linux Advanced Server V10 (Tercel))安装Python3.8、MySQL5.7、Redis
  13. Piranha web 界面LVS DR 模式配置图文详解
  14. ztack怎么生成虚拟服务器,在ZStack中使用ISO文件安装虚拟机模板
  15. php窗帘excel,各种办公室窗帘的用途及优缺点 办公窗帘安装讲
  16. svn造成桌面图标显示问号的处理办法
  17. InfluxDB 2.0 原理与应用实践
  18. 摩托车头盔防护膜—给你不一样的安全感
  19. 架构师的 36 项修炼第07讲:高性能系统架构设计
  20. java相关的外文文献及翻译_外文文献及翻译:JavaandtheInternet

热门文章

  1. 三维测量—DLP4500投影条纹图案步骤记录
  2. KBP206-ASEMI整流桥KBP206
  3. js符号输入不可用_js控制文本框禁止输入特殊字符详解
  4. 身体质量指数程序,入门写死的小程序项目
  5. 使用vscode编译器:检测到 #include 错误。请更新 includePath。已为此翻译单元,无法打开源文件<iostream>
  6. [野狐行][辅助开发系列课程][2016/4/27][一重门公开课全集][官方网站已开放]
  7. 找出一个二维数组中的鞍点,即该位置上的的元素,在该行上最大,该列上最小,也可能没有鞍点
  8. 记录自己激光打眼手术过程
  9. MySQL锁:全局锁、表级锁和行锁
  10. Oracle 的汉译名 甲骨文 由来