使用微信扫一扫分享到朋友圈
使用微信扫一扫进入小程序分享活动
Gopher China 2023 大会又准时和大家见面了, 2015年由 Go 中国社区发起的第一届 Gopher China 大会在上海成功举办,历时七年已成为国内最权威和最干货的Go大会,我们致力于为中国广大的 Gopher 提供最好的交流平台。举办 Gopher China 大会的目的是汇集广大 Go 语言的开发者以及大规模应用 Go 的示范企业给大家带来精彩分享,呈现一场最 cool 的盛会。
迄今为止,Gopher China 大会已经成功举办了七届,并且每年都会有 gopher meetup 线下巡回见面会,大会参会者累计已突破万人。前七届大会的成功举办也获得了良好的口碑,在技术圈内满意度和推荐度高达95%以上。
根据传统我们依然提前开放有虫吃的优惠早鸟票~
Go⾼级语法概念深⼊理解与精华点拨
Go项⽬源码结构、包、函数/⽅法、接⼝、API等设计原则⼀站式集中讲解
全景解析打造⼀个全新Go项⽬过程中所需的基础功能构件与⼯程实践
课程⽬标
能够直击本质,深⼊理解Go⾼级语法概念
能够使⽤正确的设计原则对Go包、函数/⽅法、接⼝与API进⾏设计与实现
能够为⼀个全新Go项⽬选择或实现最适当的基础功能构件
能够在⼀个全新Go项⽬中实施有益的的⼯程实践
语法⾼⼿:⼀学时带你深⼊理解Go语法概念,从此再⽆“语法坑”
Go取得成功的秘诀:了解Go背后的那些设计哲学与设计决策
Go类型系统:有何与众不同
值与指针:各司其责
数组与切⽚:静与动
字符串与rune:我中有你
map:其实坑挺多
函数与⽅法:本质是⼀家
结构体与接⼝:继承还是组合
错误处理:真的outdate了么?
并发原语:不是银弹
栈、堆与GC:便利背后的开销
反射:真的不该⽤么
unsafe:其实很安全
泛型:利与弊
设计能⼿:上到项⽬布局,下到函数原型,你应该了解的那些设计
原则与最佳实践
Go项⽬源码结构设计:演化历史与事实标准
包设计:职责基本单元
函数还是⽅法?
接⼝设计:需要发现的眼光
错误处理设计:告诉你⼏种策略
API设计的主流实践
⼯程达⼈:Go⼯程的那些事⼉从此轻⻋熟路——Go ⼯程构件
主框架:如何初始化与优雅退出
配置构件:⽀持多种配置⽅式
⽇志构件:⾃实现还是⼆次封装与适配
观测构件:现代Go服务程序必备
诊断构件:如何兼顾低开销
⼯程达⼈:Go⼯程的那些事⼉从此轻⻋熟路—Go⼯程实践
静态代码分析:消除公认隐患代码
测试:单元测试、覆盖率测试、模糊测试⼀个都不能少
调试:print⼤法好
在线诊断:权衡利弊选择最适合你的
性能调优:以不变应万变
部署升级:利⽤云原⽣时代的便利
大会开场
大型项目开发 之 Golang 早知道
基于Go语言的滴滴DevOps重塑之路
Go语言作为滴滴网约车主流技术语言,经过多年积累,网约车已基于Go构建了完善的DevOps研发生态,包括但不限于微服务框架、sidecar模式的线下测试环境、Go语言的流量录制和回放、自动化测试调度、自动化报警和根因定位、分布式定时任务等。本次分享主要围绕当前云原生架构下,网约车是如何基于Go重塑DevOps
主席团闪电演讲
午餐
Go 语言核心工具链及应用实践
GOARCH=loong64: 昨天·今天·明天
龙架构(LoongArch)是近年新兴指令集架构中难得一见的中国面孔。经过两年的生态建设,龙架构的支持业已进入多数知名自由/开源软件项目上游,其中也包括 Go。
本次分享将介绍 Go loong64 移植(port)的前世今生:社区与龙芯公司做过的工作、port 现状、为龙架构适配的指导原则与注意事项;也将分享 port 维护团队关于未来工作的一些思考规划。
基于 LLVM 的“另一个 Go 编译器”
字节跳动内部有大量的 Go 工程,因此对性能优化有强烈的需求。马春辉所在团队对 Go 原生编译器做了大量优化,取得了几十万核的节省(平均 CPU 节省 8%)。然而因为 Go 原生编译器的本质缺陷,他们决定基于高性能的 LLVM 编译框架,打造“另一个 Go 编译器”,以期望能获得更优的性能。来自字节跳动的马春辉将介绍他们基于 LLVM 打造的“另一个 Go 编译器”,包括现阶段取得的成果和未来的长远规划。
Go on GPU
在过去十多年里,多核异构计算逐渐成为主流,形成 CPU 作为 调度中枢、并与其他专用处理器分管计算任务的模式。其中,得益于图形计算技术的演进和完善,GPU 逐渐开始成为通用计算领域里不可或缺的一部分。欧长坤博士聚焦于 Go 语言在 GPU 计算中的实践,以一个支持 GPU 计算的库为背景,展开介绍如何使 Go 语言与 GPU 的各类管线进行交互,并探讨实践过程中的实现难点和性能挑战,最后将对 Go 语言社区内以 GPU计算为基础的相关应用领域进行展望。
Go泛型设计
Go 1.18版本增加了对泛型的支持,这是自Go开源以来语法层面上最大的一次变更。
QQ音乐后台团队经历了C++到Go的迁移,所以在早期我们就参与Go社区支持泛型的工作中,帮助Go团队修复Bug、提供测试用例,积累了许多经验。
目前泛型广泛应用在QQ音乐后台基建和业务当中,降低了通用代码和基础库的编码成本,提升了团队协同效率。
本次分享主要围绕以下几点展开:
1. Go泛型发展史 - 介绍Go团队对支持泛型的心路历程,为什么在开源10年后才支持这一特性。
2. Go泛型设计提案 - 介绍Go社区提出的几种泛型实现方案,以及他们的特点。
3. Go泛型底层实现原理 - 介绍Go泛型的底层实现,以及Go1.18发布至今Go泛型实现的演变过程。
4. 总结与展望 - 懂得如何更有效的使用泛型特性,了解社区下一步的优化方向。
听众收益
了解Go泛型为什么这样设计,以及如何Go实现泛型的底层原理
基于 Prometheus 的 SLO 告警实战
1. 基于 SLO 告警原理和基础
2. 基于开源方案实现(sloth、pyrra)
3. SLO 多租户方案之 cortex 扩展实现
4. Demo show 和 总结
听众收益
通过本次分享您将了解到基于 Prometheus SLO 告警的重要性和背后原理;掌握基于 sloth 或 pyrra 两个开源项目快速搭建自己的 SLO 统一监控平台的方法;最后您还能了解如何通过扩展 Cortex,实现与 Cortex 分布式 Ruler 无缝结合,实现超大规模环境 SLO 的多租户隔离与统一管理。
基于Golang的分布式数据运营与流式计算实战
分布式数据运营与流式计算系统-Arris,是业务数据流入的核心服务。Arris 取名为中国成语“海纳百川”( All Rivers Run Into Sea ) 的首字母缩写,系统形如具有包容及兼容一切的数据海,所有的河流、川水(指:任意类型的数据) 最终都能够流向并溶入Arris系统, 表示对任意数据的支持与海纳的意义,也是Arris系统的设计初衷。对于ToB系统服务能力主要就是基于海量数据进行配置和分析,而海量数据的汇入在当时是一个难题,所以Arris横空出世。
Arris目前应用于好未来智慧学员服务系统,业务目标为通过对老师、学生的深入了解,提供精准,高效,高能的一站式智能化服务平台。而且要求具备在特定的场景中为特定的用户提供特定的服务能力。为了保障业务目标的支持,Arris的业务建设目标为:
1、支持业务做千人千面数据投放。
2、Arris平台化,高效数据运营管理。
3、海量数据写入输出支持。
4、数据稳定性保障、数据准,架构稳。
Arris的技术建设目标是通过海量的应用数据储备建设,快(实时),准(数据可靠),全(数据齐全)的应用数据服务能力,高效支持业务系统的数据查询和检索场景,数据驱动做精准高效有品质服务。
基于Go构建海量作业作业平台
B站很早之前就开启了混合云架构,面对不同云厂商的云主机,复杂运维作业场景,我们基于SSH模式提供了一个跨云调度的作业平台。随着业务的扩展,每日百万级别的作业量级,海量作业并发效率,编排化的流式作业,我们早期的架构在性能、稳定性和可观测性等方面都无法支撑。21年开始,我们利用Kratos框架快速进行重构迭代,架构升级,kratos易扩展的插件化设计,灵活选择适合的工具链,服务注册发现,orm等,实现快速的问题定位和排障,整体上线后我们支撑每日70+万左右的作业调用,每月2000万左右的作业执行,流程化的组装作业流程,实现调度自动化
本次分享将围绕以下几点展开:
1. 混合云架构下海量运维作业的挑战和难点
2. B站借助Kratos框架多次完成架构升级,已实现海量作业调度和并发执行
3. 流程引擎的建设,实现可编排的作业流,提升SRE运维效率
4. 面对复杂运维场景,如何构建一站式平台通过低代码,实现海量服务、基础设施的统一纳管和消费
Go语言生态和组件应用
OpenSergo & Sentinel: 下一代微服务治理标准与实践
在现代微服务架构中,针对复杂微服务架构的稳定性治理是广大开发者关注的重点。本次分享主要围绕微服务治理展开,介绍开放通用的、面向分布式服务架构、覆盖全链路异构化生态的服务治理标准 OpenSergo,结合流量灰度、流量染色、流控降级、过载保护等常见微服务治理场景,介绍如何利用 OpenSergo 统一的 CRD/DSL 来对异构化的 Go 微服务架构进行统一的治理;并结合 OpenSergo 流量治理的标准实现 Sentinel Go 来介绍流量治理相关技术的原理、生态与最佳实践,以及社区在服务治理领域的展望。
轻微服务框架,重工程化实践--使用 Kratos构建企业级微服务架构
不同服务之间通常需要相互调用。在单体应用程序当中,服务间通过语言层级的方法或者过程实现相互调用。在传统的分布式系统部署下,服务在固定并且已知的位置(主机与端口)运行,从而确保各服务可利用HTTP/REST或者某种RPC机制进行相互调用。然而,现代化微服务应用程序中通常在虚拟化或者容器化环境中运行,在这样的环境中服务的实例数量和位置是动态变化的。因此,要想实现客户端向动态变化的一组服务端实例发送请求,我们需要引入服务注册与发现机制,课题将通过实际案例讲解带你理解服务注册与发现在企业级项目的实践。
微博增值团队在Go服务可观测性的实践与探索
介绍如何基于OpenTelemetry生态与Clickhouse低成本实现服务的可观测性。如何通过服务可观测性实现业务故障快速定位、性能优化、及开发测试的提效。其中Go服务如何高效低成本接入OpenTelemetry生态。Otlp的生产实践。如何基于Clickhouse做到spans数据实时分析和低成本存储。如何串联 Trace Log Metric 数据并进行低成本高效率的智能告警。以及对Go服务可观测的一些思考。
夜莺观测平台开源盘点思考
介绍夜莺开源项目;
开源项目运营心得&众生相;
开源如何搞钱;
参与开源项目的正确姿势;
听众收益
了解开源项目的运作逻辑;了解开源搞钱的方式;学习如何正确参与开源项目
不止于代码,构建开源项目的安全基础设施与开放社区治理
随着开源软件安全漏洞与攻击事件的频发,开源软件供应链安全成为了很多开源社区维护者、企业组织和开源软件用户高度关注的问题。在以K8s 和容器技术为核心的时代,确保软件开发与交付的一致性,是为开源项目构建安全基础设施的关键,本主题将围绕容器镜像分发与部署,介绍 CNCF 生态的软件供应链安全开源方案。
此外,讲者还将以 Notary 项目为例,结合自身多年的开源社区运营与治理经验,分享和探讨如何构建一个健康活跃的开源社区,趋动社区用户增长。
听众收益
1. 了解软件供应链安全领域的开源项目和技术实践
2. 学习开源项目与社区的治理、运营思路和经验
3. 探讨构建开源项目的安全基础设施与开放社区治理的思路
go-zero开源项目的成长史
1. 何来go-zero项目?
2. 为什么会走向开源?
3. 开源之后的收获
4. 开源运营两年的心得
5. go-zero未来的思考
茶歇
万亿级流量转发软件BFE的开源之路
BFE(Beyond Front End)是基于Go语言编写的七层负载均衡软件。经过多年的内部研发和大流量验证后,BFE于2019年对外开源,并于2020年6月成为CNCF的Sandbox Project。这是中国在网络领域第一个被CNCF接受的开源项目。 本次分享将分析负载均衡技术的发展趋势,对比七层负载均衡多个技术生态之间的优缺点,讲述BFE的设计理念,并重点说明在BFE项目开源过程中的思考和心路历程。
CloudWeGo 开源实践:浅谈开源的道与术
- CloudWeGo 的开源背景与初衷
- CloudWeGo 的开源项目迭代
- CloudWeGo 的开源社区治理实践
- CloudWeGo 的开源运营实践
- CloudWeGo 的开源商业化探索
- CloudWeGo 的开源后续规划与展望
圆桌论坛
KubeBlocks 如何通过抽象和声明式 API 支持多种数据库引擎
数据库的架构和拓扑多样而复杂, 不同数据库的使用体验往往差异也很大。
KubeBlocks 是一个基于 Kubernetes 的开源项目,它通过抽象和声明式 API 支持不同数据库集群拓扑及生命周期的描述。
本次分享将介绍 KubeBlocks 的架构设计,以及如何通过抽象和声明式 API 获得统一的数据库使用体验。
OpenKruise:全方位的提升Pod生命周期管理能力
原生 Kubernetes 提供了丰富的 Pod 生命周期管理能力,比如:ReadinessProbe、LivenessProbe、PostStartHook以及PreStop能力。
但是随着集群规模逐渐增大,应用类型越来越复杂,原生的 Pod 生命周期管理能力也有一些捉襟见肘。OpenKruise 作为阿里巴巴在云原生化过程中的最佳实践,
在 Pod 生命周期管理领域积累了大量的经验,此次分享将介绍 OpenKruise 是如何扩展原地升级、优雅上下线、容器启动&退出顺序保证、全局的Liviness Probe探测能力。
使用 Go 重新实现一套 Service Mesh
当前服务网格的领域已经有了 Istio 和 Linkerd 等头部玩家,为什么我们还要重新实现一套 Service Mesh?Amesh 是采用 Apache APISIX 作为数据面的一套完整的服务网格方案,使用 Go 语言实现, 采用 SMI 的标准协议。本次分享中将介绍 Amesh 出现的背景及其特性,以及分享使用 Go 从头开始构建一套 Service Mesh 方案时所面临的问题,及对应的解决方案
dubbogo 精进之路:从开源项目到开源产品
1 在 RocketMQ 之上的⾦融级安全通信;
2 Dubbo 数据面批判以及其新形态;
3 分布式事务与数据一致性;
千万级高性能长连接Go服务架构实践
本次长连接技术分享,一方面结合百度APP在消息、直播、云控等业务中使用长连接的实践,来介绍百度APP长连接服务的架构及演进;另一方面,结合工作中使用Golang的实践,说明当前使用Golang开发的优势和问题。
茶歇
Go泛型的实现、陷阱和应用场景
Go泛型2022年2月份发布了,Gopher页一直关注着这个特性,那么Go泛型是如何实现的?和其它语言有什么区别?Go泛型又有哪些陷阱?Go泛型到底应用在哪些场景?本次分享尝试解答这些问题,帮助你更快更好的了解泛型应用泛型
企业级 Go HTTP 框架在字节跳动的实践
1. 字节跳动内部 Go HTTP框架的变迁(来自业务线、基础组件的困境和契机)
2. Hertz 设计目标 (更高的性能,支撑更灵活、复杂的需求)
3. Hertz 落地的性能收益 (内部降本增效,承载流量的规模)
4. Hertz 核心特点 (具体到易用、高性能、可扩展的设计亮点举例)
5. Hertz 未来规划和挑战(打造 cloudwego 产品矩阵)
语法⾼⼿:⼀学时带你深⼊理解Go语法概念,从此再⽆“语法坑”
设计能⼿:上到项⽬布局,下到函数原型,你应该了解的那些设计
⼯程达⼈:Go⼯程的那些事⼉从此轻⻋熟路——Go ⼯程构件
⼯程达⼈:Go⼯程的那些事⼉从此轻⻋熟路—Go⼯程实践
大会开场
大型项目开发 之 Golang 早知道
基于Go语言的滴滴DevOps重塑之路
主席团闪电演讲
午餐
GOARCH=loong64: 昨天·今天·明天
基于 LLVM 的“另一个 Go 编译器”
Go on GPU
Go泛型设计
基于 Prometheus 的 SLO 告警实战
基于Golang的分布式数据运营与流式计算实战
基于Go构建海量作业作业平台
OpenSergo & Sentinel: 下一代微服务治理标准与实践
轻微服务框架,重工程化实践--使用 Kratos构建企业级微服务架构
微博增值团队在Go服务可观测性的实践与探索
夜莺观测平台开源盘点思考
不止于代码,构建开源项目的安全基础设施与开放社区治理
go-zero开源项目的成长史
茶歇
万亿级流量转发软件BFE的开源之路
CloudWeGo 开源实践:浅谈开源的道与术
圆桌论坛
KubeBlocks 如何通过抽象和声明式 API 支持多种数据库引擎
OpenKruise:全方位的提升Pod生命周期管理能力
使用 Go 重新实现一套 Service Mesh
dubbogo 精进之路:从开源项目到开源产品
千万级高性能长连接Go服务架构实践
茶歇
Go泛型的实现、陷阱和应用场景
企业级 Go HTTP 框架在字节跳动的实践