唐刘:TiDB 研发工程实践及 TiDB 人才观丨CCF 中国数据库暑期学校


地铁到站
地铁到站 2023-08-03 10:08:43 52444
分类专栏: 资讯
在刚刚结束的 CCF 中国数据库暑期学校上, PingCAP 的研发副总裁唐刘分享了在 TiDB 研发过程中的工程实践经验和人才培养方法。目前,TiDB 已广泛应用于各行各业,有着庞大的用户基数,面临多样化的数据处理需求。PingCAP 通过开源、敏态+稳态的研发方式、自动化、持续测试以及持续倾听客户之声(Voice of Customer)等工程实践,成功应对了这些挑战。TiDB 的开源模式、人才培养、持续创造社会价值等也是 PingCAP 关注的焦点。以下为分享实录。阅读需约 8 分钟。

图片

我是 PingCAP 的研发负责人唐刘,也是 PingCAP 的第一个员工。从 8 年前,TiDB 的第一行代码开始,我就深入地参与到了这个项目中。非常荣幸我能有今天的机会,代表 PingCAP 与大家分享 TiDB 研发过程中的一些工程实践经验,以及我们人才培养的方法,供大家学习参考。
图片
经过了 8 年的发展,TiDB 已经被应用在了各行各业,可以说无论是衣食住行、金融保险,生活中每个环节都有了 TiDB 的参与。如此广阔的应用场景也给 TiDB 数据库提出了更高的要求。
作为一款通用数据库,各行业、各场景对数据处理的需求截然不同,如何满足多种需求?面对庞大的用户基数,以及当下爆火的 AI 技术,整个社会的数据量持续膨胀,数据库又该如何应对?很多同学可能会觉得,开发一款数据库,单机能跑起来、能存数据就好了,然而当数据规模扩大 10 倍、100 倍,甚至达到 PB 级别,即使是 OLTP 数据库,这个压力和挑战也是完全不同的。极度复杂的业务场景下,大规模海量数据的处理与分析成为了我们必须面对的挑战。幸运的是,PingCAP 通过 8 年的努力,成功地解决了客户的实际问题,接下来我将和大家分享,PingCAP 是如何通过工程实践和人才培养来应对这些挑战的。

图片

1  开源
在 PingCAP 的工程实践中,最重要的是开源,从开发 TiDB 的第一天起,我们就选择了完全开源的方式来开发我们的数据库,我们完全基于 GitHub 平台来开发,任何人都可以直接在 GitHub 上下载 TiDB 的源代码,编译、部署、运行,也可以直接发布到线上环境,甚至可以在遵循开源协议的前提下将 TiDB 的服务售卖给客户。我们将一切能开源的都开源,能透明的都透明。开源协作这个观念放在今天大家可能已经习以为常,但是在 8、9 年前的国内,尤其是基础架构领域公司,有很多人会投来非常怀疑的目光。但是我们始终坚定地去走开源这条路,因为我们相信开源是我们能跟我们的用户取得信任的最高效的途径。只有开源才能让用户清晰地了解 TiDB 的系统架构、设计思路,用户脱离 PingCAP 也能够运维、使用甚至迭代这个产品,这种信任对一家基础软件公司来说是至关重要的。
然而开源协作也并不是一件很简单的事,培养使用 GitHub 的习惯也是有一定上手门槛的。比如我们遇到问题之后,首先要在 GitHub 上开 issue,详细地把这个问题描述出来,甚至还需要复现问题;处理问题时要写详细的设计文档,邀请其他人来 review,通过后才能提交 Pull Request 进行代码研发,再次通过 review 才能合并代码,真正投入使用。这一系列流程走下来会有人觉得会不会太繁琐了?其实这也是开源的魅力所在,通过这样的方式,才能打造一款合格的工业体系的产品。
2  敏态 + 稳态
除了开源,PingCAP 另一个重要的工程实践就是敏态 + 稳态的研发方式。作为一款数据库产品,TiDB 的每个客户对数据库产品的要求是不同的,比如对于互联网客户,要求就是短而快,而在金融核心的银行大客户,稳定才是最重要的。所以,如何让所有用户都「又快又稳」地感知到 TiDB 的价值?我们选择了敏态 + 稳态的迭代方式。首先我们以敏态的方式来应对业务的不确定性。具体来说,我们会以非常高的频次 - 月度发布 DMR 版本,就是 Development Milestone Release 的这样的版本,同时每周我们会将最新代码部署到云上面去,进入 TiDB Cloud 给到用户进行试用,通过用户体验快速地迭代打磨,借助于整个社区的力量,帮助我们的产品,尤其是新的 feature 快速地推向市场,让客户去感知、去使用。同时,我们也在以稳态的方式提升整个产品的核心能力。我们每半年会发布一个 LTS(Long Term Support)的版本,让企业客户能够安心使用。因为很多行业,比如我们银行业的客户,不会去使用非常激进的版本,而是主要出于稳定性的考量。在这个的大的 LTS 版本里面,我们就会专注于稳定性、高可用性和性能的不断提升。
接下来我分享这些“工程实践”是来自 TiDB 的,同时业界优秀的互联网公司、软件开发人员也都有这样的“最佳实践”。
自动化
想让程序跑得又快又稳,非常关键的就是自动化一切能自动化的服务,让机器和 AI 最大程度地放大开发人员的生产力。大家能在 GitHub 上看到的 PingCAP 的项目代码,如果用冰山来打比方,可能只是冰山海平面上非常小的一角,它的海平面以下有非常大的基座,就是我们的自动化测试体系—— CI/CD、自动化的 pipeline、AI 增强的问答系统,以及其它相关的系统,都是藏在 TiDB 源码后面的。因而 TiDB 能够实现完全自动化的部署、运维。PingCAP 除了数据库内核团队,也成立了专门的团队来实现这些自动化,这也是 PingCAP 能跑得快的一个重要因素。
测试,测试,测试
重要事情说三遍,测试、测试、测试。活动现场有了很多和同学交流的机会,很多同学会有一个共同的疑问:在工业界和学术界做数据库到底有什么不一样?
以 PingCAP 为例,在工业界,我们很多的工作都是聚焦于“测试”的。这是个看起来非常枯燥的工作,但也非常基础,只有做好测试工作,数据库才能更加健壮。我是一个有 20 多年研发经验的程序员,甚至可以非常笃定地说,只要是从事软件开发这个行业,数据库或是其他,只要涉及到基础架构,能不能写好测试会是区分一个工程师是否优秀的一个分水岭。基础软件是非常复杂的系统,复杂系统的稳定性和鲁棒性是非常关键的,只有深入理解系统的工作原理,才能有效地测试系统,才能不断修正、优化。所以在设计系统的时候,我们要保证系统的「可测性」。
Eat your own dog food
吃自己的狗粮,这也是软件开发中常提到的一件事。像我们自己做的 OSS Insight,一个开源的 GitHub 数据分析工具,就是基于我们自己的 TiDB Cloud 来构建的。同时 PingCAP 内部的很多系统也都是基于 TiDB、TiDB Cloud 的。一个系统如果你自己都不愿意尝试体验,那就很难是一个好的系统。
部署、研发、预研,时刻保持技术领先
为了时刻保持技术的领先性,现在 PingCAP 采用的是一个“三代”的研发模块——部署一代、研发一代、预研一代。比如我们底层的存储 TiKV,现在用户部署的基本都是我们的“部署一代”,也就是单个 RocksDB 的存储引擎,今年年底我们会发布现在正投入大量资源研发的下一代存储引擎,也就是基于多 RocksDB 的 Partitioned Raft KV 的新一代存储引擎。除此之外,我们还在研发另一套云原生的 Cloud Storage Engine。我们会同时保持三代的迭代速度,确保我们在每一个时间点上,TiDB 的技术架构都是领先的,都能给用户带来更大的价值。
持续倾听客户之声
另外一个学术界与工业界的差距就是,在工业界你需要了解你的产品目标用户是谁,你的产品谁来买单?做产品一定要根据用户的需求来做,而非自己主观的评估。无论你的技术多么 fancy,看起来有多酷,如果没人用,它都不是一款好的产品。PingCAP 一直非常重视用户的反馈,无论是通过 GitHub 的开源协作,还是 AskTUG 论坛、我们线下的客户之声活动,我们都在不断地根据用户的反馈来进行产品的设计和迭代。

网站声明:如果转载,请联系本站管理员。否则一切后果自行承担。

本文链接:https://www.xckfsq.com/news/show.html?id=27083
赞同 0
评论 0 条
地铁到站L0
粉丝 0 发表 7 + 关注 私信
上周热门
如何使用 StarRocks 管理和优化数据湖中的数据?  2969
【软件正版化】软件正版化工作要点  2888
统信UOS试玩黑神话:悟空  2860
信刻光盘安全隔离与信息交换系统  2746
镜舟科技与中启乘数科技达成战略合作,共筑数据服务新生态  1280
grub引导程序无法找到指定设备和分区  1249
华为全联接大会2024丨软通动力分论坛精彩议程抢先看!  169
2024海洋能源产业融合发展论坛暨博览会同期活动-海洋能源与数字化智能化论坛成功举办  168
点击报名 | 京东2025校招进校行程预告  165
华为纯血鸿蒙正式版9月底见!但Mate 70的内情还得接着挖...  161
本周热议
我的信创开放社区兼职赚钱历程 40
今天你签到了吗? 27
信创开放社区邀请他人注册的具体步骤如下 15
如何玩转信创开放社区—从小白进阶到专家 15
方德桌面操作系统 14
我有15积分有什么用? 13
用抖音玩法闯信创开放社区——用平台宣传企业产品服务 13
如何让你先人一步获得悬赏问题信息?(创作者必看) 12
2024中国信创产业发展大会暨中国信息科技创新与应用博览会 9
中央国家机关政府采购中心:应当将CPU、操作系统符合安全可靠测评要求纳入采购需求 8

加入交流群

请使用微信扫一扫!