每一次指尖的滑动,都是与 YMatrix 最亲密的交互
屏幕前的你,是否看倦了眼花缭乱的测评报告和硬核重磅的技术分享? 如果你的心里默默给了肯定,不妨继续向下滑动页面。 在接下来的几分钟里,你将会随着这些文字,抽丝剥茧般一览 YMatrix 不为人知的小秘密,随 YMatrix 一起亲临每一则大新闻背后的百转千折。
开发者的理想国
镜头跳接到 2021 年的秋天。
彼时的 YMatrix 从资质注册到正式运营仅半年有余,就像京剧《沙家浜》的名场面:“拢共才有十几个人、七八条枪”。 一个令人振奋的商机在团队的不懈努力下有了眉目:理想汽车(ONE车型)。
理想ONE 每台车上的数据埋点多达五千余个,且随着数据分析需求的增加,会持续迭代到近万个。同时,车联网场景要求近乎完美的高吞吐、低延迟,还会高频出现数据异频上传、分批上传等问题,堪称是时序场景的珠穆朗玛峰,也是 YMatrix 当时所遇到的最复杂的时序生产场景。
毋庸置疑,这是一场关于硬核技术的实战验证。
对 YMatrix 的研发团队而言,接到这个远超期待的任务,就算是经历过风雨,也欣赏过彩虹,其心路历程仍难免百转千折。挑战并解决重点项目的成就感令人肾上腺素飙升,但接踵而来的便是肩头沉重的压力以及难免溢于言表的焦虑。迎着大家期许的目光,主攻 MARS 存储引擎的鹏洲带着他的兄弟们接下了这个硬茬儿。
直面理想汽车的需求,YMatrix 需要解决三道难题:首先是技术的实现,理想场景是从未遇到过的极其复杂的时序场景,是对 YMatrix 技术实力的强劲考验;其次是能否满足客户预期,客户对 YMatrix 期待极高,需要最大化资源利用率以及性价比。这样能同时实现技术提升以及商业价值的项目,对于创业初期的 YMatrix 而言,是竭尽全力也要达成的合作;最后是紧迫的项目周期,时间是商机的重要组成部分。留给 YMatrix 首次试炼的时间只有一个月,为了在最短时间内达成客户预期,研发团队不得不争分夺秒。
两周后,高性能行列混存引擎“SORTHEAP”(MARS2的雏形)在鹏洲团队的研究下诞生,其针对理想项目海量存储、高速写入、异频写入、分批写入和并发查询等难点进行了逐一突破。团队终于迈出了第一步。
功能研发完毕后,是持久而反复的稳定性测试。另一位研发昊哥,辅助搭建了丰富的自动化稳定性测试工具,大幅提高了效率。常规研发规划下需要数月才能完成的复杂系统工程,YMatrix 总共用一个月的时间,便让理想照进现实。 工作状态下的鹏洲总是略显沉默,相较用语言描述事情,他更习惯让代码“说话”。但当被问到最难忘的一件事时,他感慨道:“我和昊哥是‘兄弟连’,有时候我写代码到深夜两三点,结果代码一提交,发现昊哥还在,他说立马再帮我跑一个测试。”
或许很难想象出这样对比鲜明的情景:看上去低调沉默的鹏洲,是一位曾经在尼泊尔徒步五天五夜,还热衷 F1 方程式的人。但相处越久,就越能理解这一点:无论是冒险,还是钻研,都由兴趣驱动,然后以一种持久的耐心与坚韧进行下去。这种看似反差,实则贯通的性格在 YMatrix 同事中并不罕见,鹏洲是其中之一。 YMatrix 公认的最佳拍档 - 昊哥,在完成理想汽车项目后这样回忆:“可能 YMatrix 的每个开发者,真正的、共同的特点,就是都想做有价值的事情。夸张一点来说,我希望在火星的飞行器上用的是我们的产品,一部分代码是我写的。”
怀抱着决心与信心,YMatrix 收获了理想汽车的充分认可:“面对海量数据、复杂的网络环境及严苛的性能要求,YMatrix 稳定支撑了车机信号采集处理业务,在服务器用量减少 2/3 的情况下,不但数据入库延迟大幅降低,而且系统查询性能也显著提升。”
想赢得客户信任,便要先征服自己。而征服自己需要更大的勇气,其胜利也是所有胜利中最光荣的胜利。 理想汽车的故事是 YMatrix 开发者们的缩影,积跬步,至千里,我们携手踏上去往理想国的旅程。
Build Our Dream
2021 年 10 月,为了全面、深度提升数据库性能,同时配合比亚迪客户的需求,YMatrix 内核研发 - 于宁,开始思考向量化执行引擎在 YMatrix 中实现的可能性。
于宁身高 190,一年四季都穿着短袖,颇有武侠小说里“身高过丈,寒暑不侵”的大侠风范。 这位 Greenplum 个人贡献全球排名第 4 的大哥 平日涉猎广泛,除研发主业外,还喜好研究各种计算机底层原理。说话的时候,每句观点前都会带上“我个人觉得”,眼神清澈而充满好奇、语气坚定。
于宁回忆,早在 Greenplum 时期,他和几个同事就试图将向量化引擎嵌入 Greenplum 中,但是其列存引擎存在两个显著问题:读取效率低,且缺乏数据内置的筛选能力。这两个问题不仅限制了存储,也限制了计算,这种情况造成了 Greenplum 虽然向量化之路蓄势待发,却因为诸多原因仅仅止步于形式,无法实现预期的性能提升。 而 YMatrix 彼时主攻方向为时序领域,属于实时分析型场景,对海量数据的分析性能提出更高要求,在存储引擎的支持上也有了更大的研发空间,适合做向量化执行并进一步释放潜力。万事齐备,只欠东风,这无疑是个难得的全力以赴打磨查询性能的良机。
得益于在 Greenplum 的经验教训,于宁团队从设计目标、开发方式、开发语言、系统设计、风险评估、项目排期等诸多方面,对向量化在 YMatrix上的搭载进行了详尽的规划设计,大家齐心协力,将存储能力的提升作为踏出向量化之路的第一步。存储性能的提高并不是一个简单的改变,而是一个推倒式、变革式的设计,研发团队根据已有行业经验,将思路对准:完成数据自组织之后,再有序地存储入库,以减少每次查询前,对随机分布的数据进行排序所消耗的巨大资源,从而提升查询速度。一段时间后,MARS2 存储引擎诞生,从向量化执行器的角度对存储进行设计:使查询性能依赖于对数据的内部自组织能力。可以说,MARS2已经成为了一个更纯粹的存储引擎。
地基有了,设计图有了,接下来要思考如何更好、更快地让心目中的“美好建筑”拔地而起。
为了能得到数量级的性能提升,大家协同进行了漫长的前期调查。于宁个人前期调查的成果主要是 libsuperfast 项目:“它第一次让我意识到现代 CPU 的数据处理能力可以有多快。经过针对每一种单一运算的指令级的测试与打磨,我终于完全理解了如何发挥现代 CPU 的处理能力。” 以此作为种子,团队在向量化执行器中实现了向量化的数据加载、过滤、排序、算术表达式、聚集表达式等各种运算,并把它们打磨得高效。通过 zero-copy 数据通道与 cache line 友好的流水线式执行把这一切组装在一起, 再充分利用存储层面的过滤能力和顺序信息等机制,最终完成了向量化执行引擎的开发。令人振奋的是,日前经过 SSB(性能相关) 基准测试,YMatrix 查询性能比世界顶尖数据库产品 Clickhouse 还要快 24%。
比亚迪公司的 slogan 是“Build Your Dream”,但在 YMatrix ,大家相信只要把“Our Dream” Build 好了,客户的“Dream”也会水到渠成。
作为第一个正式使用搭载向量化执行引擎 YMatrix 产品的企业级客户,比亚迪给出如下评价:“YMatrix 灵活融合了多种特性,一库即可支持多业务场景,为工厂庞杂的 IT 系统提供了统一的数据基座。同时,它也为基础设施瘦身提效,大幅提升了业务速度,是一款高性能数据库产品。”
于宁的团队伙伴,来自新疆石河子、浓眉大眼的研发申磊说:“于宁对我们要求高,但他对自己要求更高,他真的拥有那种榜样的力量,你可以看一下他写的代码,我一会儿给你截图。”(于宁的代码截图请在文末查收~ )
做一项长期又精细化的工作,除了要做好技术资源预备,还必不可少的就是耐心。对于打造向量化过程中遇到的瓶颈,于宁强调了一点:心态开放。保持开放的心态不仅在事业中重要,在生活中也重要。开放意味着“反固化”,避免固化思维产生的局限与抵触心理。随时有看到更好可能性的能力,抓住机遇,随时演进。实践,反馈,改善。比起只是基于某些高深理论设计研发方向,YMatrix 更愿意选择先去做,然后根据客户反馈不断分析改善。
闽东夜未眠
2022 年夏秋之际,一场硬仗突如其来:闽东告急。
八月份的闽东潮热多雨,淅沥的小雨让机场跑道看起来黑漆漆的。项目所在地未建机场,CEO 姚延栋在厦门落地后召集大家集合。无暇适应湿度与气压的变化,大家马不停蹄地登上复兴号。每个人都在心中默默完成了上百次“沙盘推演”,准备迎接这场持久战。
事件起因是 8 月 30 日晚 21 时,部署在闽东某新能源头部企业核心生产系统的某分布式 PG 系数据库宕机了。对于这种工厂规模与业务体量巨大的企业来说,一个小时的业务暂停,都将面临千万级的损失。
为了以最快速度帮客户解决问题,减少损失,研发和 field 的同事们一落地便奋力投入其中。出于对客户信息的保护,这里不再详述技术细节。总之,成功恢复库后,没有任何的数据丢失。从了解问题到解决问题,YMatrix 只用了 3 个小时,最终为客户规避了数千万的经济损失。
为了避免再次发生严重的技术故障,客户决定使用 YMatrix 替换掉原数据库生态。这次数据库替换工程的核心要素还是“快”,需要在保证工程质量的同时尽可能压缩停机时间,以减少真金白银的代价。而决定工程时间快慢的核心,是大量原始数据的迁移效率。对此,YMatrix 研发团队想到采用并行复制数据的思路,经过前后方远程协作,产出了全新的数据迁移工具 mxshift,48 小时内跑出原型,一周完成了数据迁移。
闽东此行激烈紧张,项目形势亦千变万化。国庆假期前夕又突发了一段插曲:YMatrix 需支撑一个重要且紧急的项目上线,以辅助客户高层决策。留给 YMatrix 的时间窗口只有 10 天,可以说海绵里都挤不出水了。幸好,第 9 日夜晚开发完成,项目终于可在次日清晨上线。现场同事在上线当天对其业务部门进行了产品培训,为这个项目画上了完美的句点。大家都回到“久违”的客房,安心的睡下了。挑战与机遇辉映,痛苦与快乐交织,正如我们每天的生活。
在这个项目中,“风险前置”是 CTO 翁岩青反复强调的一个词,它在 infrastructure团队(简称 infra)体现的最为淋漓尽致。在本次项目中,为了保障客户对产品稳定性的严格要求,Amy 领队的 infra 组通过针对不同业务场景的稳定性测试、压力测试、性能测试等类别之下的数千项测试为客户业务场景模拟出了尽量多的风险可能性,以确定客户生产环境稳定可靠。 正因 infra 越来越准确、高效地前置风险,牢牢守住产品与客户中间的最后一道防线,YMatrix 才能持续运行一个稳定、健壮的系统,最大程度规避客户损失。 最终客户给予 YMatrix 评价言简意赅:靠谱。
所谓“天下事皆起于微,成于慎”。YMatrix 笃信技术可以改变世界,但也深刻意识到,仅通过技术优势不足以让任何企业基业长青。对产品稳定性的维护,对服务质量的重视,更是需要坚持做的有价值的事。
宇宙,量子,玫瑰
如果说数据库是一个宏大宇宙,每个YMatrix人就如同这宇宙中一个个渺小又伟大的量子,渺小到能产生的量子纠缠作用微乎其微,但汇聚起来却能产生超乎想象的巨大力量。而对美的终极追求正是 800 多天以来,支持我们在这个四维宇宙中遨游的燃料。如同《球状闪电》中描绘的那朵蓝色的“量子玫瑰”,这是一朵只有用心才能看到的花,是一朵用爱与美浇筑而成的艺术品。
对技术之美的追求深深刻在 YMatrix 研发者的基因之中。“真正地认识到这个东西的美感,你才能真正去投入。”从小学习奥数、热爱古典乐的昊哥谈到最初接触数据库时的震撼:“之前不管是学数学,还是自己创业,其实都喜欢追求最顶尖的,或者说更深层的东西。所以当时一接触数据库就觉得太优美了,一代一代的工程师把理论和实践构筑起来形成这么一个产品。虽然你看不到它,但是整个的 IT 都是构筑在这个上面。就像象牙塔尖儿一样。” 谈及技术之美,昊哥认为,数据库架构朝着可线性扩展的方向不断演进,即为美 —— 包括超大规模分布式、无瓶颈的并行化、以及可弹性扩展架构设计。在研发勇哥看来,数据库之美主要体现在架构之美,即代码简单、逻辑清晰、实现简洁。越高深的技术,反而越需要简单的输出,也越容易剖析出清晰的架构。而于宁认为,美是对于良好代码风格的坚持:“无论是注解、API 风格、Readme 还是排版,都要优雅。” 良好的代码风格,是开发者之间畅通无阻的信息通路。当一个开发者有所愿景,将代码作为一种特别的交流语言,那么通过良好的代码风格,会让任何对自己敲下的代码感兴趣的伙伴产生沟通意愿,以及融入的可能性,也可以在互联网时代与 Github 上全球排名最高的大神无障碍交流。正如《Beautiful Code》序文所述:“要想成为他们,你得先知道他们。”
在 YMatrix 聊到“美”这个话题,一定绕不开一个特别的团队 MXUI 。如果说 YMatrix 的研发团队是一支心有猛虎的精锐部队,MXUI 就是那个细嗅蔷薇的存在。 三年前,常年住在新西兰某座山山脊,纹着花臂的研发任远和昊哥共事时就想尝试做网页端的数据库安装器,试图取代命令行安装的繁琐流程。两年后,终于把10分钟实现分布式数据库安装的 installer 做到了MXUI上。这也成为了最受用户好评的 UI 功能。由于YMatrix 面向很多处于数智化转型的传统企业,产品的可交互性变得尤为重要。与之相应的,“使用比 SELECT 1 更简单” 这句 slogan 就出现在了 MXUI 的欢迎页上。
MXUI 认为交互之美主要来源于对三种因素的把控:表达性、扩展性、与美感。 表达性(expressiveness) 对于交互系统而言,重要性首屈一指。如同人与人之间对话,人的输入与系统的反馈要形成高效的信息闭环。例如在做扩容特性时遇到的数据重分布问题,MXUI 在平衡用户打扰的基础上,事前事后做了多重提醒和反馈,最大程度地保障了系统状态的清晰和可预期。 扩展性(scalability),意味着加入了时间这个变量来考虑整个系统的延展。比如,MXUI 在早期就完成了设计系统和组件库,一方面保证系统能与用户之间形成一套标准的“共同语言”;同时也大大提高了设计和开发效率。因此在客户要求三天之内给一个数据探索 demo 时,MXUI 输出水准能做到专业和标准化。而这位企业客户也成为了第一位单独为 MXUI 付费的客户。 美感(aesthetics),是最直接呈现的一个层面。MXUI 希望在表现层传达出一种积极的、与 YMatrix 理念自洽的主观感受。这种 look & feel 层面的“极简” 更多地是一种结果,而非刻意的追求。这出自于“以用户为中心”做设计的逻辑起点。同时,就像国画中的留白,极简给想象力和拓展性留出了空间。
对任远和他的小伙伴们来说,对美的追求也许是与生俱来的信仰。他们享受这个打磨的过程,就像做一道充满匠心的料理:“偶尔增加一簇茶叶助雅兴,有时候也加几颗糖,最后插一朵玫瑰花进去。”
尾声
刘慈欣在《球状闪电》写道:“但那朵玫瑰的每一个细节都印在我的脑海中,它充满了生机,透出一种冰雪的灵气。” 一个个渺小量子的相互作用,在宇宙中竟能汇聚成一种有关于理想的极致浪漫。 YMatrix 的每个人心中都有属于自己的宇宙,对数据库的热忱与追求极致技术的信念会化作构成量子玫瑰的碎片,当它盛放之时,请共同欣赏那耀目的灿烂光芒。也希望在我们所能够留下印迹的时代,有越来越多的玫瑰开满各个角落,待到山花烂漫时,“她”在丛中笑。