2018已經(jīng)快過半,想總結(jié)一下梧躺,自己有哪些提高似谁。
先把2017年補(bǔ)充一下:2017年年底,我之前做的東西被分配給其它組去做掠哥,我只剩下維護(hù)老流程的工作巩踏,無聊之下,想了想當(dāng)前爬蟲系統(tǒng)可改進(jìn)的痛點(diǎn)(其實(shí)就是url輸入kafka续搀,爬蟲從kafka消費(fèi)塞琼,再把頁面輸出到kafka,而不是本地保存禁舷,再發(fā)往consumer彪杉,consumer這東西可以水平擴(kuò)展毅往,但是每次水平擴(kuò)展都需要找運(yùn)維同學(xué)手動(dòng)改爬蟲配置,有些惡心派近;并且攀唯,抓不同的頁面,有不同的批次概念渴丸,每個(gè)批次對(duì)應(yīng)一組consumer侯嘀,線上批次非常多了,導(dǎo)致consumer也散布的到處都是谱轨,不好統(tǒng)一管理)戒幔。
我隨后想到,kafka-->爬蟲-->kafka土童,這種比較通用的結(jié)構(gòu)估計(jì)早有人實(shí)現(xiàn)了诗茎,畢竟不是很難想到的結(jié)構(gòu)。隨后查了一下娜扇,發(fā)現(xiàn)github上果然后類似項(xiàng)目错沃。隨后開始了我走向分布式學(xué)習(xí)的路程。
在github上的項(xiàng)目雀瓢,是kafka-->redis-->爬蟲-->kafka的結(jié)構(gòu)枢析,之所以用redis,是因?yàn)閞edis有優(yōu)先隊(duì)列刃麸,并且很方便的為每個(gè)host設(shè)置一個(gè)隊(duì)列醒叁。明顯,單機(jī)的redis內(nèi)存容易成瓶頸泊业,于是我查看了redis-cluster把沼,數(shù)據(jù)分片、主從備份吁伺、第一次對(duì)分布式系統(tǒng)有了模糊的認(rèn)識(shí)饮睬。
后來老大看我周報(bào)寫的簡(jiǎn)單,詢問我情況篮奄,我告訴他我現(xiàn)在沒什么事情做捆愁,并把我對(duì)爬蟲改進(jìn)的想法一并告訴他,起初他也挺感興趣窟却,但他和我思維不一致的地方在于昼丑,他的底線是不修改線上大規(guī)模爬蟲(可能他認(rèn)為這套爬蟲已經(jīng)用了很多年,不到迫不得已必須修改的境況)夸赫,沒有做這個(gè)改進(jìn)菩帝。也讓我對(duì)我們組徹底失去信心,2018年初我出去面試了。
看過redis-cluster后呼奢,又發(fā)現(xiàn)了ssdb宜雀,一個(gè)基于leveldb的,支持redis協(xié)議的磁盤數(shù)據(jù)庫控妻,還有類似的ledisdb州袒,等等。很多kv都是在leveldb基礎(chǔ)上的改進(jìn)和封裝弓候。
2018年
2018年過完年郎哭,我去面試了一家中等規(guī)模的公司,結(jié)果慘不忍睹菇存,項(xiàng)目一句話沒問(人家不感興趣)夸研,對(duì)照著掌握的技術(shù),問了底層原理依鸥,比如結(jié)合yarn的資源管理亥至,描述spark的啟動(dòng)流程;你會(huì)如何給分布式redis做分片贱迟,結(jié)合kafka的parition主從備份姐扮,大概描述一下paxos過程等,由于我基礎(chǔ)掌握的太差了衣吠,有些問題沒有系統(tǒng)茶敏,強(qiáng)化的學(xué)習(xí),答得非常糟糕缚俏,面試后惊搏,我決定要把基礎(chǔ)好好補(bǔ)一補(bǔ)。
回來后忧换,先查了一下yarn是做什么的恬惯;又無意接觸到了一本導(dǎo)論性質(zhì)的大數(shù)據(jù)-分布式系統(tǒng)的書,網(wǎng)上評(píng)價(jià)很高亚茬,于是決定把這本書啃下來酪耳。這本書一上來就介紹基礎(chǔ)的存儲(chǔ)結(jié)構(gòu),主要有LSM和B-Tree刹缝,不得不說葡兑,LSM介紹的很淺顯易懂,從一個(gè)最簡(jiǎn)單的log追加型kv赞草,一步步優(yōu)化到LSM結(jié)構(gòu),優(yōu)化過程自然不唐突吆鹤。比網(wǎng)上那些博客一上來就貼一張LSM結(jié)構(gòu)圖厨疙,容易理解的多。B-Tree由于主要用于關(guān)系數(shù)據(jù)庫疑务,就沒有看沾凄。 (2018年下半年梗醇,抽空把B-tree也了解一下,LSM論文也要仔細(xì)看一遍撒蟀,要做到能寫一個(gè)LSM的輪子的地步叙谨,才算基本掌握)
。