如何用AI技术降噪? QCon 广州“音视频架构实践”专场给你答案! 了解详情
写点什么

华为开源的道和术

  • 2020 年 9 月 28 日
  • 本文字数:4705 字

    阅读完需:约 15 分钟

华为开源的道和术

从 2019 年华为全面提出软件开源战略以后,一年多时间华为开源多点开花。开源这项事业不是一项短期工程,却能为世界带来深远的影响。华为为什么要做开源?华为开源项目背后的故事是什么?开源与商业之间有什么纠葛和联系?带着这些问题,InfoQ 在 2020 华为全联接大会上采访了华为云与计算开源业务总经理、开放原子开源基金会 TOC(技术监督委员会)主席堵俊平。



软硬件的巨变,唯有开源能直面

在过去的十多年里,软件开发的各个领域发生了巨大的变化。


  • 云计算从虚拟机到容器再到云原生,十年时间已经迎来送往了多个时代;

  • 数据库从关系型到 NoSQL 再到 NewSQL,商业型数据库、开源数据库互相印证一路前行;

  • 运维们也从“人肉运维”到 DevOps、AIOps,引发了行业性的被替代危机。

  • 即便是在相对稳定的软件架构领域,以十年为单位去回顾信息产业的发展历史,也能发现每个时代都有各自的计算机架构模式。


“全面云计算”时代的到来,计算机硬件的性能提升速度已经赶不上软件所需的算力极致。随着 5G 的又一次时代降临,终端接入设备呈现了超百倍的增长,直接带来的就是超过 80% 的非结构数据的增加,数据的存储传输计算分析应用都对云、边缘、大数据、AI 等创新场景带来了全新的挑战。


从全面云计算到 5G 设备的普及,我们可以认为大前提是全球算力分布的一个变化。从 60 年代大型机的集中式算力到互联网时代的分布式算力,再到当前 5G 时代的多算力,本质上都是算力资源的分配方式。全面云计算时代其实是云、边、端一体化的时代,而 5G 设备的通信能力在其中必不可少,让创新场景成为可能。

整体上来说,过去几十年间从底层的算力分配到上层的应用都在快速发展,软件尤其是基础软件也要去适应这种潮流趋势。从华为的角度看,在这个时代潮流中既有机遇也有挑战。一方面华为在网络通信领域的技术积累非常丰厚,另一方面如何利用这种优势去联接开发者共同打造创新的行业生态是接下来要探索的问题。华为选择了以开源的方式去联接合作伙伴和千万开发者,共同探索行业破局之道。


2019 年,华为全面提出了软件开源的战略,而其中开源的重心则落在了基础软件层面。华为不是这个商业模式的创新者,Intel、Nvidia、ARM 的成功不约而同地都构筑在强大的硬件能力和繁荣的软件生态之上,开源也是他们繁荣软件生态的重要实现手段之一。一年时间,华为开源做到了多点开花,但这背后却远非旦夕之功。


三个“open”和一大战略

在 7 月召开的线上开源峰会与嵌入式 Linux 大会上,Linus 谈到了为开源操作系统寻找未来维护者时的种种挑战。这次讨论很快就涉及到了一个令人不安的问题:在目前这一代维护者逐渐老去之后,Linux 项目将走向何处?面对 Linus 等这批五零后、六零后项目管理者,Hohndel 提到:“我们这个社区终归要考虑代际变更的问题。到那时,我们该怎么办?”


这次线上的讨论没有得出结论,但堵俊平在采访中却给出了一个数据:


今年8月 Linux kernel 5.8 版本发布,华为在内核代码贡献上全球排名第二。


华为软件全面开源的战略始于一年前,但这个内核代码贡献量的排名却源于过去十多年的贡献积累。


开发者们可能发现华为最近一段时间密集性地发布、开源了一些突破性的技术,但这其实是得益于过去十年,华为分布在全世界各个研究所的数千工程师持续不断的研发投入。除了前面提到的 Linux 内核,华为内核工程师 ARM 64 架构、内核缺陷发现、容器核心功能 Cgroup 等项目上都有持续贡献,拥有超过 20 位的 Linux 内核 maintainer,这不是简单地砸钱就可以取得的成绩和社区的认可。


在此之前,华为也有一些 Apache 的项目比如 Service Comb,在云原生领域的 KubeEdge 等开源项目在试水,在这个过程中华为上下也凝聚了一个共识:


硬件开放,软件开源应该成为全公司的战略。如果要把生态做好,就一定要用开源开放的方式。硬件再强大,软件再优秀,如果构建不起良好的生态,没有开发者、合作伙伴的共建,是很难走得下去的。


堵俊平向笔者介绍了华为过去一年来的三大开源项目,分别是去年 12 月开源的 Linux 发行版 openEuler 和今年 6 月底开源的企业级数据库 openGauss、数据虚拟化引擎 openLooKeng。这三个“open”分别承担了数据驱动创新的三个场景:openEuler 协调不同架构之间数据的流动;openGauss 高效地存储、管理和运维数据库;openLooKeng 成为连接各种不同数据源的虚拟化引擎分析工具。


openEuler:全场景协同的统一操作系统

软件行业相伴相生的两条定律:摩尔定律和安迪·比尔定律揭示了创新的来源——硬件提供算力,软件释放算力,而操作系统则是介于硬件层和应用层之间的一种根科技,协同调度。随着硬件向多样性计算和新介质发展,应用场景向泛云化、边缘、AI 发展,对现有操作系统在算力释放、数据安全、智能运维、开发体验、场景协同等方面提出新的挑战,也带来了新的机遇。


x86、ARM、RISC-V 这些主流架构都有其各自的场景和生命力,尤其是在云边端协同一体化的现在,很难有一种架构可以做到全场景协同统一。我们目前处在一个多样化算力的时代,操作系统如何去更好地适应底层硬件情况是一个高频的问题。openEuler 愿意去做这样的兼容,向下区兼容硬件,向上更好地支撑软件。

openEuler 是一个兼容多算力的操作系统,它不是一个传统意义上的操作系统的概念。我们更愿意称其为 openEuler 社区,我们的合作伙伴和社区成员构建了很多 SIG 组(兴趣小组),每个 SIG 组可能都面向不同的场景,云、边、端、AI、IOT 等等,甚至不乏一些跨场景的创新。所以这些主流架构的支持,其实并不仅仅来源于华为,这其中还有更多来自社区的创新与创造。openEuler 开源以后的开发工作都是华为与社区共同参与,未来的发展除了华为本身的贡献,还要依靠社区的力量,一起把开源的生态做好,用开源的方式去满足更多或主流、或长尾的需求。


openGauss:企业级开源数据库

在数据库场景下,以 MySQL, PgSQL 为代表的开源数据库已经成为主流选择,但企业级用户对企业关键数据、核心业务的承载体,有着性能,安全和运维的更高要求。


2019 年 5 月,华为发布了企业级数据库 GaussDB,2019 年 9 月,华为宣布将开源 GaussDB,开源后将其命名为 openGauss。2020 年 6 月 30 日,openGauss 正式面世,数据库源代码对外开放。


  • 6 月 30 日发布第一个开源版本,聚焦 openGauss 与鲲鹏协同性能优化。基于 2 路鲲鹏服务器,性能可以达到 150 万 tpmc ,相对业界主流产品有 50% 性能超越;

  • 12 月底将发布多引擎融合版本,通过 HTAP 行列混合存储、MOT 内存存储、PITR 在线备份以及即时恢复等三个创新技术,打造支持事务型和分析型混合负载的融合数据库引擎。以 MOT 技术为例,通过把数据表分析内存化,经过实测,性能提升到 250 万 tpmc;

  • AI-Native 也是一个重要的数据库特性,目前 openGauss 已经支持 AI 参数调优,SQL 性能预测等功能,12 月底还会加入智能索引推荐,智能负载预测等功能。明年 openGauss 将会推出推荐系统、监督学习等 DB4AI 的高级特性。


openLooKeng:大数据虚拟化引擎

华为在大数据领域的耕耘也有很长时间,我们观察到了大数据领域的一个痛点就是开源的平台有很多,比如 Hadoop、Spark,HBase,Key-Value 等等不同的平台、引擎、存储。这些不同的数据引擎其实又成为了另一种数据孤岛,openLooKeng 可以跨不同的大数据引擎做统一的数据虚拟化的查询、数据湖的分析,可以解决实际上的一些痛点。


openLooKeng 具备三个重要的能力:


  1. 跨源关联分析:通过开放数据连接框架支持异构的数据源接入,从而实现跨多个数据源的碰撞和关联查询,真正实现了对数据源的采集变连接,减少传统 ETL 操作,实现数据 0 搬迁,释放多源数据的碰撞潜力。当前的 openLooKeng 支持接入 hadoop 体系生态的数据源,比如 Hive,HBase 等,同时也支持 NoSQL 和 RDBMS 等数据库的接入。

  2. 跨域协同计算:作为支持跨域协同计算的开源大数据引擎,openLooKeng 实现了高效的跨域跨 DC 的数据查询,让应用在广域网的部署下拥有局域网的体验。

  3. 高性能:openLooKeng 目前在北向通过统一 SQL 提供查询入口,同时在引擎内核层通过跨源索引、动态过滤、算子下推等关键技术,支持海量数据复杂场景的高性能需求,最终实现了从 ms—s 级的交互式查询能力。


不到一年时间,三个“open”社区迎来了蓬勃发展,近一百家企业组织机构加入了社区贡献者的行业。其中 openEuler 社区有超过 2000 的贡献者,仅仅开放了三个月的 openGauss 和 openLooKeng 社区,也都迎来了 500 和 200 的贡献者。而这些贡献者里面,非华为的贡献者已经超过了 70%。


开源、商业与技术未来

云计算发展至今,颠覆了业界传统的商业模式。以云为依托,探索一条软硬结合的破局之道,这是当前各大巨头云厂商的发力支点。华为在过去两年间在硬件、软件的产品发布以及二者的协同、调优方面做了很多的工作。背后的逻辑很简单,只做硬件,你就没有生态。只做软件,你就失去了基石。


云是一个肉眼可见的发展趋势,在其之下很多创新都会发生。云上支撑的业务已经远超我们所能想象,在这种创新的大前提下,单纯只做硬件或软件的创新可能都不够,软硬件的结合创新是背后的驱动力所在。云的好处一是降低成本,二是加速开发部署速度,在此基础上必然不断带来新的需求,包括调度、打包、分发等,对软硬件配合的能力要求更高,倒逼云厂商探索新的模式。

在云边端的协同方面,你会发现在这三个不同的场景下的硬件架构可能都不一样,在 openEuler 出来之前我们缺乏一个统一的操作系统能够把三者结合起来,这种跨平台、跨算力的操作系统业界几乎还没有。这也是华为努力推动开放开源的 openEuler 社区发展的原因所在。


开源的魅力,在于联接各方力量,重新分配资源以取得更大创新。


很多人觉得开源是一种商业模式,但在我看来,开源是一种资源组织模式,它更类似于一种生产关系。在开源以前,很多创新都是由单一的企业来进行,但在开源以后却是由整个社区里的企业、开发者来一起实现创新,这是开源的魅力和强大所在。另一方面,不管是对企业还是个人,对开源抱有一定的目的性都无可厚非。企业的本质就是自给自足,商业盈利,如果说哪家企业说自己主要出发点不是为了商业回报,这显然不符合商业逻辑。

一个好的开源项目如果有好的商业模式,可以吸纳更多的资源进来,社区中的企业或者开发者如果找到更好的商业模式,本身也能为其带来助力作用。从组织的角度是不是一定要去做开源,利用开源去达成商业化,需要看组织是不是想要构建一个大的生态,以此来辅助商业目标的达成。从华为的角度看,选择开源这条路,是因为我们认为团结尽可能广泛的开发者和合作伙伴一起能实现我们的目标和愿景。

所以从我的角度看,开源和商业是一个正交的关系。你可以站在开源角度看商业,也可以站在商业角度看开源。


对于国内的开源环境,堵俊平认为开发者们应该对于国内企业的开源更加宽容,开源本身是一个勇敢者的游戏,中国开源的现状有其历史包袱,也有一些局限性。但把时间跨度拉长,我们可以发现这个局面的转变是向好的。


我们在开源社区的建设中也发现,目前国内开源贡献者中来自高校的学生群体越来越多。我觉得学生群体做开源有几个好处,第一学生时间相对比较充裕,第二学生包容性更高,第三学生在参与开源社区的建设以后,在未来的工作中将为国内的各大企业带来开源的火种。


受访者介绍

堵俊平,现为华为云与计算开源业务(OSDT)总经理,开放原子开源基金会 TOC(技术监督委员会)主席,Apache 软件基金会 Member, Apache Hadoop PMC & Committer 以及 Apache NuttX, YuniKorn 等项目导师。


加入华为前,历任腾讯开源联盟主席 / 数据平台部总监,Hotonworks Hadoop 核心团队(美国)负责人等角色,积累了在云计算,大数据以及开源领域长期的研发、管理和业务经验,具有广阔的技术视野和业界影响力。


2020 年 9 月 28 日 14:554510
用户头像
小智 前 InfoQ 主编

发布了 408 篇内容, 共 346.3 次阅读, 收获喜欢 1901 次。

关注

评论

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

SOLID五大框架设计原则

Zzzz

极客大学架构师训练营

ARTS Week11

丽子

框架设计原则

wing

极客大学架构师训练营

Week 2 學習總結

Christy LAW

Java 架構師 學習

逼着面试官问了我ArrayList和LinkedList的区别,他对我彻底服了

沉默王二

Java ArrayList linkedlist

架构师训练营学习小结(2020.9.14 - 9.20)

zjzj2017

架构师训练营第一期——第二周作业

tao

第二周作业

zero2onemore

第二周学习总结

熊桂平

极客大学架构师训练营

框架设计作业

ABS

ARTS打卡 第18周

引花眠

微服务 ARTS 打卡计划

第2周

paul

【架构师训练营 1 期】第二周作业

诺乐

架构师训练营学习小结(第二周2020.9.21 - 9.27)

zjzj2017

收款神器!解读聚合收款码背后的原理

楼下小黑哥

最通俗易懂的——如何将机器学习模型的准确性从80%提高到90%以上

计算机与AI

学习 数据科学

SpringBoot系列(2)-第一个SpringBoot程序

引花眠

springboot

架构第二周总结

Geek_Gu

极客大学架构师训练营

【架构师训练营第 1 期 02 周】 作业

Geek_4437a0

极客大学架构师训练营

week2

张兵

极客大学架构师训练营

第二周作业

Geek_ac4080

Week_02学习总结

golangboy

【架构师训练营1期】第二周学习总结

诺乐

一篇搞定前端高频手撕算法题(36道)

执鸢者

面试 算法 大前端

架构师训练营第一期——第二周总结

tao

架构师第 2 课作业及学习总结

小诗

极客大学架构师训练营

第二周作业一

dll

架构师训练营营第 1 期之框架设计02

天行健

架构师训练营第二周作业

zjzj2017

高难度对话读书笔记—求助的勇气

wo是一棵草

架构师训练营第 1 期 - 第2周 - 作业

wgl

「云智公开课」百度沧海·存储

「云智公开课」百度沧海·存储

华为开源的道和术_开源_小智_InfoQ精选文章