Top
首页 > 正文

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

发布时间:2021-08-06 18:29        来源:赛迪网        作者:

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中的如InLong、Ozone、Pulsar等项目实现了对业务的支撑和赋能,并形成了一套最佳实践。

Apache 之道对社区的重要指导

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

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

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

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

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

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

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

Apache 项目及其社区都是独特但却多样化的。在社区主导的开发过程中,Apahce成员将其获得经验的总结体会凝聚为了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之道内化于其自身开源理念、开源方法论和开源生态建设的实操中。

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

每日必读

专题访谈

合作站点