写点什么

腾讯开源之道:基于 Apache 之道的开源实践与探索

腾讯开源

  • 2021 年 8 月 11 日
  • 本文字数:4328 字

    阅读完需:约 14 分钟

腾讯开源之道:基于Apache之道的开源实践与探索

8 月 6 日,腾讯开源联盟主席、腾讯云开源生态总经理单致豪在2021 ApacheCon Asia上分享了腾讯对 Apache 之道的思考、探索与实践的历程。


作为开源界备受关注的会议之一,今年的 ApacheCon Asia 将持续 3 天,开设 14+分论坛,内容覆盖从大数据到搜索再到消息队列等数十个不同类别。


Apache 软件基金会成立于 1999 年,迄今为止其管理着 2.27 亿多行代码,有着 206 个项目管理委员会,通过精英制领导了 350 多个 Apache 项目和计划,有超过 8,100+提交者。


从最初的“Apache 小组”到如今成长为世界上最大的开源基金会之一,Apache 通过其领导力、健全的社区、以及精英主义思路,铸就了著名的“Apache之道”(Apache Way),形成了一套推进开源社区可持续发展、指导开源项目实践的方法论。


腾讯开源自 2010 年起开始正式萌芽,在 11 年的发展历程中,腾讯大批工程师通过参与、应用和贡献等方式与 Apache 社区深度联结,并基于 Apache 之道,践行着腾讯的开源之道。


腾讯与 Apache 开源社区也持续深入合作,成为多个 Apache 项目的活跃贡献者,以及国内首家 Apache 白金会员,并推动 Apache 基金会在开源领域的创新。目前,除了在 Hadoop、Spark 等众多项目中担任 Committer 外,腾讯的内部团队还基于 Apache 中的如InLongOzonePulsar等项目实现了对业务的支撑和赋能,并形成了一套最佳实践。

 Apache 之道对社区的重要指导

 

Apache 之道是很难定义的,尽管 Apache 之道这些年修改了部分内容,但“高度透明性”的初心始终是未变的。在单致豪看来,腾讯从 Apache 之道中学习的经验归结为五条:


  1. 所有个人都有机会参与,并且可以成为权威。所有人都可以通过对社区的贡献获得属于自己的影响力和个人成长,以及基于公开获得的功绩和权威。

  2. Apache 基金会是扁平的结构。这意味着任何角色都是平等的,投票权重都相同,并且贡献是在志愿者的基础上进行,腾讯鼓励内部的工程师都积极参与 Apache 基金会的贡献中。

  3. 深知开放交流的重要性并践行。因为开源是全球分布式社区的协作,腾讯工程师参与 Apache 开源项目都是通过邮件列表的异步协作机制——代码、决策相关的交流都公开透明。

  4. 鼓励一起达成共识的决策机制。共识可以保持项目前进动力和新的生产力。但是有时候不能建立完全共识,那就需要进行投票或其他协调以帮助删除具有约束力的决定。

  5. 最重要的一点,“社区高于代码”的格言在 Apache 社区中经常得到加强。因为健康的社区比好的代码更重要。强大健康的社区总是可以纠正代码的问题,而不健康的社区可能会努力以可持续的方式维护代码库。此外,灵活的重要性——这也是 Apache 可持续开源成功不可或缺的一部分。

Apache 之道指导下的腾讯开源之道

 

Apache 项目及其社区都是独特但却多样化的。在社区主导的开发过程中,Apache 成员将其获得经验的总结体会凝聚为了 Apache 之道。


其实,腾讯很多开源实践、成果都是在 Apache 之道的指导下进行的。通过长时间的开源文化基因的沉淀,形成了腾讯以“开放协作、开源向善”为驱动的开源之道,同时这也是腾讯的价值观及使命愿景,连续影响着自身的开源实践。



l 主导及捐赠开源项目,腾讯践行 Apache Way 之始


在大数据流计算、中间件等领域,腾讯工程师在 Apache 基金会中的多个开源项目参与了主导及贡献,凭借贡献成果获得了来自基金会的认可。


1)大数据领域


例如,从 4 年前开始,腾讯就相继主导了 Apache Hadoop 2.8.4/2.8.5 版本的发布,Apache Ozone 1.0.0 版本在 Hadoop 社区的正式发布,后者成为了 Apache 基金会的顶级项目,同时也主导了 Apache Spark 2.3.2 版本的发布,并成为第一家在社区里发布 Hadoop 和 Spark Release 的中国公司。


在腾讯主导发布的 Hadoop 多个版本中,就涉及 20 多个的特性和优化。在 Spark 、Flink、HBase、Hive、MXNet、Parquet 等多个计算和 AI 框架中,腾讯都是主要的核心贡献者。


此外,腾讯大数据还参与主导了 Apache Ozone 的 1.0.0 版本,并在支持 Append、truncate 操作,container balancer 功能等问题上,腾讯持续在投入贡献以提升 Ozone 的成熟度。


2)中间件领域


2019 年,腾讯将自研的万亿级大数据组件 —— TubeMQ 项目捐赠给了 Apache 基金会,这也是腾讯第一个捐赠到 Apache 基金会的开源项目,今年其正式更名为 Apache InLong,目前正在 Apache 基金会进行孵化。



l 基于 Apache 优秀及成熟开源项目的深度应用


除了主导开源和捐赠项目,腾讯也在内部多个业务系统中应用了 Apache 基金会的开源项目。例如在微信、QQ、腾讯云等业务版块中,Apache 的开源项目被广泛应用——既覆盖了大数据生态,如数据传输、存储、计算和分析等需求场景,也涉及 API 网关、可观测等服务治理的技术领域。


尤其是在大数据、API 网关、可观测三个领域,腾讯深度应用并且贡献了 Apache 基金会的开源项目。


1)大数据项目代表——Ozone 和 Pulsar 应用


腾讯大数据单日的接入消息量超过 55 万亿,实时计算量超过 65 万亿,平台整体算力超过 500 万核,日分析任务数量达到 1500 万。


作为日实时计算量最大的公司之一,腾讯需要强大的大数据平台来支撑业务的开展,其能力也不断被刷新。除自研工具外,充分应用外部优质且成熟的开源项目如 Apache Ozone 和 Apache Pulsar ,为腾讯需要大量数据和流量的业务场景提供了支撑。


Ozone 是当前 Apache Hadoop 生态圈中新一代分布式文件对象存储系统,于去年从 Apache 基金会毕业并正式成为 Apache 顶级开源项目。它能够解决 Hadoop 分布式文件系统 HDFS 的扩展性上限,满足千亿级小文件的存储需求。


作为 Ozone 的早期采用者,腾讯大数据平台已经部署了一个超过 1000 个节点的 Ozone 集群作为大数据应用的后台存储。此外,腾讯还利用 Ozone 作为一些私人数据仓库项目的主要存储解决方案。


目前,腾讯正将越来越多的业务接入 Ozone,包括数据仓库、机器学习平台、K8S 集群挂载盘等等。经过长时间的反复验证改进后,内部 Ozone 能够以千台以上的规模长时间稳定运行,且无须人工运维介入。在验证改进过程中,腾讯做了大量的优化工作来改进性能,提升稳定性。


作为下一代云原生分布式消息流平台,Pulsar 集消息、存储和函数式计算为一体,并采用存储与计算分离的架构。Pulsar 目前在腾讯云内部已经成功支持大量数据和流量业务场景,还有在云原生环境上的一些实践经验,例如解决快速动态扩缩容,提升集群资源的利用率、集群形态等。


2)API 网关项目代表——APISIX 的应用与贡献


随着服务数量和复杂度上的不断增长,越来越多企业采用了微服务的方式,API 网关也成为不可或缺的一环——使用 API 网关完成统一的流量管理和调度。


APISIX 是 Apache 去年新增的一个顶级的 API 网关开源项目,从 2019 年进入 Apache 基金会的短短一年时间就完成了毕业。这也说明了它的活跃度、健康度,且在快速的迭代发展。


对比 Kong,APISIX 具有高性能、友好的开发者体验、丰富的插件能力等特征,是腾讯内部业务选择它的原因。


在 APISIX 的基础上,腾讯对内共享基于公司自研的云系统组件的配套支持,解决业务痛点,提供高效的 API 网关服务;对外向 Apache APISIX 开源社区进行贡献,扩大影响力,引领开源社区发展。


3)可观测领域项目代表——Skywalking 在腾讯内部可观测平台的应用


随着微服务架构的流行,全链路性能监测成为服务治理需要解决的一大问题,为微服务、云原生架构和基于容器(Docker、K8S、Mesos)架构而设计的可观测工具成为首选。


Skywalking是一个用于分布式系统的应用程序性能监视工具,专为微服务、云原生架构和基于容器(Docker、K8S、Mesos)架构而设计,它具有多种监控手段,语言探针和 Service Mesh 多语言自动探针,轻量高效且支持告警,具备优秀的可视化方案。


Apache Skywalking 是吴晟个人创始项目,项目目前非常活跃,有完善的项目发展全景图和里程碑,主仓库有 17,000 个星星数(Stars),350 个贡献者。


腾讯内部可观测平台全面兼容 Apache Skywalking,Zipkin 和 Jaeger 的客户端上报,为微服务体系的客户端 tracing 上报选型提供了极大的便利。同时使用计算存储分离和多层查询的机制,提供了非常优秀的性能输出。


此外,在可观测领域,腾讯最近也在使用 CNCF 中非常热门的 OpenTelemetry 项目。

三大项目,助力腾讯开源生态的建设

 

当然,除了 Apache 基金会之外,腾讯目前以顶级会员的身份,活跃在全球超过十个基金会中。基金会提供知识产权管理的框架、代码仓库、问题跟踪、技术指导、项目治理、财务和公关管理等服务,腾讯的工程师和全球开发者们在其中一起协作。


通过在多个基金会中的实践与贡献,例如 Linux 基金会以及全球最大的云原生开源组织 CNCF 基金会,腾讯吸取了比较成熟的开源组织治理模式及经验,并用于指导内部项目的对外开源。


目前,腾讯累计对外开源了 130 多个自主项目,获得了超过 37 万的 Star 数,贡献者人数也超过了 2000 人。项目覆盖了云原生、大数据、人工智能、数据库等多个技术领域,有对外专注人工智能领域的 Angel 开源项目和微服务领域的 TARS 开源项目,在 KVM、OpenJDK,腾讯都位列其全球贡献者榜单前列,包括在 Kubernetes、Spring Cloud、MariaDB 等开源社区中,腾讯也在大力推动开源项目、产品以及解决方案的落地。


基于内部的开源项目,活跃于开源社区的经验历程,以及开源人才培养的项目,腾讯开源生态已逐步建立并不断完善。


在未来的一段时间内,腾讯云将重点通过三大项目进一步壮大腾讯开源生态的建设:


1)建立“腾源会”社区。腾源会是腾讯云成立的汇聚开源项目、开源爱好者、开源领导者的开放社区,致力于帮助开源项目健康成长、开源爱好者能交流协助、开源领导者能发挥领袖价值,让全球开源生态变得更加繁荣。


未来,腾讯希望通过“腾源会”这一中立性组织为开源交流和项目孵化搭建平台,通过开源孵化器、共创社区、开源研讨活动和实操类活动的举办,链接更多的开源项目,开源爱好者、实践者和领导者,以及全球的开源基金会、开源文化。


2)建立产业开源联合实验室。开源实验室是项目实战的落地场所。未来,腾讯云计划陆续和国内多所知名高校以及开源企业一起成立产业联合开源实验室,为在校生、科研人员以及企业内的开发者提供实战贡献代码平台,以及开源项目落地产业的场景。


此外,腾讯今年也正式发布了“犀牛鸟开源人才培养计划”,通过打造面向高校学生的开源课程和开源实践培养方案,培育开源人才、普及开源文化,助力开源人才生态的发展。


3)发布《云原生开源白皮书》。今年 5 月的“云原生产业大会“上,腾讯云联合信通院宣布正式启动《云原生开源白皮书》编写工作,目前该白皮书还在编写过程中,预计将在年底正式发布。



 以上这些平台和项目的建设,开源实践者和企业都可以参与进来。

 结语


迄今 Apache 基金会已经运营了 22 年,事实证明它是将组织结构和灵活性平衡的开放性组织建设的最佳实践之一。腾讯也在持续将 Apache 之道内化于其自身开源理念、开源方法论和开源生态建设的实操中。


未来,或许也会有越来越多的高校、企业或组织能在腾讯构建的开放性社区中,这是一条不远的路。

2021 年 8 月 11 日 20:03526

评论

发布
暂无评论
发现更多内容

jackson学习之八:常用方法注解,复习指南

Java 程序员 后端

Jaeger知识点补充,java菜鸟教程面向对象

Java 程序员 后端

Java 低代码开发平台“光”发布 2,javapdf模板下载百度云

Java 程序员 后端

Java 反射:框架设计的灵魂,springboot运行原理

Java 程序员 后端

Java 虚拟机1:什么是 Java(1),DubboSPI及自适应扩展原理

Java 程序员 后端

一行代码爬取微博热搜数据

老表

爬虫 python学习 11月日更

java-集合-Map(双列)——迪迦重制版,zookeeper面试

Java 程序员 后端

Prometheus HTTP API 查询(三)查询元数据

耳东@Erdong

Prometheus PromQL HTTP API 11月日更

James邮件服务器,高级java工程师简历模板

Java 程序员 后端

Java 世界里的垃圾回收规则你搞懂了吗?,springboot输出视频流

Java 程序员 后端

Java 虚拟机1:什么是 Java,太完整了

Java 程序员 后端

Java-进阶:集合框架1,java三个技术平台

Java 程序员 后端

InnoDB(4(1),java技术架构知识

Java 程序员 后端

Java transient关键字的使用,java商城项目面试

Java 程序员 后端

Java 多线程 —— 定时器,svnlinux使用教程

Java 程序员 后端

Java-Parallel GC介绍,springmvc面试题高级

Java 程序员 后端

Java-进阶:集合框架1(1),java分布式系统面试题

Java 程序员 后端

java-集合-Map(双列)——迪迦重制版(1),关于线程池的五种实现方式

Java 程序员 后端

InnoDB(3,韩顺平java从入门到精通课件

Java 程序员 后端

Android开发:button的text文本是字母默认显示大写的解决步骤

三掌柜

11月日更

Java 方法的使用(方法重载、形参和实参调用关系,java高级面试最新

Java 程序员 后端

Java 里面的异常,java语言程序设计教程pdf

Java 程序员 后端

Java 高并发之设计模式,深入linux内核架构mobi

Java 程序员 后端

如何编写 Go 包

baiyutang

golang 11月日更

Java this关键字详解(3种用法),Java程序员最新职业规划

Java 程序员 后端

JAVA 微信小程序 解密 用户信息encryptedData,linux系统架构与目录解析

Java 程序员 后端

JAVA 获取系统日期时间,java基础百度云

Java 程序员 后端

Android C++系列:JNI调用 Java 类的构造方法和父类的方法.md

轻口味

c++ android jni 11月日更

InnoDB(4,java中级工程师面试题

Java 程序员 后端

jackson学习之八:常用方法注解(1),java虚拟机实现原理

Java 程序员 后端

java 数据结构与算法之稀疏矩阵算法,BTAJ面试有关散列(哈希)表的面试题详解

Java 程序员 后端

数据cool谈(第2期)寻找下一代企业级数据库

数据cool谈(第2期)寻找下一代企业级数据库

腾讯开源之道:基于Apache之道的开源实践与探索-InfoQ