摘要:作者申礫本文是招聘職位深度解讀系列的第一篇,我司申礫老師將為大家介紹團(tuán)隊一群無法抑制內(nèi)心技術(shù)騷動的人。在數(shù)據(jù)遷移的過程中,我們支持對數(shù)據(jù)的以及內(nèi)容按照一定規(guī)則做轉(zhuǎn)換,實現(xiàn)分庫分表的合并等復(fù)雜的操作。
作者:申礫
本文是 PingCAP 招聘職位深度解讀系列的第一篇,我司 Engineering VP 申礫老師將為大家介紹 TiDB 團(tuán)隊(一群無法抑制內(nèi)心技術(shù)騷動的人!)。TiDB 團(tuán)隊工作方向
簡單來說,TiDB 是一個分布式高可用且能夠水平擴(kuò)展的關(guān)系型數(shù)據(jù)庫,這個數(shù)據(jù)庫的內(nèi)核包含三個組件,其中的 SQL 層組件的名字也叫做 TiDB。這個組件負(fù)責(zé)所有和 SQL 計算相關(guān)的事情以及和客戶端(業(yè)務(wù))之間的交互,這是一個承上啟下的核心模塊。除了負(fù)責(zé) TiDB 組件之外, TiDB 團(tuán)隊還負(fù)責(zé)開發(fā)與其他數(shù)據(jù)庫之間的數(shù)據(jù)遷移和同步組件,比如 TiDB 自身的 Binlog 模塊以及讀取 MySQL 之類數(shù)據(jù)源 Binlog 的組件。
來 TiDB 團(tuán)隊你能做什么TiDB 研發(fā)工程師職位信息:
https://www.pingcap.com/recruit-cn/engineering/tidb-engineer/
招聘職位上的「崗位職責(zé)」簡單寫了下面三點:
負(fù)責(zé)分布式數(shù)據(jù)庫查詢優(yōu)化器和執(zhí)行引擎相關(guān)的設(shè)計,開發(fā),文檔撰寫和新人指導(dǎo);
負(fù)責(zé)分布式數(shù)據(jù)庫 SQL 層的設(shè)計,開發(fā)和性能優(yōu)化;
參與分布式數(shù)據(jù)庫底層系統(tǒng)存儲系統(tǒng)的設(shè)計。
這里可以做的事情非常多,下面我會詳細(xì)地介紹。
正確性數(shù)據(jù)庫最難的部分在于如何保證正確性,這個是需要具備嚴(yán)謹(jǐn)思維+想象力的工程問題,也是我們每一個工程師日常必須考慮的問題。
我們需要以負(fù)責(zé)且懷疑一切的態(tài)度去審視每一行代碼;需要以嚴(yán)謹(jǐn)且狡詐的方式想出各種套路方法(“陰謀陽謀/奇技淫巧”)去吊打自己的產(chǎn)品;需要嚴(yán)肅且堅決地拒絕任何可能帶來不確定性的變更;需要在每次遇到問題的時候都反思今后如何避免出現(xiàn)類似的問題。
這是一個極端重要且有技術(shù)難度的事項,所以我把它放在第一點來介紹。
架構(gòu)一個好的架構(gòu)決定了產(chǎn)品的好壞。SQL 引擎是一個非常復(fù)雜的東西,涉及到大量的模塊,如何安排這些模塊,并解決這些模塊之間復(fù)雜的交互是非常重要的事情。
DDLDDL 是 SQL 引擎最基本的功能之一,有人覺得不就是建個表、刪個表嗎?其實不是,難點在于如何在分布式數(shù)據(jù)庫上支持不阻塞業(yè)務(wù)的 DDL 變更,特別是在海量數(shù)據(jù)上做 DDL,如何既快又好。例如如何在線修改一個十億級別 Table 的某一列的類型?當(dāng)然這一切的前提都是保證 DDL 操作的正確性,這點在分布式數(shù)據(jù)庫中有很多點需要考慮,不信的話可以來一起踩坑。
優(yōu)化器一條 Query 的查詢計劃好壞可能會導(dǎo)致執(zhí)行時間的巨大差別,優(yōu)化器就是 SQL 引擎的軍師。我們需要考慮各種數(shù)據(jù)分布、各種優(yōu)化手段、各種等價變化,在合理的時間內(nèi)選出一條不那么差的查詢計劃。這里說“不那么差”聽起來不那么靠譜,但是在 Query 比較復(fù)雜的情況下,潛在的查詢計劃搜索空間非常龐大,既要找到好的查詢計劃,又希望縮短搜索時間,這是一個非常有挑戰(zhàn)的事情。希望你能來和我們一起做一個“總能選出最好的查詢計劃”的優(yōu)化器。
統(tǒng)計信息收集與更新在優(yōu)化器搜索并評估所有候選查詢計劃的過程中,統(tǒng)計信息的準(zhǔn)確與否非常重要,它是 SQL 引擎的情報官,優(yōu)化器擁有準(zhǔn)確的統(tǒng)計信息才能做出正確的決策,就像軍師有精確且及時的情報才能給出正確的行動方案。在海量的數(shù)據(jù)中(百億級別)如何快速計算統(tǒng)計信息,反應(yīng)數(shù)據(jù)真實分布;在繁忙的生產(chǎn)系統(tǒng)中,如何讓統(tǒng)計信息跟上數(shù)據(jù)的變動,提供更及時的信息,這些都是有挑戰(zhàn)的事情。
執(zhí)行引擎軍師根據(jù)正確的情報制定了好的作戰(zhàn)計劃之后,還需要驍勇的將軍去執(zhí)行,在這里就是執(zhí)行引擎。我們在 2.0 和 2.1 兩個版本中,都對執(zhí)行引擎做了大量改進(jìn),一些語句的運行時間有了幾倍甚至數(shù)量級的提升。我們會考慮到如何提升 CPU 使用率、減少 Cache miss、減少 TLB miss,通過 Pipeline、并行等模式提升執(zhí)行速度。
數(shù)據(jù)遷移/同步組件作為一個新興的數(shù)據(jù)庫,我們需要考慮幫助用戶平滑的遷移(全量+增量)已有數(shù)據(jù)庫(主要面對 MySQL)到 TiDB 中來,當(dāng)然我們也提供一套組件來實時同步數(shù)據(jù)變動到數(shù)據(jù)庫外面。主要包括下面三個組件:
TiDB Data Migration?(簡稱 DM)
TiDB Binlog
TiDB Lightning
DM 是一個數(shù)據(jù)遷移平臺,同時支持全量遷移(MyDumper+Loader)以及增量遷移(讀取 MySQL Binlog),我們需要把這個工具做的穩(wěn)定、高效、易于使用。在數(shù)據(jù)遷移的過程中,我們支持對數(shù)據(jù)的 Schema 以及內(nèi)容按照一定規(guī)則做轉(zhuǎn)換,實現(xiàn)分庫分表的合并等復(fù)雜的操作。除了實現(xiàn)這些功能之外,還會致力于讓各種操作盡量簡單方便,可視化同步狀態(tài)。
Binlog 是 TiDB 自身的 binlog 模塊,能夠把 TiDB 集群的實時變動發(fā)送出去,通過 binlog 可以給 TiDB 增加一個從集群,這個從集群可以是另一個 TiDB 集群,也可以是一個 MySQL 實例。另外也可以將 binlog 寫入消息隊列中被其他系統(tǒng)消費,用于其他用途,只要知道 binlog 數(shù)據(jù)的 protobuf 定義即可。這里的難點在于如何保證正確性、性能、穩(wěn)定性,特別是如何保證多個節(jié)點的 binlog 數(shù)據(jù)按照事務(wù)保證輸出順序,數(shù)據(jù)不重不丟不亂且延遲低。
Lightning 是一個專門為 TiDB 開發(fā)的數(shù)據(jù)批量導(dǎo)入工具,可以讀取 MyDumper 的輸出格式或者是 CSV 格式的文件,將數(shù)據(jù)導(dǎo)入 TiDB 集群。相比通過 SQL 接口導(dǎo)入數(shù)據(jù),Lightning 可以跳過分布式事務(wù)、數(shù)據(jù)唯一性約束檢查、Raft 協(xié)議,將 SQL 文本直接轉(zhuǎn)換為 TiKV 底層的 RocksDB SST file,再將 SST file 注入到 TiKV 集群中。極大地縮短了導(dǎo)數(shù)據(jù)時間,目前內(nèi)部的一個測試場景中,導(dǎo)入單表 1TB 的 SQL 文本耗時 2 小時,我們還在持續(xù)優(yōu)化這個工具,盡可能縮短這個時間。
性能這里把性能放在了最后,并不是說它是不重要的部分,相反它是最重要的部分之一。大家可以看我們的文檔,每次發(fā)布新版本都會給出性能改進(jìn)的對比結(jié)果,大多數(shù)用戶在接觸 TiDB 之后也會關(guān)心性能指標(biāo)。
我們現(xiàn)在主要通過 OLTP(比如 Sysbench, TPC-C)以及 OLAP (TPC-H)兩套測試體系來評估 TiDB 的性能,并且在同時針對這兩類場景做性能優(yōu)化。這里有非常多的事情可以做。我們希望能把性能提升到極致。
除了寫代碼,你能做的還有這些……作為一個硬核的代碼「團(tuán)伙」,僅僅「舉頭望明月,低頭寫代碼」是無法滿足我們內(nèi)心的技術(shù)騷動的,我們希望把 TiDB 這個項目和整個開源世界連接起來,所以希望你能和我們一起一些事情讓更多的人了解 TiDB:
《TiDB 源碼閱讀》是面向開發(fā)者的系列文章,幫助 Contributors 了解 TiDB 的實現(xiàn)細(xì)節(jié),讓數(shù)據(jù)庫內(nèi)核這個東西在大家眼中不再神秘,希望越來越多的人能參與到 TiDB 這個項目中來,做一個世界頂級的開源數(shù)據(jù)庫項目。
Talent Plan?是面向在校學(xué)生準(zhǔn)備的數(shù)據(jù)庫開發(fā)課程,希望通過 3~4 周的導(dǎo)師帶學(xué),讓同學(xué)們能夠了解如何做一個分布式數(shù)據(jù)庫,能夠基于 TiDB 開發(fā)新的功能,做一些和數(shù)據(jù)庫研究相關(guān)的實驗項目。目前已經(jīng)有多名同學(xué)將自己的畢業(yè)設(shè)計題目選為 TiDB 相關(guān)的事情。
除了「寫文章,做導(dǎo)師」,我們也非常鼓勵大家走出公司做分享,各位可能已經(jīng)在國內(nèi)各大技術(shù)會議上看到了 PingCAPer 的身影,其實這只是冰山一角。我們在各地都有定期舉辦的 Infra Meetup,有對外公開的技術(shù)方案評審和 Paper Reading,有高校實驗室交流,有海外會議布道。在過去的一年中,我們舉辦或參加了八十多場技術(shù)/學(xué)術(shù)交流活動,把 TiDB 的旗幟插到了世界各地。
我們希望大家能全面發(fā)展,這些活動的存在也是想給大家足夠的舞臺來施展才華,作為拜仁球迷,我想說:“在 PingCAP 你甚至可以寫代碼?!?/strong>
Team 成員有話說“這里有足夠多的技術(shù)挑戰(zhàn)讓你學(xué)習(xí)成長,自由的環(huán)境讓你可以做你喜歡的工作內(nèi)容,只要有能力,隨時可以給任一項目提 PR 或 Review 代碼, CEO 也可能隨時 Review 你代碼。”
-- From July2993
“在 TiDB 團(tuán)隊有很多聰明且踏實的同事,讓我有一種回到學(xué)校大家一起努力成長的感覺;工作內(nèi)容很豐富,既有富有挑戰(zhàn)的復(fù)雜邏輯,也有具體到底層的工程細(xì)節(jié),還有需要時刻關(guān)注的學(xué)術(shù)界最新研究成果,有時還需要承擔(dān)不同的角色,比如作為一個好的演講人將一場報告有條理地呈現(xiàn)出去,或者快速地幫助客戶解決線上遇到的問題,總的來說,對我而言,這是一份充滿可能性的工作?!?/p>
-- From Eurekaka
“在這里可以參與到一個完整的開源項目。寫代碼時必須特別小心,任何失誤都可能造成重大的影響,一個細(xì)微的行為變化都可能對現(xiàn)有的用戶造成困擾。
除了寫代碼之外,在這里也學(xué)會了如何推進(jìn)一項工作,會涉及到討論,測試,review,文檔等方方面面。也會因為這樣的環(huán)境,使人整體得到很大的提升。尤其是做事情的方式,思考問題的角度。”
-- From Tiancaiamao
“在這里我感受最深刻的是:無論與誰有意見分歧,大家都單純地以將事情做得更優(yōu)為出發(fā)點,發(fā)表各自觀點,會有用代碼論證的,也會有拿測試數(shù)據(jù)佐證的。大家在未定方案前‘針鋒相對’,定方案后則又樂呵地討論去哪吃飯。我非常幸運能和一群志同道合的小伙伴在貴司做著自己喜歡的事?!?/p>
-- From Zimulala
我們的期望 興趣+野心希望你熱愛技術(shù),對開源、基礎(chǔ)架構(gòu)有興趣,看到這里面的巨大技術(shù)挑戰(zhàn)以及廣闊前景,希望能為業(yè)界帶來激動人心的解決方案。同時希望你是一個能自我驅(qū)動的人,且能帶動周邊的人一起來推進(jìn),這一點很重要。
技術(shù)如果你技術(shù)精湛,有數(shù)據(jù)庫/分布式系統(tǒng)/服務(wù)器端開發(fā)的經(jīng)驗,對代碼質(zhì)量有追求,那就來一起展示技術(shù)給大家看。
溝通順暢 && 思維敏捷 && 條理清晰目前我們已經(jīng)有一百多名同事,分散在全球 6 個 Office 或者是遠(yuǎn)程辦公。所以如何高效的溝通,如何能跟上其他同事的思維節(jié)奏非常重要。
我們可以提供什么我經(jīng)??吹揭恍┱衅纲N中寫到彈性工作制、不打卡、水果零食健身這種,這些我司都有,不過我認(rèn)為都不值一提,我想這些并不是優(yōu)秀的你所追求的。我們能為你提供下面這些東西:
一群聰明優(yōu)秀的同事聰明人總是想和聰明人一起工作。相比大廠,我們一直追求小而精的團(tuán)隊,人員的平均水平會更高,我們招聘的時候非常謹(jǐn)慎,保障團(tuán)隊整體水平不斷提高。
一個難且有趣的目標(biāo)很多程序員對技術(shù)有一定的追求,希望能在技術(shù)上有一定的成就,剛好我們這個事情是非常難且非常有趣,足夠你來施展,一定有你抓破腦袋也解決不了的問題。
一個快速成長的環(huán)境我們希望每個人都能獨當(dāng)一面,即使是校招進(jìn)來的新同學(xué),我們也期望你能在一年的時間內(nèi)飛速成長。我們會有老鳥手把手幫你 Review 代碼,有各種技術(shù)文檔、Talk、Meetup 幫助你獲取新知識以及建立自己在技術(shù)圈的影響力。
一個站著掙錢的機(jī)會作為一篇招聘貼,不提錢會傷感情。我們的薪酬還是很有競爭力的,具體的可以和我司崔老板談,他那里彈藥充足。不過我覺得最值錢的還是現(xiàn)在的期權(quán),已經(jīng)有不少朋友問過我能不能私下買一些。只要我們能一起把這個技術(shù)產(chǎn)品做好,掙到錢是自然而然的事情。
加入我們吧!我們認(rèn)為優(yōu)秀的工程師或多或少有以下共同特質(zhì):
A Quick Learner
An Earnest Curiosity
Faith in Open Source
Self-driven? ??
Get Things Done
如果你符合以上特質(zhì),歡迎進(jìn)入招聘頁面查看目前開放的工作機(jī)會:
https://www.pingcap.com/recruit-cn/join/#positions
簡歷投遞通道:[email protected]
實習(xí)生:公司的各項福利和學(xué)習(xí)資源對實習(xí)生全面開放,更重要的是實習(xí)生還未畢業(yè)就有機(jī)會接觸工業(yè)級項目,而且實習(xí)期間表現(xiàn)優(yōu)異者將有機(jī)會獲得校招綠色通道特權(quán)。如果小伙伴們時間不夠充裕,也可以先從社區(qū) Contributor 做起,或許下一期?Talent Plan?的主角就是你!
伯樂推薦:如果你身邊有符合以上要求的小伙伴,也可以找我們聊一聊,推薦成功就有機(jī)會獲得伯樂推薦獎勵(iPad、iPhone、MacBook Pro 等等)。伯樂推薦郵件格式:[伯樂推薦] 候選人姓名-職位名稱-推薦人姓名-推薦人手機(jī)號。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/17928.html
摘要:所以很多對不太了解的小伙伴看完我們的招聘頁面,可能會覺得那些五沒花聽八說門過的研發(fā)類職位是特別神秘的存在吧招聘頁面上一小部分神秘部隊那么這些神秘團(tuán)隊到底是做什么的下面就簡單的介紹一下這些研發(fā)團(tuán)隊是做什么的吧。 過去一年在 PingCAP 全力奔跑的同時,越來越多的小伙伴開始關(guān)注我們、了解我們,我們的團(tuán)隊也愈加龐大,我們也期待更多對我們感興趣的小伙伴加入我們,跟我們一起做點有意義的事情。...
摘要:不過這并不是團(tuán)隊工作的全部。另外,系統(tǒng)面臨的另一個挑戰(zhàn)是資源隔離。最上層仍然是的計算層,而下層則是類似的存儲協(xié)處理器的架構(gòu)。另一個計劃中但是仍然沒有開工的事情是,我們希望在協(xié)處理器層加入功能,讓數(shù)據(jù)可以通過網(wǎng)絡(luò)進(jìn)行模型的重分布操作。 前面兩期我們介紹了?TiDB 團(tuán)隊和?TiKV 團(tuán)隊,頗受好評,今天我司數(shù)據(jù)庫專家馬曉宇老師將為大家介紹 PingCAP 最具活力的團(tuán)隊——?AP(Ana...
閱讀 786·2023-04-25 16:55
閱讀 2824·2021-10-11 10:59
閱讀 2091·2021-09-09 11:38
閱讀 1810·2021-09-03 10:40
閱讀 1500·2019-08-30 15:52
閱讀 1137·2019-08-30 15:52
閱讀 970·2019-08-29 15:33
閱讀 3507·2019-08-29 11:26