本文目錄 [-點(diǎn)此收起]

1、明確技術(shù)與業(yè)務(wù)的關(guān)系

(1)知識和發(fā)明來自實(shí)踐和生產(chǎn)的實(shí)際需要,OSI的7層模型再美、再學(xué)院化也沒有干過TCP/IP;
(2)切莫強(qiáng)求技術(shù)驅(qū)動(dòng),技術(shù)職責(zé)第一要?jiǎng)?wù)是做好深度服務(wù)業(yè)務(wù);
(3)數(shù)據(jù)產(chǎn)品不同于一般業(yè)務(wù)系統(tǒng)。隔行如隔山,跨部門項(xiàng)目往往對雙方團(tuán)隊(duì)的時(shí)間管理、利益妥協(xié)、溝通協(xié)作和交付提出了很高很難的要求,數(shù)據(jù)產(chǎn)品要有價(jià)值,必須獲取足量、高質(zhì)的數(shù)據(jù),建立跨部門、跨業(yè)務(wù)的統(tǒng)一數(shù)據(jù)視圖前景美妙但步履維艱,保持持久熱情、對數(shù)據(jù)產(chǎn)品的價(jià)值心里有數(shù)并盡可能地獲取資源上的支持,是技術(shù)之外的重要話題。

2、價(jià)值導(dǎo)向,數(shù)據(jù)平臺架構(gòu)的策略、哲學(xué)與全局意識很重要

(1)成本意識——只用合適的。深入理解業(yè)務(wù)和數(shù)據(jù)規(guī)模,不走冤枉路,不用牛刀去殺機(jī),牛刀的維護(hù)成本很高很高;不輕視MySQL、不高估Hadoop,不盲目崇拜Storm和Samza的流計(jì)算;
(2)專業(yè)意識——不過分給離線計(jì)算強(qiáng)調(diào)效率,不過分給準(zhǔn)實(shí)時(shí)計(jì)算強(qiáng)調(diào)規(guī)模(優(yōu)勢火力學(xué)說);
(3)產(chǎn)品意識——不是最牛逼的技術(shù)就是最牛逼的產(chǎn)品(比如企查查,碼農(nóng)要重視產(chǎn)品、市場及領(lǐng)域知識);
(4)機(jī)動(dòng)意識——靈活處理業(yè)務(wù)場景的技術(shù)需求??臻g換時(shí)間(緩存)、時(shí)間換空間(大規(guī)模數(shù)據(jù)的分布式存儲、比如HDFS和MongoDB的Sharding);
(5)歷史意識——不是所有的技術(shù)債都要大肆批評,為公司歷史業(yè)務(wù)作出貢獻(xiàn)的代碼應(yīng)該保持尊敬,其中的一些問題更應(yīng)該歷史地看待,自己做得不一定比前人更好。計(jì)算跑向數(shù)據(jù)——比如傳統(tǒng)的存儲過程,免去了數(shù)據(jù)傳輸性能好,但擴(kuò)展性很差,跨數(shù)據(jù)庫的DB-Link技術(shù)可以看做分布式計(jì)算的早期手段;數(shù)據(jù)跑向計(jì)算——如Hadoop的MR,有不可忽視的數(shù)據(jù)運(yùn)輸代價(jià),但計(jì)算和業(yè)務(wù)邏輯處理更加自由靈活;
(6)戰(zhàn)略意識——正確認(rèn)識數(shù)據(jù)產(chǎn)品的特點(diǎn):周期長、開發(fā)難、低反饋、弱可控,客戶與業(yè)務(wù)需求總是迫切的。將冗長切分,局部和階段性反饋并測試尤為重要,重視一點(diǎn)可視化往往有奇效。沒有客戶的數(shù)據(jù)產(chǎn)品沒有價(jià)值,從立項(xiàng)開始,就要有生存、競爭、運(yùn)營的綜合考慮。讓現(xiàn)有數(shù)據(jù)產(chǎn)生價(jià)值是數(shù)據(jù)團(tuán)隊(duì)的第一使命,而逐步產(chǎn)生價(jià)值、釋放數(shù)據(jù)活力、融通部門利益則是一種全局運(yùn)營意識。

3、分而治之

(測試大數(shù)據(jù)處理手段有效與否的基本方法就是去求個(gè)和、排個(gè)序、分個(gè)組。如同1+1=2,這是基本所有大數(shù)據(jù)處理場景的最小化抽象。那么就會體會到——分開了求和排序難,不分卻治不了大數(shù)據(jù))

4、存儲與索引分離、冷熱分離、讀寫分離、二八原理、分級實(shí)施

(1)讀寫混合的通??梢陨纤輼I(yè)務(wù)進(jìn)行梳理,找出重點(diǎn)、降級實(shí)施;
(2)有時(shí)候分布式算法想破天,不如將服務(wù)器內(nèi)存升級到512G來得簡單和高效,分布式的同時(shí)不要忘了集中式的簡單帶來的收益;
(3)存儲與索引在一起,既有傳統(tǒng)關(guān)系型數(shù)據(jù)庫作為代表,也有華為為HBase拓展本地二級索引的例子,但通常分離之后可以同時(shí)享受專業(yè)的分布式存儲和專業(yè)的索引技術(shù)帶來的雙重好處,缺點(diǎn)是可能需要一個(gè)觸發(fā)器或協(xié)程,但是同步與計(jì)算的地位是同等重要的,可以從Storm的ACK機(jī)制及Kafka的Log機(jī)制獲取處理此類嚴(yán)峻問題的靈感;這不僅僅是ETL和微服務(wù)的需求,也是一致性的挑戰(zhàn)。

5、專業(yè)的干專業(yè)的事、學(xué)習(xí)但不重復(fù)造輪子

(1)每個(gè)框架都有自己的原語、有限的服務(wù)能力和缺點(diǎn),這是極為正常的,整合和有限改造是普遍存在的;
(2)克服追求技術(shù)唯美的碼農(nóng)心理障礙,不輕信自己可以做得比別人更好,以可控交付和快速反饋為首要原則;
(3)項(xiàng)目的死亡通常是因?yàn)楫a(chǎn)品需求和碼農(nóng)的認(rèn)知圖像不一致造成,這需要產(chǎn)品了解一定技術(shù)特點(diǎn),更需要技術(shù)了解產(chǎn)品的真正目的;
(4)輕視產(chǎn)品或者領(lǐng)域?qū)<?,是技術(shù)的狹隘而不是別人的無知。

6、分布式鎖,真的很難

(1)鎖與分布式事務(wù)永遠(yuǎn)是前沿技術(shù);
(2)即使是電話通訊這種鏈路型的也會中斷,何況計(jì)算機(jī)網(wǎng)絡(luò)還是分包為基礎(chǔ);
(3)腦裂是自然的,我們要做的是局部可控、提前預(yù)案、降低損失、快速維護(hù);
(4)同步并非最差,異步并非最佳,任何優(yōu)勢背后都有先天劣勢;
(5)高性能和簡約架構(gòu)是一對矛盾,吸氣量太大還容易爆缸,但一旦認(rèn)識到代價(jià)是正常和必不可缺之后,往往可以柳暗花明;
(6)不死磕,compromise是工程意義上的折衷而不是碼農(nóng)心理上的妥協(xié)。

7、推和拉(Push&Pull)

(1)都是常用手段,難點(diǎn)都在于狀態(tài)同步與可靠交付,相對來講拉更簡單一些,但為了一致性和狀態(tài)的到達(dá)往往會浪費(fèi)計(jì)算資源
(2)有時(shí)候耗費(fèi)某些資源換取更簡單平坦的架構(gòu),收獲更低的維護(hù)代價(jià)比死磕高性能收益更大。比如全雙工通訊很美,但WebSocket技術(shù)對Socket、進(jìn)程、內(nèi)存資源的占用讓W(xué)eb服務(wù)更加復(fù)雜;
(3)函數(shù)計(jì)算的優(yōu)點(diǎn)之一就是不可變的數(shù)據(jù)結(jié)構(gòu),狀態(tài)的不可變意味著失敗的計(jì)算環(huán)節(jié)可以被重放,看似浪費(fèi)資源,但實(shí)際是用簡單的變換迭代換取思維上的簡潔性,讓業(yè)務(wù)邏輯與計(jì)算環(huán)節(jié)更明顯地浮現(xiàn)出來,這就是更有價(jià)值的收益。

8、可靠性與高性能是一對矛盾

P2P還是Master-Slave,要視業(yè)務(wù)特點(diǎn)決定,P2P更適合高性能、硬實(shí)時(shí)系統(tǒng),MS架構(gòu)相對簡單、易于理解和操作、但有著主節(jié)點(diǎn)宕機(jī)導(dǎo)致服務(wù)可靠性下降的危險(xiǎn)(Hadoop為此升級了雙NameNode節(jié)點(diǎn)、MySQL生態(tài)也有雙主節(jié)點(diǎn)的成熟策略)。

9、重視函數(shù)式思想,不死磕面向?qū)ο?,生態(tài)很關(guān)鍵

(1)并行處理的難點(diǎn)之一就是狀態(tài)的改變、到達(dá)、回退與追蹤的復(fù)雜,這一點(diǎn)不僅在框架和代碼級別,在流服務(wù)體系中也很重要。Storm采用Clojure作為編程語言的目的除了這種語言很酷之外,更重要的是其對不可變的數(shù)據(jù)結(jié)構(gòu)和函數(shù)計(jì)算的支持很到位;
(2)Spark牛逼的地方就是深入貫徹函數(shù)計(jì)算,并提供了完善的RDD操作原語與多語言支持,對關(guān)系型數(shù)據(jù)庫、HDFS等也有很好的支持,特色鮮明而且瞄準(zhǔn)Hadoop生態(tài),它的戰(zhàn)略眼光及架構(gòu)值得反復(fù)學(xué)習(xí);
HyperTable瞄準(zhǔn)了HBase的某些性能瓶頸以此來打造同樣的列式數(shù)據(jù)庫,但在市場上它失敗了。C++實(shí)現(xiàn)底層帶來了高性能的同時(shí)也帶來了生態(tài)疏離。

【版權(quán)所有@foreach_break】 【博客地址 http://www.cnblogs.com/foreach-break】 可以轉(zhuǎn)載,但必須注明出處并保持博客超鏈接

http://www.cnblogs.com/foreach-break/p/key_points_of_data_prodution.html