Hi,你有一份 TiDB 易用性挑战赛「捞分指南」请查收

网友投稿 587 2023-05-03

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

Hi,你有一份 TiDB 易用性挑战赛「捞分指南」请查收

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

战况简介:

BABAIsWatchingYou Team 通过 改进 Rust-Prometheus 中 Thread Local Metrics 的易用性 获得 2530 分。

niedhui Team 通过 为 TiDB-Dashboard 增加 TLS 支持 获得 1680 分。

hawking&chacha Team 通过 为 RocksDB WAL 写延迟增加监控 获得了 1300 分。

.* Team 通过 使用单独的日志文件存储 TiKV 慢查询日志 获得了 950 分。

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

捞分技巧 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 之外,有更多代码仓库释放了任务:

chaos-mesh

Data Migration

Backup & Restore

client-rust

TiDB Dashboard

cherry-bot

TiDB Operator

TiUP

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

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

TiDB:

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

TiKV:

TiKV 日志和 RocksDB 日志统一管理 :将 RocksDB 的日志放在和 TiKV 的日志相同的目录,按照相同的方式 rotate,方便运维和查找。

监控 TiKV 模块内存使用 :将几个核心模块的内存使用情况进行监控,方便排查 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:

日志搜索页面显示日志大小 :前后端都要修改,但都改动不多,非常适合会写 Go 的全栈工程师。

生成火焰图 SVG 时不依赖于 pprof 命令行 :Dashboard 和 pprof 都是开源 Golang 项目,代码整合一下不算难。

有 TiDB 节点不在线时重试 TiDB 请求 :核心其实是用 Go 编写一个简单的 TCP 端口转发 + Health Check。

Data Migration:

减少 DM 依赖的 TiDB 与 etcd 的日志输出 :为依赖库设置一下 log level 就可以,花一天时间就能搞定这个任务。

修复 remove-meta 的指定方式 :将配置项修改为命令参数就能实现,性价比高。

Cherry Bot:

将各 Repo 的配置分为不同文件 :对 config 组件进行小幅改动就可以。

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

TiUP:

给 Playground 添加集成测试 :只需要添加单元测试 case,对于了解代码逻辑非常有帮助。

支持为 Playground 中的 TiDB/TiKV/PD 指定配置 :支持这个功能可以极大的提升 TiUP 的易用性。要完成该任务需要添加一些 flags,同时在没有指定配置时使用默认配置。

给 Playground 组件集成 Grafana :支持这个功能后,使用 Playground 部署的集群就有 Grafana 监控了!实现的时候可以参考集成 Prometheus。

Client-rust:

支持清理特定 key 的锁 :在事务冲突严重时,针对小事务只清理特定 key 的锁能大大减轻 TiKV 服务器的负担。

为 PD 客户端添加 Region 缓存 :使用本地缓存的 Region 信息对于提升性能和降低 PD 服务器负担有很大的帮助。TiDB 中已经有比较成熟的实现,这里只需要将 TiDB 的实现迁移到 Rust 中。

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

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

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:TiKV Committer 庄天翼:只要能提升 Codebase 质量,就值得提交 PR
下一篇:What’s New in TiDB 4.0.0
相关文章