成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

想玩轉(zhuǎn)分布式存儲(chǔ)引擎?快來加入 TiKV 團(tuán)隊(duì)吧 | PingCAP 招聘季

susheng / 2356人閱讀

摘要:負(fù)責(zé)構(gòu)建分布式壓力測(cè)試框架,穩(wěn)定性測(cè)試框架。但同時(shí),這些獨(dú)立的模塊最終會(huì)形成這一個(gè)整體。分布式一致性算法,現(xiàn)在無非就是兩類,和,我們選擇了。對(duì)各個(gè)模塊進(jìn)行詳細(xì)的測(cè)試,使用等對(duì)系統(tǒng)進(jìn)行注入測(cè)試。設(shè)計(jì)并實(shí)現(xiàn)性能回歸測(cè)試平臺(tái)。

上周我們推送了?TiDB 團(tuán)隊(duì)職位解讀文章,當(dāng)天就有很多簡歷砸來,我們深深感受到了小伙伴們的熱情~ 趁熱打鐵,今天我司首席架構(gòu)師唐劉老師將帶大家了解一下傳說中「面試通過率最低、難度最高」的研發(fā)團(tuán)隊(duì)——TiKV 團(tuán)隊(duì)。
Team 簡介

我們 Team 主要負(fù)責(zé) TiKV 的研發(fā)工作,下圖是我們產(chǎn)品的架構(gòu)圖,大家可以看到,無論是 TiDB 還是 TiSpark,都是從 TiKV 存取數(shù)據(jù)的,所以我們一定要保證 TiKV 的穩(wěn)定和高效。

在我們官網(wǎng)招聘頁面,TiKV 研發(fā)工程師的崗位職責(zé)就兩個(gè):

負(fù)責(zé)分布式數(shù)據(jù)庫 TiKV 相關(guān)的設(shè)計(jì),開發(fā)。

負(fù)責(zé)構(gòu)建分布式壓力測(cè)試框架,穩(wěn)定性測(cè)試框架。

是不是特別簡單?說實(shí)話,我們也想好好寫清楚,但無奈 TiKV 這邊要做的事情實(shí)在是太多,所以這里我會(huì)詳細(xì)介紹一下。

TiKV 研發(fā)工程師職位信息:

https://pingcap.com/recruit-cn/engineering/tikv-engineer/

TiKV 簡介

TiKV 是一個(gè)支持事務(wù)的、數(shù)據(jù)強(qiáng)一致的分布式 Key-Value 數(shù)據(jù)庫。也許有人會(huì)說,造一個(gè) Key-Value 數(shù)據(jù)庫有啥難的,我不這么認(rèn)為,因?yàn)樵煲粋€(gè)工業(yè)級(jí)、通用的、有超高性能的 Key-Value,真的是一件很難的事情。而且這個(gè) Key-Value 數(shù)據(jù)庫上面還加了很多限定詞來修飾,要支持這些特性就更難了。下面我會(huì)一個(gè)一個(gè)的自底向上來說明 TiKV 是如何實(shí)現(xiàn)這些特性的。

TiKV 采用分層架構(gòu)設(shè)計(jì),這樣的好處在于各個(gè)模塊特性都是獨(dú)立解耦合的,大家可以專注于某一層的研究和開發(fā)。但同時(shí),這些獨(dú)立的模塊最終會(huì)形成 TiKV 這一個(gè)整體。所以我們內(nèi)部還是會(huì)希望大家不只局限于某一個(gè)單一模塊,而是要盡可能地精通多個(gè)模塊,如果你是一個(gè)典型的自我驅(qū)動(dòng)力很強(qiáng)的人,那么你在 TiKV 團(tuán)隊(duì)就能快速成長起來!

Storage

作為一個(gè) Key-Value 存儲(chǔ)系統(tǒng),最底層當(dāng)然是考慮如何去存儲(chǔ) Key-Value 了。在這里,我們并沒有發(fā)揚(yáng)程序員「自己造輪子」這種光榮的優(yōu)良傳統(tǒng),而是直接使用 RocksDB。主要原因就在于 RocksDB 已經(jīng)足夠好,我們短時(shí)間造一個(gè)還真不可能比它強(qiáng)。與其冒風(fēng)險(xiǎn)花很長時(shí)間去弄一個(gè)自己的底層 Key-Value,還不如基于 RocksDB 來更加穩(wěn)妥和保險(xiǎn)。

但我們并不只是單純的使用 RocksDB,在 RocksDB 這邊,我們需要:

源碼級(jí)別的精通 RocksDB。也就是我們?cè)谑褂?RocksDB 的時(shí)候遇到了任何問題,我們都可以幫助 RocksDB Team 去 fix。之前我們已經(jīng)幫 RocksDB Team fix 了幾個(gè)嚴(yán)重的 bug 了。

調(diào)優(yōu) RocksDB。RocksDB 雖然上手簡單,但里面那一堆的參數(shù),你要把它們給折騰好,適配到不同的機(jī)型,也是一個(gè)困難的事情,這塊就不光要求你對(duì) RocksDB 非常熟悉,也需要對(duì)操作系統(tǒng)有很深入的了解。后面,我們的目標(biāo)是能做到自動(dòng)調(diào)優(yōu) RocksDB。

Titan。今年我們已經(jīng)開始給 RocksDB 定制一個(gè)新的 engine,叫做 Titan,這個(gè) engine 主要是用的 KV 分離的思想,將大的 value 從 LSM-Tree 里面移除,減少寫放大。

基于 Intel 下一代硬件 AEP 的 RocksDB 優(yōu)化。硬件一直在以超過我們想象的速度發(fā)展,當(dāng)我們還在糾結(jié)如何優(yōu)化 SSD 的時(shí)候,基于 NVM 的編程已經(jīng)在興起了,但現(xiàn)在很多的 NVM 環(huán)境都是基于模擬器的,而我們手上則有實(shí)際的 Intel AEP 盤。現(xiàn)在,我們正在跟 Intel 合作以及某高校合作,一起在 AEP 上面對(duì) RocksDB 進(jìn)行優(yōu)化。

當(dāng)然,在 storage 層面,我們還要做的更多,現(xiàn)在我們正在做抽象 storage API 的工作,當(dāng)這個(gè)完成之后,TiKV 就能支持不同的存儲(chǔ)引擎,譬如使用 LevelDB,WiredTiger 等等,或者你自己用 Rust 寫一個(gè) pure engine 也可以。但我覺得更令人激動(dòng)的是,我們內(nèi)部正在基于這種方式,讓 TiKV 直接對(duì)接自研的 AP 引擎,這樣我們就能實(shí)現(xiàn)真正意義上面的行列混存,這是一個(gè)非常有挑戰(zhàn)性的工作,歡迎大家加入。

Raft

上面說完了存儲(chǔ)引擎方面的工作,但這些只能解決單個(gè)機(jī)器數(shù)據(jù)存儲(chǔ)的問題,作為一個(gè)分布式系統(tǒng),我們必須要將數(shù)據(jù)復(fù)制到多個(gè)機(jī)器上面,保證數(shù)據(jù)的安全。這里,我們就要使用分布式一致性算法了。分布式一致性算法,現(xiàn)在無非就是兩類,Paxos 和 Raft,我們選擇了 Raft。

Raft 協(xié)議比較簡單。但實(shí)話,如果真的要做一個(gè)工業(yè)級(jí)別高性能的 Raft 實(shí)現(xiàn),難度還是非常大的,我們已經(jīng)做了很多的優(yōu)化,但還有很多工作要做,主要包括:

Joint consensus,安全的成員變更。當(dāng)我們要進(jìn)行集群擴(kuò)容縮容的時(shí)候,采用的是每次變更一個(gè)節(jié)點(diǎn)的做法,但這個(gè)方式在一些情況下會(huì)有 corner case 問題。所以更好的方式就是 Raft 里面提到的 Joint consensus。

Follower snapshot。當(dāng)一個(gè)新節(jié)點(diǎn)加入集群之后,通常都是 Leader 給這個(gè)新的節(jié)點(diǎn)發(fā)送 snapshot,但這樣其實(shí)會(huì)造成 Leader 的壓力比較大(因?yàn)?Leader 同時(shí)要處理客戶端的讀寫請(qǐng)求),所以一種可行的做法就是讓其 follower 給這個(gè)新的節(jié)點(diǎn)發(fā)送 snapshot,等新的節(jié)點(diǎn)接受完了 snapshot,Leader 才會(huì)發(fā)送 logs。

不對(duì)等網(wǎng)絡(luò)環(huán)境的優(yōu)化?,F(xiàn)在我們遇到了很多用戶,都是兩地三中心的架構(gòu),也就是同城有兩個(gè) IDC,而異地有一個(gè) IDC,所以這幾個(gè) IDC 之間網(wǎng)絡(luò)環(huán)境是不對(duì)等的。但原生的 Raft 其實(shí)并沒有考慮如何處理這樣的情況, 我們考慮的做法是給節(jié)點(diǎn)設(shè)置 priority,只有高 priority 的 node 才能發(fā)起選舉?;蛘呖紤]只能投票節(jié)點(diǎn),這些節(jié)點(diǎn)不會(huì)存有實(shí)際的數(shù)據(jù),只有 Raft 的原信息,用來投票。

Learner backup/restore/replication。對(duì)于一個(gè)分布式集群來說,如何高效的對(duì)整個(gè)集群進(jìn)行備份,恢復(fù)以及支持實(shí)時(shí)復(fù)制是一件非常困難的事情,我們后續(xù)準(zhǔn)備通過 Raft Learner 機(jī)制來做這個(gè)事情。通過 Raft 自帶的 snapshot 以及 Log replication 機(jī)制,將數(shù)據(jù)備份到其他地方,譬如 S3,Ceph 等。

Transaction

TiKV 采用 Google Percolator 模型來實(shí)現(xiàn)分布式事務(wù),但現(xiàn)在我們的實(shí)現(xiàn)還有很多可以做的地方,主要如下:

Timestamp 的獲取。一次事務(wù),會(huì)從 PD 獲取兩次時(shí)間戳,雖然獲取時(shí)間戳的速度很快,但畢竟還是有網(wǎng)絡(luò)開銷。我們可以通過一些方式,只從 PD 拿一次時(shí)間戳,也可能會(huì)考慮其他授時(shí)方案。

跟 Raft 整合,延遲 apply。現(xiàn)在一次寫入,會(huì)在 Raft 上面生成兩個(gè) log,第一個(gè) log 包含的是 Prewrite,而第二個(gè)則是 Commit,而我們都會(huì)把這兩個(gè) log apply 到狀態(tài)機(jī),但實(shí)際在處理 Prewrite 的時(shí)候,我們可以延遲 apply,等真正碰到對(duì)應(yīng)的 Commit 再一起處理。

跟引擎的結(jié)合。如何高效的讓事務(wù)跟底層引擎結(jié)合起來,讓事務(wù)處理的更快,也是一個(gè)需要考慮的問題。譬如在 RocksDB 里面如何高效的獲取特定版本的數(shù)據(jù),或者掃描的時(shí)候如何快速的過濾掉不需要的數(shù)據(jù),都是不小的挑戰(zhàn)。

沖突事務(wù)的優(yōu)化?,F(xiàn)在的事務(wù)模型采用樂觀鎖機(jī)制,其實(shí)對(duì)沖突事務(wù)不友好,我們也需要對(duì)其進(jìn)行優(yōu)化。

Coprocessor

Coprocessor 主要是為了支持 TiDB 和 TiSpark 的下推操作,隨著越來越多的下推函數(shù)推到 Coprocessor 去執(zhí)行,Coprocessor 就要做更多的事情了,主要包括:

支持更多的 Push 函數(shù)。這個(gè)其實(shí)就是將 TiDB 和 TiSpark 需要支持的函數(shù)實(shí)現(xiàn)。雖然看起來是一個(gè)辛苦活,但這對(duì)于個(gè)人克服 Rust 語言學(xué)習(xí)上的困難、快速參與 TiKV 開發(fā),幫助都是非常大的。

資源隔離。對(duì)于查詢語句,從 TP 發(fā)上來的和從 AP 發(fā)上來的我們的關(guān)注度是不一樣的。同時(shí)我們也需要保證 AP 的大查詢不能將整個(gè)系統(tǒng)資源給耗盡,影響到 TP 的操作。

查詢的提速。譬如返回更多的 hint 給 TiDB 的優(yōu)化器,用來調(diào)優(yōu)后面的查詢。

特定查詢的優(yōu)化?,F(xiàn)在所有的查詢都是走的統(tǒng)一的框架,生成一個(gè) AST,依次執(zhí)行,但實(shí)際對(duì)于一些特定查詢,譬如 select count(*),我們完全可以將 AST 壓扁,讓其直接跟 engine 交互,得到數(shù)據(jù),快速返回。

向量化支持。這是一個(gè)比較復(fù)雜的工程,涵蓋了一系列優(yōu)化,其核心是以列向量為單位進(jìn)行計(jì)算。向量化通過一次性計(jì)算一批數(shù)據(jù),改進(jìn)了 Cache Locality 并更好地利用流水線,從而極大地提高計(jì)算速度。未來甚至還可以在此基礎(chǔ)上實(shí)現(xiàn)指令級(jí)向量化——SIMD。

調(diào)度

當(dāng)你的集群有幾百臺(tái)機(jī)器,有非常多的數(shù)據(jù)的時(shí)候,調(diào)度的作用就非常明顯了。如果調(diào)度設(shè)計(jì)的不好,很容易導(dǎo)致整個(gè)集群性能的抖動(dòng),甚至把集群搞得完全沒法工作。所以,調(diào)度也是 TiKV 里面非常重要的工作。在 TiKV 里面,我們需要考慮:

不同 workload 下面的調(diào)度。譬如如果出現(xiàn)了熱點(diǎn),調(diào)度器需要快速的檢測(cè)出來,并且將熱點(diǎn)的請(qǐng)求分散到不同的節(jié)點(diǎn),分散壓力。

模擬器。如何驗(yàn)證我們的調(diào)度程序正常工作?唯一的方法就是測(cè)試,但每次測(cè)試都搭建集群,插入非常多的數(shù)據(jù),其實(shí)非常的麻煩,所以我們需要通過模擬器來簡化這些事情。

可視化。除了通過模擬器,另一個(gè)查看調(diào)度是否正常的辦法就是可視化,我們會(huì)將整個(gè)調(diào)度的過程展示出來,通過可視化就能知道集群是否在正常工作。

Performance and Test

上面說了一些重要模塊需要做的工作,對(duì)于 TiKV 來說,還有兩個(gè)非常重要的地方,是我們非常關(guān)注的,就是性能和測(cè)試。這兩塊其實(shí)算是比較通用的,會(huì)涉及到所有的模塊,主要是:

對(duì)各個(gè)模塊進(jìn)行性能測(cè)試,得到各模塊的性能極限,為后面的性能優(yōu)化提供指導(dǎo)。

對(duì)各個(gè)模塊進(jìn)行詳細(xì)的測(cè)試,使用 failpoint 等對(duì)系統(tǒng)進(jìn)行注入測(cè)試。

實(shí)踐 Chaos,對(duì)系統(tǒng)進(jìn)行大規(guī)模長時(shí)間的穩(wěn)定性測(cè)試。

使用 TLA+ 驗(yàn)證系統(tǒng)設(shè)計(jì)的正確性。

設(shè)計(jì)并實(shí)現(xiàn)性能回歸測(cè)試平臺(tái)。任何提交,我們都能非常方便的知道與之前版本的性能對(duì)比,知道這次提交到底在哪些地方影響了性能。

使用 Jepsen 和 Porcupine 等驗(yàn)證系統(tǒng)的線性一致性。

操作系統(tǒng)的調(diào)優(yōu),包括 IO,network 等。

除了寫代碼,你能做的還有這些…… 盡情的用文字來抒發(fā)你的想法

在 TiKV team,我們非常鼓勵(lì)大家將自己做的東西通過文字表達(dá)出來。你可以參與《TiKV 源碼解析系列》文章,讓大家能通過你的文章深入的理解代碼,也可以參與《Deep Dive TiKV 系列》文章,讓大家理解為什么我們要這么設(shè)計(jì)系統(tǒng),它背后的原理到底是什么。

參與 Talent Plan 項(xiàng)目

作為一個(gè)開源項(xiàng)目,我們需要通過自己的努力來回饋開源社區(qū)。我們會(huì)提供 Rust 培訓(xùn)課程,也會(huì)提供分布式系統(tǒng)學(xué)習(xí)課程,讓大家能通過在網(wǎng)上自學(xué)就能用 Rust 來構(gòu)建一個(gè)高可用的分布式項(xiàng)目。

成為布道師

我們非常鼓勵(lì)大家出去布道。你可以參加我們各地 Office 定期舉辦的 Meetup,也可以去知名的公司進(jìn)行技術(shù)交流,我們也會(huì)提供機(jī)會(huì)讓你在國內(nèi)知名的會(huì)議上演講。對(duì)于優(yōu)秀的同學(xué),我們還提供參加國外 Meetup 的機(jī)會(huì)。

了解如何運(yùn)營一個(gè)國際化的開源項(xiàng)目

TiKV 作為 CNCF 的項(xiàng)目,無論在國內(nèi),還是海外,都有很多朋友關(guān)注,并且給我們貢獻(xiàn)代碼。你需要跟眾多的開發(fā)者一起交流協(xié)作,共同完善整個(gè)項(xiàng)目。

Team 成員有話說

“從理論到實(shí)踐,從入門到熟練,TiKV 團(tuán)隊(duì)完善的培養(yǎng)計(jì)劃讓我快速成長。新的挑戰(zhàn)每天都有,新的技能樹每周都能開啟,在這讓我有一種回到學(xué)校的感覺,能和大家一起進(jìn)步,真好!”

—— Overvenus

“在 PingCAP TiKV 團(tuán)隊(duì),你不僅可以和各種大牛甚至語言創(chuàng)始者共同協(xié)作、開發(fā)、學(xué)習(xí)、進(jìn)步,更重要的是,在掌握基礎(chǔ)之后你可以非常自由地選擇自己感興趣的部分來改進(jìn) TiKV 這個(gè)產(chǎn)品。在這個(gè)過程中你可以由自己來設(shè)計(jì)一切并逐步將它打造出來。相信這種自己當(dāng) PM、自己來設(shè)計(jì)、自己來實(shí)現(xiàn)的開發(fā)方式能帶給你全新的體驗(yàn)。”

—— Breeswish

“在這里你可以零距離接觸一個(gè)分布式存儲(chǔ)引擎的所有細(xì)節(jié),并提出自己的改進(jìn)、優(yōu)化建議,快來一起享受寫數(shù)據(jù)庫的浪漫吧!”

—— Hicqu

“這里有很多聰明能干的小伙伴一起成長,有來自世界各地的 Rust 社區(qū)大佬,更有老司機(jī)們指路護(hù)航。工作即富有挑戰(zhàn)又自由有趣,越來越多的深水區(qū)等待你的挖掘,快來打造你理想中的數(shù)據(jù)庫吧!”

—— Nolouch

我們的要求

最后來說說要求吧,畢竟招人就像是相親,總得有個(gè)門檻的。

抗壓能力

公司目前還處在創(chuàng)業(yè)階段,壓力是不可避免的,而且現(xiàn)在我們用戶特多(尤其是互聯(lián)網(wǎng)頭部用戶),這就要求大家必須具備一定的抗壓能力。

知識(shí)背景

需要有分布式開發(fā)經(jīng)驗(yàn),至少 CAP,Raft 這些基礎(chǔ)概念是需要了解的。當(dāng)然,如果你有調(diào)度系統(tǒng)的開發(fā)經(jīng)驗(yàn),折騰過 Kubernetes,Mesos 等東西,那就更好了。

語言方面我們主要會(huì)使用 Go 和 Rust

如果沒有這兩門語言的開發(fā)經(jīng)驗(yàn),有 C、Python 相關(guān)經(jīng)驗(yàn)也沒問題。當(dāng)然,Rust 可能對(duì)一些同學(xué)是一個(gè)坎,就看你能不能克服了,畢竟這門語言實(shí)在太難上手了。

當(dāng)然,我們也非常歡迎實(shí)習(xí)生。對(duì)于想來實(shí)習(xí)的同學(xué),你只要覺得自己主動(dòng)性強(qiáng),肯學(xué)習(xí),能寫代碼就可以了。我們有時(shí)候也直接會(huì)讓實(shí)習(xí)生去解決用戶問題,雖然會(huì)很有挑戰(zhà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ī)會(huì):

https://www.pingcap.com/recruit-cn/join/#positions

簡歷投遞通道:[email protected]

實(shí)習(xí)生:公司的各項(xiàng)福利和學(xué)習(xí)資源對(duì)實(shí)習(xí)生全面開放,更重要的是實(shí)習(xí)生還未畢業(yè)就有機(jī)會(huì)接觸工業(yè)級(jí)項(xiàng)目,而且實(shí)習(xí)期間表現(xiàn)優(yōu)異者將有機(jī)會(huì)獲得校招綠色通道特權(quán)。如果小伙伴們時(shí)間不夠充裕,也可以先從社區(qū) Contributor 做起,或許下一期?Talent Plan?的主角就是你!

伯樂推薦:如果你身邊有符合以上要求的小伙伴,也可以找我們聊一聊,推薦成功就有機(jī)會(huì)獲得伯樂推薦獎(jiǎng)勵(lì)(iPad、iPhone、MacBook Pro 等等)。伯樂推薦郵件格式:[伯樂推薦] 候選人姓名-職位名稱-推薦人姓名-推薦人手機(jī)號(hào)。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/17945.html

相關(guān)文章

  • 這些「神秘」團(tuán)隊(duì)到底是做什么的?| PingCAP 招聘

    摘要:所以很多對(duì)不太了解的小伙伴看完我們的招聘頁面,可能會(huì)覺得那些五沒花聽八說門過的研發(fā)類職位是特別神秘的存在吧招聘頁面上一小部分神秘部隊(duì)那么這些神秘團(tuán)隊(duì)到底是做什么的下面就簡單的介紹一下這些研發(fā)團(tuán)隊(duì)是做什么的吧。 過去一年在 PingCAP 全力奔跑的同時(shí),越來越多的小伙伴開始關(guān)注我們、了解我們,我們的團(tuán)隊(duì)也愈加龐大,我們也期待更多對(duì)我們感興趣的小伙伴加入我們,跟我們一起做點(diǎn)有意義的事情。...

    Kosmos 評(píng)論0 收藏0
  • TiFlash & TiSpark?那都是 AP 團(tuán)隊(duì)開的坑 ! | PingCAP 招聘

    摘要:不過這并不是團(tuán)隊(duì)工作的全部。另外,系統(tǒng)面臨的另一個(gè)挑戰(zhàn)是資源隔離。最上層仍然是的計(jì)算層,而下層則是類似的存儲(chǔ)協(xié)處理器的架構(gòu)。另一個(gè)計(jì)劃中但是仍然沒有開工的事情是,我們希望在協(xié)處理器層加入功能,讓數(shù)據(jù)可以通過網(wǎng)絡(luò)進(jìn)行模型的重分布操作。 前面兩期我們介紹了?TiDB 團(tuán)隊(duì)和?TiKV 團(tuán)隊(duì),頗受好評(píng),今天我司數(shù)據(jù)庫專家馬曉宇老師將為大家介紹 PingCAP 最具活力的團(tuán)隊(duì)——?AP(Ana...

    eternalshallow 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<