2021 年 12 月 25 日,2021 中国大数据技术大会暨 CCF 大数据与计算智能大赛高峰论坛在中科院计算技术研究所隆重召开。PingCAP 高级副总裁范若晗受邀在主会场进行了以 “开源走向世界” 为主题的演讲,结合 PingCAP 的实践,从协作方式和技术演进两个角度,分享了 “开源”和“全球化” 之间相互关联,密不可分的关系。本文内容根据演讲内容整理而成,分为上下两篇,本篇主题为:开源构建全球化的舞台。
文章图片
“开源” 和 “全球化” 之间有着非常紧密的联系,二者并不是孤立的。2015 年,PingCAP 在成立的第一时间就用开源、做开源、投入开源,并对全球化做了布局。
【开源走向世界(上)(开源构建全球化的舞台丨BDTC 2021)】实际上,PingCAP 从第一行代码的提交就是在 GitHub 上完成的,我们非常重视这一领地。社区的小伙伴基于 TiDB Cloud,实现了一个用于记录公共 GitHub 活动的公开数据存档在线工具:GitHub Archive。对原始日志数据(超过 40 亿条)进行分析对比,选取国内典型的企业[1],我们可以看到过去 10 年,中国开源像洪流一样发展,活跃仓库[2]数大幅提升。在这数千个活跃的仓库中,越来越多源自中国的开源项目受到国内外同行的认可与赞许,呈现出一种百花齐放的状态。而 PingCAP 创始人的认知和决心都来自于这个洪流的滋养,在过往的六年里也为这条曲线做出了小小的贡献。我们做的这个 GitHub 分析工具,很快也将提供给大家在线访问,根据自己的需求快速灵活的进行分析。
文章图片
令人欣慰的是,基础软件这个赛道在开源这个舞台上真正做到了长足进步:11 月底刚发布的 “十四五” 软件和信息技术服务业发展规划,明确了“开源重塑软件发展新生态”,数据库、人工智能、操作系统领域的开源项目最为活跃。
中国目前处于开源高速发展的阶段,开源软件的发展从最底层的操作系统开始,已发展到数据库、中间件,并向应用领域逐渐延展,近年来开始主导信息技术领域的深度创新:如,大数据、云计算、人工智能、区块链、云原生等,加速了国家核心技术的自主发展。《2021 中国开源发展蓝皮书》对国内活跃开源社区进行了不完全统计,我们可以看到,在数据库、人工智能、操作系统领域的开源项目最为活跃,这跟中国互联网行业的市场特点和当前技术发展也息息相关。
一系列的政策指导以及全球开源市场的趋势变化,大大提升了资本市场对开源公司的认可度。而当我们研究近 3 年国内 ToB 技术行业,发现获得数千万乃至数十亿投融资的众多企业,在满满的科技范儿背后都有着一个共同的标签,那就是开源。另一方面,在赛道选择上也有着高度的匹配:操作系统、数据库和人工智能。
过去开源在商业化上的巨大能量是被严重低估的,现在大家对于真正利用好开源这个高杠杆的模式依然还在摸索阶段。开源是真正帮助 PingCAP 走向全球化的一扇门。今天,我将和大家分享 PingCAP 的一些探索和经验。
信任问题的解决是所有工作的前提
PingCAP 不仅代码开源开放、面向全球,文档也是一样的。最早的 TiDB 没有中文文档,所有的注释甚至每一个提交记录都必须是英文的,所有的设计文档都要放到 GitHub 上。早期用户有问题,有时会直接微信或者邮件联系,但我们也建议他们把问题放到 GitHub。甚至有专人会帮早期提出 issue 的人把 issue 从中文翻译成英文。之所以这样做,其实是从 TiDB 项目发起和早期阶段就立下了一个理念,我们要把项目的 why 和 how 都展示给全球社区的参与者。
文章图片
大家看到的这个帅气的小伙,是来自多米尼加共和国的一位 TiDB 社区贡献者。开源天然地解决了彼此的信任问题,这也是开源的独特魅力,让全球社区的每个人都有机会来认识你、认可你、认同你。
在信任的基础上,开源产品可以在全球化的舞台上实现高效传播
TiDB 的相关技术文档,被技术爱好者自发地翻译成俄语、乌克兰语、日语、西班牙语和葡萄牙语等,极大推动了产品的全球化。PingCAP 编撰的 NewSQL 相关课程还入选了威斯康辛、普渡、卡内基梅隆大学数据库课程。
文章图片
开源的生态大大加快了迭代速度
这张图是 TiDB 每年代码的变化情况。红色是 TiDB 2015 年的代码,蓝色是 2016 年的,大家可以看到,TiDB 每年会进行超过 40% 的代码更新,而这些代码的 40% 是由外部贡献者贡献的,产品的快速迭代才能保证其持续领先性。国内外多家机构共同参与开发 TiDB,既有国内的小米、美团、知乎、一点资讯等,也有国外的 Databricks、Facebook(现在的 Meta)、韩国三星研究院等等。
文章图片
最厉害的产品一定是全球在用的。坚持全球化的技术视野、坚持开源这一战略,携全球的人才和全球的场景去竞争,让 TiDB 在新一代分布式数据库领域全面领先。接下来,我将给大家分享两个故事,让大家对开源带来的全球化社区共建有一个更深刻的体感。
第一个故事,是关于写书
在我们的印象中,通常的书籍编写是一个常年累月的细活,少则半年,多则数年,初稿完成后接着是多人的审阅然后再出版。但在技术发展瞬息万变的今天,产品迭代速度比较快,技术类的书籍能否有一个更快捷更高效的方式。在去年 TiDB 4.0 GA 版发布前夕, TiDB Master 分支社区一片热火朝天。为了给这个里程碑版本留下点不同的内容,我们的 CTO 产生了一个「疯狂」的念头,约一波 TiDB 社区伙伴,以 “分布式” 的方式,在 48 小时之内写完一本关于 TiDB 的技术书籍。希望系统且简要地介绍一下整个 TiDB 和周边工具生态,能手把手地指导用户 “把 TiDB 用起来且用好”。
说干就干,从 3 月 3 号在网上发布 TiDB Book Rush 这个创意,3 月 6 号周五晚 21:00 开始,历时 48 小时,共有 102 位来自社区的作者参与,截止周日 21:00,总计产生了 421 次 Commit,199 个 PR,最终开源电子书 《TiDB in Action》 第一版诞生,涵盖了 TiDB 基本架构原理,最佳实践及案例,TiDB 开源社区及周边生态发展历程等。
文章图片
访问地址:https://book.tidb.io/
第二个故事是关于开源加速产品迭代的
“4.0 捉虫竞赛”是由 TiDB 社区发起的挑战赛,选手可以通过为 TiDB 寻找 bug 或提交测试报告的方式获得相应积分,积分可以兑换奖品。这次竞赛共有 40 位社区小伙伴组成 23 支队伍进行参赛。通过大家共同不懈的努力,一共为 TiDB 4.0 GA 找出 51 个 P1 级别的 bug 和 8 个 P0 级别 bug。
本次捉 “虫” 竞赛第一名的获奖者 Manuel Rigger (还给自己起了个中文名字叫李曼努), 是一位专攻数据库测试方向的博士后,来自苏黎世联邦理工学院,他的测试框架也帮助 MySQL、PostgreSQL、MariaDB 等数据库找到了 400 多个 bug。
文章图片
刚才的两个故事,让我们看到了一个开放的开源社区有多么大的吸引力,可以激发全球社区的众多贡献者共创共建,加速产品的快速迭代。
这样的贡献并不是单向的,开源通过激发工程师在社群中的创造力,也使得大量的开发者、机构和企业,无门槛地使用质量优良的软件产品,贡献巨大的社会价值,形成一个良好的循环。
文章图片
大家看到的这两位男士是来自于危地马拉一所大学的教授和学生,图上他们穿着 PingCAP 创立的一个开源混沌工程项目 Chaos Mesh 的卫衣,这个教授和学生在 GitHub 上面做了一个非常有意思的项目,通过构建一个分布式系统,来实时记录分析世界各地的新冠疫苗接种的信息。Chaos Mesh 保障了这个系统的稳定。在看到这个项目之前,我们可能完全无法想象,中国的一群工程师做的一个项目能被中美洲的一个国家关注到,同样我们也不知道自己创建的混沌测试工具还能以这种方式参与到全人类都关注到的新冠疫情的工作中。与此同时,我们的 TiDB 产品也在中国的疾病预防控制管理、群体免疫监测等领域默默地发光发热。这些真实的故事体现的正是 PingCAP 社区用户的全球性,这张世界地图上的一个个圆圈,代表了参与 PingCAP 开源项目的社区用户数。正是这些来自全球的开发者让我们能够第一时间接触到更多的用户,获得更多关注,打下早期的客户基础。
作为先进的生产模式,开源让 PingCAP 获取到了非常多来自社区的帮助,同时把开源的智慧贡献给全球,实现了巨大的社会价值。现在 PingCAP 在开源到商业的道路上越走越好,也是从这些社会价值的贡献中萃取出商业价值,帮助公司和项目茁壮成长,为企业和产品的成功形成源源不断的价值闭环。
当我们从自己的产品跳脱出来,去看全球范围整个数据技术行业,会发现近十年涌现出来的数据技术创新, 95% 都是开源的。这张图显示的是截至 2021 年12 月初,我们的 GitHub Archive 数据分析得出的年度 PR Top 10 的数据技术项目,PR 即 Pull Request,就是用户修改了代码,希望合并到主干仓库中,它体现的是开源项目的创新迭代能力。
文章图片
可以说最近十年数据技术创新进入了前所未有的蓬勃发展阶段,动力来源于哪里?选择困难该怎么办?在下一篇文章中,我将与大家分享 PingCAP 从数据库近半个世纪的发展历程里,学到了什么,技术发展对 PingCAP 的架构选择和产品方向产生了什么影响。
[1]国内典型的企业:包括阿里、百度、腾讯、字节、美团、滴滴、华为、京东、小米、网易、Bilibili、微众、携程、PingCAP 等 40 多家公司
[2]活跃仓库:指在一年中有发生过至少一项事件的仓库,如 PushEvent、IssueCommentEvent、ReleaseEvent、PullRequestEvent等(总计有21 类事件)
推荐阅读
- 数据库|SQL行转列方式优化查询性能实践
- mysql|一文深入理解mysql
- 达梦数据库|DM8表空间备份恢复
- 数据技术|一文了解Gauss数据库(开发历程、OLTP&OLAP特点、行式&列式存储,及与Oracle和AWS对比)
- SqlServer|sql server的UPDLOCK、HOLDLOCK试验
- 谈灾难恢复指标(RTO与RPO是什么鬼())
- RPO与RTO
- 数据库|效率最高的Excel数据导入---(c#调用SSIS Package将数据库数据导入到Excel文件中【附源代码下载】)...