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

news2025/1/7 22:47:39

在刚刚结束的 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 是如何通过工程实践和人才培养来应对这些挑战的。

TiDB 工程实践

开源

在 PingCAP 的工程实践中,最重要的是开源,从开发 TiDB 的第一天起,我们就选择了完全开源的方式来开发我们的数据库,我们完全基于 GitHub 平台来开发,任何人都可以直接在 GitHub 上下载 TiDB 的源代码,编译、部署、运行,也可以直接发布到线上环境,甚至可以在遵循开源协议的前提下将 TiDB 的服务售卖给客户。我们将一切能开源的都开源,能透明的都透明。 开源协作这个观念放在今天大家可能已经习以为常,但是在 8、9 年前的中国,尤其是基础架构领域公司,有很多人会投来非常怀疑的目光。但是我们始终坚定地去走开源这条路,因为我们相信开源是我们能跟我们的用户取得信任的最高效的途径。只有开源才能让用户清晰地了解 TiDB 的系统架构、设计思路,用户脱离 PingCAP 也能够运维、使用甚至迭代这个产品,这种信任对一家基础软件公司来说是至关重要的。

然而开源协作也并不是一件很简单的事,培养使用 GitHub 的习惯也是有一定上手门槛的。比如我们遇到问题之后,首先要在 GitHub 上开 issue,详细地把这个问题描述出来,甚至还需要复现问题;处理问题时要写详细的设计文档,邀请其他人来 review,通过后才能提交 Pull Request 进行代码研发,再次通过 review 才能合并代码,真正投入使用。这一系列流程走下来会有人觉得会不会太繁琐了?其实这也是开源的魅力所在,通过这样的方式,才能打造一款合格的工业体系的设计。

敏态 + 稳态

除了开源,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 engine。我们会同时保持三代的迭代速度,确保我们在每一个时间点上,TiDB 的技术架构都是领先的,都能给用户带来更大的价值。

持续倾听客户的声音

另外一个学术界与工业界的差距就是,在工业界你需要了解你的产品目标用户是谁,你的产品谁来买单?做产品一定要根据用户的需求来做,而非自己主观的评估。无论你的技术多么 fancy,看起来有多酷,如果没人用,它都不是一款好的产品。PingCAP 一直非常重视用户的反馈,无论是通过 GitHub 的开源协作,还是 AskTUG 论坛、我们线下的客户之声活动,我们都在不断地根据用户的反馈来进行产品的设计和迭代。

TiDB 产品家族协同演进

经过 8 年的打磨,TiDB 形成了一个完备的产品家族体系。最上面是 TiDB Open Core,也就是我们的源代码是完全开源的。基于这个 Open Core,我们推出了 TiDB 企业版、全托管的 TiDB Cloud,和 TiDB Serverless 版本。前两者对应着我之前提到的“敏态 + 稳态”,而 TiDB Serverless 则正在把 PingCAP 人一个非常有野心的愿望变成现实:我们希望给全世界的开发者提供一款免费的、永远在线的数据服务。我们希望 TiDB Serverless 能做到表级别的创建和唤醒,在满足一定 resource quota 的情况下,做到可预期的性能。

TiDB 人才生态

TiDB 自主开源的模式,打造了敏态 + 稳态的工程体系和开放式的架构哲学,而这一切的基础、最核心的部分就是 TiDB 的人才生态。TiDB 一直坚持开源,而 PingCAP 作为一家公司,是以营利为目的的,为什么还能一直坚持开源信仰?我们坚持做企业一定要回报社会,一个好的商业模式是什么样的?我们觉得应该是先创造社会价值,再从社会价值上萃取一部分商业价值,这也是我们对于自己未来长期的期望。

TiDB 在培养怎样的人才?从我们过去招聘的 JD 就可以看出来。归纳到这几点,第一就是技术专精,热爱开源,数据库作为基础软件,对计算机系统的理解、过硬的编程实力都是必须的,我们也希望大家能够深刻理解开源软件的协作模式;同时我们希望你有国际化的视野和拥抱创新的精神,TiDB 诞生于中国,服务于全球用户,在中国、北美、APAC、欧洲都有业务,只有具有开放的心态,才能更好地拥抱国际化;除此之外,客户导向也很重要,如我前面提到的“持续倾听客户的声音”,贝索斯也在亚马逊的 leadership principle 中提出了一条 customer obsession,也就是痴迷客户,客户导向,唯有如此才能打造一款成功的产品。

8 年以来,公司、产品不断壮大,TiDB 的人才生态也在逐步完善,现在也有了一些成果。我们通过 TiDB 成功地连接了全世界的数据库人才,TiDB 在全球有近 2000 名贡献者,遍布 45 个国家和地区,包括现场的同学也有很多 TiDB 的贡献者,TiDB 也成功进入了全球范围内超过 250 家高校。

技术人如何实现社会价值

作为一名工程师,如何创造社会价值?

又回到了最开始我们聊的:开源。只有开源,我们才能在全世界的代码宝库里,留下一些有长远价值的东西,我们的探索,也才能成为国内技术通行者的共同探索。

在开源的基础上,为了让 TiDB 触手可及,我们做了许多努力。

首先,我们将 TiDB 的底层存储 TiKV、混沌工程测试平台 Chaos Mesh 都捐赠给了 CNCF 基金会,它们现在已经成为了非常技术公司构建自己云原生服务的底座;从 2021 到今天,PingCAP 连续三年与 CCF 数据库专委会合作,共同组织中国数据库暑期学校,促进工业界与学术界的联动,让更多学生接触到了数据库的专业知识;我们还打造了 Talent Plan 项目,一门非常适合技术爱好者入门数据库内核研发的数据库课程,现在已经与 250 多所高校合作,学员遍布全球……

今天,为了更好的支持中国数据库人才培养,持续赋能中国数据库行业,践行 PingCAP 对数据库人才的长期主义,和中国数据库一同成长,PingCAP 向中国计算机学会数据库专委会捐赠三年暑期学校工程实践的全部实验,2021 年的主题是分布式,2022 年是优化器,今年的主题是云数据库,欢迎大家体验。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/836244.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Datax 数据同步-使用总结(一)

1,实时同步? datax 通常做离线数据同步使用。 目前能想到的方案 利用 linux 的定时任务时间戳的方式做增量同步。 2,同步速度快不快? 单表同步速度还是挺快的 但是如果遇到复杂的 sql 查询,其同步效率&#xff0c…

企业数字化转型:信息化还是数字化?

面对巨大的数字经济市场,全球大部分企业都开始了数字化转型进程,国内一半以上的企业已经将数字化转型视为下一步发展重点,并制定了清晰的数字化转型战略规划。 但是,相当一部分传统行业,如制造、金融、能源、化工等非数…

使用ngrok实现内网穿透

前言:因为公司对接的某个项目要搭建一个测试环境,所以使用内网穿透的方式来搭建。非常方便,而且还节省资源,最重要的是免费啊这个工具。 ngrok官网:https://ngrok.com/ 点击下载,很快就能下好。 下好之…

Postman(接口测试工具)

目录 一.基本介绍 1.Postman 是什么 2.Postman 快速入门 2.1快速入门需求说明 二.Postman 完成 Controller 层测试 需要的代码: Java类 request.jsp success.jsp 1. 完成请求 2. 完成请求 3. 完成请求 4. 完成请求 5. 完成请求 三.发送join 一.基本介…

【Ubuntu】Ubuntu 22.04 升级 OpenSSH 9.3p2 修复CVE-2023-38408

升级原因 近日Openssh暴露出一个安全漏洞CVE-2023-38408,以下是相关资讯: 一、漏洞详情 OpenSSH是一个用于安全远程登录和文件传输的开源软件套件。它提供了一系列的客户端和服务器程序,包括 ssh、scp、sftp等,用于在网络上进行…

机器学习深度学习——卷积神经网络(LeNet)

👨‍🎓作者简介:一位即将上大四,正专攻机器学习的保研er 🌌上期文章:机器学习&&深度学习——池化层 📚订阅专栏:机器学习&&深度学习 希望文章对你们有所帮助 卷积神…

微信朋友圈会自动点赞?

网友称微信存在bug,朋友圈会自动点赞?腾讯回应了 微信作为国内最大的网络社交平台,目前用户已超过11亿。 令人吃惊的是,拥有这么庞大用户数量的平台,竟然有可能存在Bug。 近日,#微信回应看朋友圈会自动点…

Linux性能分析工具介绍(二)--内存、进程、磁盘、IO分析

目录 一、引言 二、Linux性能分析工具介绍 ------>2.1、进程 ------>2.2、内存 ------>2.3、磁盘 ------>2.4、IO 一、引言 本章从内存、IO、进程的角度,分析linux系统的性能 二、Linux性能分析工具介绍 2.1、进程 2.1.1、top top命令可以动态查看进程…

【pandas百炼成钢】数据预览与预处理

知识目录 前言一、数据查看1 - 查看数据维度2 - 随机查看5条数据3 - 查看数据前后5行4 - 查看数据基本信息5 - 查看数据统计信息|数值6 - 查看数据统计信息|非数值7 - 查看数据统计信息|整体 二、缺失值处理8 - 计算缺失值|总计9 …

【ASP.NET MVC】使用动软(三)(11)

一、问题 上文中提到,动软提供了数据库的基本操作功能,但是往往需要添加新的功能来解决实际问题,比如GetModel,通过id去查对象: 这个功能就需要进行改进:往往程序中获取的是实体的其他属性,比如…

浪潮服务器硬盘指示灯显示黄色的服务器数据恢复案例

服务器数据恢复环境: 宁夏某市某单位的一台浪潮服务器,该服务器中有一组由6块SAS硬盘组建的RAID5阵列。 服务器上存放的是Oracle数据库文件,操作系统层面划分了1个卷。 服务器故障&初检: 服务器在运行过程中有两块磁盘的指示灯…

需要仔细了解公文类型和目的,以便选择合适的写作风格

撰写公文前需要仔细了解公文类型和目的,以便选择合适的写作风格。 不同类型的公文有不同的结构、内容和表达方式,需要根据具体类型和目的来选择合适的写作风格和表达方式。例如,通知、公告等公文需要采用简洁明了、规范严谨的表达方式&#x…

一篇文章教你学会:对Java集合进行并集,交集,差集运算

废话不多,直接上代码: 目录 1:新建一个实体类 2:准备好数据 3:使用stream 流求 3.1 并集 3.2 交集 3.3 差集 3.31(第一种) 3.32(第二种) 4:使用Gool…

《吐血整理》高级系列教程-吃透Fiddler抓包教程(28)-Fiddler如何抓取Android7.0以上的Https包-下篇

1.简介 虽然依旧能抓到大部分Android APP的HTTP/HTTPS包,但是别高兴的太早,有的APP为了防抓包,还做了很多操作: ① 二次加密 有的APP,在涉及到关键数据通信时,会将正文二次加密后才通过HTTPS发送&#xff…

RFID资产管理系统的选择

RFID资产管理是一种有效的资产过程控制方法,可以帮助企业实现高效的资产管理。选择RFID技术,可以高度集成各种资产信息,完成实时跟踪管理。   根据RFID资产管理系统,可以做到资产的实时管理,使企业管理者可以实时了解…

Android优化篇|网络预连接

作者:苍耳叔叔 一个示例 前后分别去请求同一个域名下的接口,通过 Charles 抓包,可以看到 Timing 下面的时间: 第二次请求时,DNS、Connect 和 TLS Handshake 部分都是 -,说明没有这部分的耗时,…

C# 控制台彩色深度打印 工具类

文章目录 前言Nuget 环境安装代码使用打印结果 总结 前言 有时候我们想要靠打印获得程序信息,因为Dubeg模式需要一点一点断点进入进出,但是我们觉得断点运行实在是太慢了,还是直接打印后找结果会好一点。 Nuget 环境安装 想自己写的话可以看…

unity tolua热更新框架教程(1)

git GitHub - topameng/tolua: The fastest unity lua binding solution 拉取到本地 使用unity打开,此处使用环境 打开前几个弹窗(管线和api升级)都点确定 修改项目设置 切换到安卓平台尝试打包编译 设置包名 查看报错 打开 屏蔽接口导出 重新生成 编译通过 …

FineReport常用功能

不分页显示数据 参见:https://help.fanruan.com/finereport/doc-view-328.html?source4 列数多时,所有列不能在一页显示,可在URL后增加如下参数,添加模版时,可以作为模版参数进行设置: 分页预览模式&am…

orangepi 4lts ubuntu安装RabbitMQ

4lts的emmc 系统安装选文件系统格式 ext4 需先安装erlang: sudo apt install erlang 安装RabbitMQ: sudo apt install rabbitmq-server - 添加用户以便远程访问: - 账号密码都是admin: sudo rabbitmqctl add_user admin admin -sudo rabbitmqct…