免费试用
作者:张建
社区动态
2020-03-17

TiDB 挑战赛第二季之 易用性挑战赛 已经开始一周了,由于有参加过上一季 性能挑战赛 的老玩家强势加入,这一季挑战赛的竞争格外激烈,短短一周的时间,已有 3 支队伍获得了上千积分!

完整积分排行榜可以登陆 活动官网 查看。

战况简介:

羡慕不如行动!我们也在这里简单分享一些捞分技巧,希望能够帮助大家快速上手,追上这些排名靠前的参赛选手们。

捞分技巧 1:用户投票结果中排名前三的需求有高额加分!

为鼓励大家选择用户呼声更高的任务,本次挑战赛中用户投票排名前三的需求对应的任务,会在原有积分的基础上分别额外增加 10000、8000、6000 分。比如这个排名第三的需求:record access statistics of databases, tables and indices,该需求原本的积分是 1294(积分低意味着难度低哟),再加上额外的 6000,这意味着完成这个低难度的任务总共能够获得 1294 + 6000 = 7294 分,性价比非常高!

捞分技巧 2:Chaos Mesh Contributing Tutorial 可以帮助大家快速上手拿分

Chaos Mesh 是一款云原生的混沌测试平台,大家经常听说的 TiDB 混沌测试工具就是它。对了,Chaos Mesh 项目后续会有大惊喜哦,真 · 潜力股(只能剧透到此了,你懂的)。

这份小小的 Chaos Mesh Contributing Tutorial 包含了 GitHub 协作基础、搭建 Chaos Mesh 开发环境和如何在 Chaos Mesh 中开发一个非常简单的新功能。内容不多,很快能看完。如果你之前没有参与过开源项目,可以看它;如果你有开源协作经验,但是没有参加过 Chaos Mesh 开发,也可以看它!看完小册子之后,大家就可以在 Chaos Mesh 挑战赛题目合集 轻松做任务、拿积分了!

捞分技巧 3:如果觉得 Medium 题目太难,那就在多个 Repo 同时刷 Easy 题目

相比第一季,这次易用性挑战赛除了 TiDB、TiKV、PD 之外,有更多代码仓库释放了任务:

  1. chaos-mesh
  2. Data Migration
  3. Backup & Restore
  4. client-rust
  5. TiDB Dashboard
  6. cherry-bot
  7. TiDB Operator
  8. TiUP

算上 TiDB、TiKV、PD 等总共有十多个代码仓库参赛。按照本次比赛规则,选手在每个仓库可以通过刷 Easy 难度的任务,获得最高 200 积分。那么 10 个代码仓库就是 2000 分,积少成多,收获非常可观哦!多多练手之后再挑战 Medium 难度的任务,也会更加轻松。

捞分技巧 4:从一些比较简单的 Medium 任务突破

TiDB:

通过 SQL 指纹的方式为 SQL 绑定执行计划 Hint:这是一个来自用户的需求,通过 SQL 指纹的方式能够极大简化创建 SQL Binding 语句的长度,提升用户体验。实现起来也并不复杂,修改 parser 文件支持语法后,再修改一下 TiDB 和创建 SQL Binding 相关的代码即可。

TiKV:

PD:

  • PD API Swagger 支持:让 API 符合 Swagger 标准且能生成在线 API 文档,实现简单,主要工作在于梳理  API,预期 3 天左右就可以完成。
  • 限制指定小表不被合并:这是一个来自社区的需求,需要让某些 Region 能够不被合并。选手们完成这个功能后就能知道完整的 Region Merge 调度流程了,是一个非常有意义的功能。

TiDB Operator:

  • 支持 Operator CRD Java SDK:由于 TiDB Operator 是由 Golang 编写的,目前其 CRD 文件只有  Golang 客户端,这个任务将给 Operator CRD 创建 Java 客户端,对于扩展产品生态非常有意义。
  • 优化 Operator Controller 报错信息:目前 Operator Controller 的报错信息不能帮助我们准确定位到具体的错误发生地点,这个任务将帮助我们优化 Operator Controller 的报错信息内容,提升用户体验。

Chaos Mesh:

  • 支持暂停混沌实验:给每一个 Chaos 对象的定义中添加一个 Pause 的字段,如果被设置成 True,那么 Controllers 在每次调用到对应 Reconcile 逻辑时会取消掉已经注入的错误并且跳过正常的执行逻辑。
  • 拓展 NetworkChaos 支持限制网络带宽:这个任务是对已有的 NetworkChaos 进行拓展,支持限制具体 Pods 的网络带宽,并且使用 netlink 工具包支持,这样可以很好的解决限制网络带宽的具体实现问题。

TiDB Dashboard:

Data Migration:

Cherry Bot:

  • 将各 Repo 的配置分为不同文件:对 config 组件进行小幅改动就可以。
  • 多分支并行 auto merge:目前 PingCAP 多个开源项目(如 TiDB、TiKV 等)都在使用该功能自动 merge 经过 Reviewer 点赞的 PR。这个任务将完善这个功能,使其能够同时 merge 多个分支上的 PR。要完成它需要修改 auto merge 的主体逻辑,但因为代码模块比较独立,适合用来学习 bot。

TiUP:

Client-rust:

  • 支持清理特定 key 的锁:在事务冲突严重时,针对小事务只清理特定 key 的锁能大大减轻 TiKV 服务器的负担。
  • 为 PD 客户端添加 Region 缓存:使用本地缓存的 Region 信息对于提升性能和降低 PD 服务器负担有很大的帮助。TiDB 中已经有比较成熟的实现,这里只需要将 TiDB 的实现迁移到 Rust 中。

不知道看完以上“捞分技巧”,大家有没有摩拳擦掌、准备上阵抢积分了?

报名方式、参赛细则请看 这篇文章,同时也欢迎大家加入 TiDB Community Slack Workspace,在参赛过程中遇到任何问题,都可以直接通过 #tidb-challenge-program channel 与我们取得联系哦~