华为开源的道和术

2020 年 9 月 28 日

华为开源的道和术

从 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:553911
用户头像
小智 InfoQ 主编

发布了 389 篇内容, 共 302.3 次阅读, 收获喜欢 1645 次。

关注

评论

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

架构师训练营第五周学习总结

尹斌

数据湖探索DLI新功能:基于openLooKeng的交互式分析

华为云开发者社区

数据 处理

谁说AI看不懂视频?

华为云开发者社区

视频 剪辑

区块链赋能供应链金融|应用优势与四类常见模式

CECBC区块链专委会

区块链

现成区块链交易所开发app,币币撮合交易平台搭建

WX13823153201

现成区块链交易所开发

数据安全无小事:揭秘华为云GaussDB(openGauss)全密态数据库

华为云开发者社区

安全 数据 加密

小熊派开发实践丨漫谈LiteOS之传感器移植

华为云开发者社区

开发 IoT stm32

面试官的灵魂一击:你懂 MySQL 事务日志吗?

Java架构师迁哥

标准的开发框架,对企业开发有多重要?

Learun

敏捷开发 快速开发

批处理 有状态等应用类型在K8S上应该如何配置?

东风微鸣

Kubernetes 最佳实践

容器化应用系统上生产的最佳实践

东风微鸣

Kubernetes 最佳实践 生产

DDIA 读书笔记(2)数据模型的存储与检索

莫黎

读书笔记

趣味科普丨一文读懂云服务器的那些事儿

华为云开发者社区

镜像 服务器 服务

学习总结

饺子

架构训练营第一周学习小结

李日盛

Vidyo产品给用户方带来了什么直接的便利

dwqcmo

音视频会议 集成架构 解决方案 智能硬件

商用密码与区块链共推数字经济发展

CECBC区块链专委会

网络安全 数字经济

Java中String占用空间的评估标准

陈德伟

Java jdk 源码剖析

架构师训练营第一周课后作业

李日盛

socket编程

菜鸟小sailor 🐕

websocket

GitLab用户切换引发的某程序员“暴动”,怒而开源项目源码

小Q

Java git 学习 开发 代码仓库

spring-boot-route(二十二)实现邮件发送功能

Java旅途

Java Spring Boot 发送邮件

全面到哭!BAT内部Java求职面试宝典,必须人手一份!

Geek_71bb95

Java 程序员 架构 面试 编程语言

为什么Java容器推荐使用ExitOnOutOfMemoryError而非HeapDumpOnOutOfMemoryError?

东风微鸣

Kubernetes 最佳实践 jvm调优

ArCall功能介绍手册

anyRTC开发者

ios 音视频 WebRTC RTC 安卓

JavaScript 类型 — 重学 JavaScript

三钻

JavaScript 前端 前端进阶

自动化测试框架类型,你知道几种?此处介绍5种比较常见的

软测小生

软件测试 自动化测试框架 软件自动化测试

容器开发运维人员的Linux操作机配置优化建议

东风微鸣

Kubernetes 最佳实践 k8s入门

《码出高效:Java开发手册》“码” 出高效的同时编写出高质量的代“码”。

Java成神之路

Java 程序员 架构 面试 编程语言

1分钟带你get React setState 面试要点

Leo

面试 前端 React 前端进阶训练营 setState

在K8S Volume中使用 subPath

东风微鸣

Kubernetes 最佳实践

华为开源的道和术-InfoQ