一篇详细的 PD 招聘广告

好吧,我这篇文章的题目已经非常的直白了,这是一篇招聘广告,唯一的目的就是吸引对 PD 有兴趣的同学参与到 PD 的开发中来。当然如果你对我们不感冒,你也可以通过这篇文章大概知道 PD 后面主要干啥。

职责

无论是我们公司,还是其他的公司,对于 Job 的描述,无非几块,第一块详细的说工作职责,再来就说对你的要求是啥,然后再来一个加分项,最后可能在谈谈公司的福利啥的。

这里我想来谈谈第一块,工作职责,这一块大家都会写的比较详细,但普遍的一个问题在于我们不可能告诉大家为啥要去做这些事情,做这些事情会有那些挑战等。毕竟公司的招聘页面篇幅有限,也不可能去长篇大论。如果要详细了解,只能在面试的好好讨论了。所以,我觉得有必要多提前多介绍点,让更多的同学了解我们,加入我们的行列。

下面是我写的 PD 的工作职责。

  1. 负责集群全局调度系统的设计,开发,文档撰写
  2. 负责集群模拟器的开发
  3. 负责集群可视化系统的开发

好吧,是不是一脸懵逼,至少我一下子就会蹦出来三个问题,什么是调度系统,什么是模拟器,什么是可视化?所以下面就来依次说一下。

Keyword

在继续之前,先简单介绍下一些基本的概念和流程。在 TiKV 里面,我们会把所有数据当成一个无限大的已经排序的 map,然后使用 range 的方式对数据切分成不同的 region。譬如 region 1 覆盖的 key range 范围可能是 [a, b),region 2 覆盖的可能就是 [b, c),range 区间是左闭右开的,不同 region range 不可能重叠。Region 是 PD 这边处理的最小单位。

我们使用 Raft 来保证数据的一致性,对于一个 region 来说,通常有 3 个副本,我们也可以配置其他的副本数,譬如 5 或者 7 个。关于 Raft,大家可以详细的去看我之前写的 「小猪佩奇」系列,这里重点强调一下,对于一个 Raft group 来说,所有的 write 和 read 都是通过 leader 来进行,虽然也可以支持 follwer read,但现在我们这边没有支持,先不做讨论。

调度

当你的集群有几百台机器,有非常多的数据的饿时候,调度的作用就非常明显了。如果调度设计的不好,很容易导致整个集群性能的抖动,甚至把集群搞得完全没法工作。所以,调度应该是 PD 最重要的工作。

先来看看下面的一种情况,我们有 3 个 TiKV 节点,3 个 region,然后所有的 region 的 leader 都在 TiKV 1 上面。

明显可知,TiKV 1 的压力会非常大,因为所有的读写都是经过这个节点,所以 PD 会考虑进行 leader balance,也就是将 leader 调度到不同的 TiKV 上面,譬如下面这样。

再来一个情况稍微复杂一点的场景,在一些用户那边,有可能是两地三中心这种架构(虽然三地三中心是最好的),也就是两个 IDC 放在一个城市 A,而另一个 IDC 放在远端的城市 B,通常业务都是跑到城市 A 的,所以 PD 会保证所有的 leader 都在城市 A 这边。

当数据量不断膨胀,我们需要添加一个新的 TiKV 节点,PD 就要考虑将一些数据调度到这台新的机器上面了。

这时候,我们不光就要考虑 leader 的平衡,也需要考虑数据 size 的平衡了。譬如像下面这样。PD 在新的节点上面放上了两个 region,保证了大体的 size 平衡。这里我们假设的是 region size 都差不多,但实际情况会更加复杂。

上面就是简单的列了一些 PD 一些调度策略,leader 和 size 调度,但还有更多,譬如 PD 会根据当前 TiKV 的业务情况,平衡有热点写,或者有热点读的 region,我们叫做 hot region 调度。或者升级 TiKV 的时候,为了不影响业务,先将 leader 从这个 TiKV 迁移到其他 TiKV,等 TiKV 升级完毕才重新迁移回来。

当然还有更复杂的,PD 有很多调度策略,当所有这些调度策略混合到一起的时候,调度会不会冲突,譬如调度 A 将一个 region 的 leader 迁移到一个 TiKV,而调度 B 又重新把这个 leader 给迁移回来了。

所以你看,要实现一个强大的调度系统,真的是一件非常困难的事情,挑战很大。

模拟器

当你开发了一个调度系统,如何看它能不能正常工作呢?简单的做法,就是自己搭建一套机器,测试呗。但如果你这个调度要测试数据量有几百 T 的时候,整个集群能不能正常工作,等你给集群灌道几百 T 数据,黄花菜都凉了。再说,通常公司也不可能直接跟你这么多机器来测试灌数据的。

解决这个问题的一个好办法就是写模拟器,这也是很多公司通常的做法,既然我们没有机器和时间,那就写模拟器来折腾这个事情。

要把模拟器写好可是一个大工程,首先你需要尽量模拟实际的情况,譬如我们需要定期分裂 region,考虑实际 TiKV 增加副本的时候有时间开销,不是瞬时的这些。

另外,我们也可以通过记录实际生产的调度情况,在模拟器里面重放,看调度效果。据我所知,某大厂的调度系统就经常录制线上的流量,然后用模拟器进行回放,来观察调度器的工作。

当然,模拟毕竟跟实际情况还是有区别,我们最终还是要去生产环境中检验调度的效果,但前期模拟还是能帮我们发现很多问题。

可视化

好了,上面说了调度,说了模拟器,那么我们如何知道实际的效果呢?当然可以通过日志, API 还有 metric 知道。但这些其实还不是特别方便,我们需要更直观的方式。

通过可视化,我们可以非常直观的看到整个集群的变化状态,知道现在集群是不是有问题。

上面是 PD 现在的一个可视化组件,是不是炫酷吊炸天。但还有很多东西需要去完善。现在只能大概知道集群的变动情况,还很难通过它去发现问题,要做的工作当然很多。

可视化其实对程序员的要求很高,毕竟这种交互界面,自己不没点美感,同时没丰富的人机交互经验,真的是很难做出来的。也就是说,弄出来你真的就可能是一个全栈工程师了,而且特么的还是分布式的。

福利待遇

好了,扯了这么多,相信各位大概也知道了 PD 要做什么了。总之,这是一个非常有挑战性的工作,难度还是很高的,但也会非常的有趣。我相信,加入我们,你会成长的非常快速。

好吧,再来说说现实一点的问题,加入 PingCAP 能有啥好处?我觉得可以有几方面吧:

  1. 金钱。这个不用说了,薪酬还是很有竞争力的,具体要跟我司崔老板去谈了。我承认现在大厂开的价钱已经离谱到匪夷所思的地步,但我们还有期权,也许你说这玩意就是张白纸,有啥用?但我觉得,贵司的老板们铁定不是那种坑爹类型的。期权对于一个处于上升期,正在腾飞的企业来说,真的就是未来的一笔能遇见的财富。随着 TiDB 新版本的发布,客户呈现了爆发式增长,各种不同业务案例也不少(当然,具体客户情况还是 confidential 的,不过你来了就了解了)。还有一个利好的消息是贵司现在海外湾区的分部已经搞起来了,刚落地有了 fulltime 的小伙伴全职加入,大家觉得更有信心了。
  2. 影响力。也许你会来一句,『名利于我如浮云』,但我觉得,我们非常重视大家的成长,对于大家的优秀成果,我们都会鼓励大家,或通过写文章,或出去参会这些的,分享出去,提升自己和公司的知名度。我们其实并不担心「把你锻炼出来了,别其他公司高价挖走了」这样的事情,因为这本来就是事实。如果你能力真的成长起来了,对公司就是一个好事,如果你这时候认可公司,留下来,我们会非常的欣喜,如果考虑其他机会,也未尝不可。这其实都是一个双赢的结果。当然,你喜欢了我们的工作方式,肯定就不想走了。
  3. 极客文化。弹性工作制,不打卡这种的不提了,毕竟是很多公司的标配了。你也可以尝试在家 remote,只要你能耐得住寂寞。周末我们通常会鼓励大家去参加 meetup,但来上班就随意了。相比很多公司把你做的核心东西藏着掖着,我们是真正的开源,让你能够跟全世界顶尖的开发者一起协作,共同成长。

要求

最后,来说说要求吧,毕竟招人就像是相亲,总得有个门槛的。

  1. 抗压能力。这没招,创业公司,压力真的很大,而且现在我们用户特多,压力就更大了。
  2. 知识背景。有多年分布式开发经验吧,至少 CAP,Raft 这些的总得知道。当然,如果你有调度系统的开发经验,折腾过 Kubernetes,Mesos 等东西,那更好了。
  3. 语言上面我们主要会使用 Go 和 Rust,如果没有这两门语言的开发经验,有C,Python 这些的也没问题。当然,Rust 可能对一些同学是一个坎,就看你能不能克服了,毕竟这门语言实在太难上手了。

当然,我们也非常欢迎实习生,对于想来实习的同学,你只要觉得自己主动性强,肯学习,能写代码就可以了。当然,也还是需要抗压能力的,因为我们有时候也直接会让实习生去解决用户问题,虽然压力很大,但能让你快速成长。

小结

好了,说了这么多,相信你也对我们有所了解了,你可以先去了解下 PD,代码在 https://github.com/pingcap/pd,欢迎给我们提 issue 和 PR。

如果你对我们感兴趣,欢迎联系我,直接发邮箱到 tl@pingcap.com 就可以了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,723评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,485评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,998评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,323评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,355评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,079评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,389评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,019评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,519评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,971评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,100评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,738评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,293评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,289评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,517评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,547评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,834评论 2 345

推荐阅读更多精彩内容