最近買的技術(shù)書比較多,一本還沒看完又來一本,前端、后端都涉足一些,可惜都不深,這點(diǎn)需要改進(jìn),持續(xù)一段時間思考一個方面的問題這樣的效果應(yīng)該會好點(diǎn)。具體這本書已經(jīng)忘了當(dāng)時從哪兒看到的介紹,發(fā)現(xiàn)一堆業(yè)界名人的推薦,到豆瓣看了看目錄和評論,當(dāng)然三百來頁也是個重要指標(biāo)(估計一到兩周也就看完了),于是就下單買了。閑話不扯,談?wù)勥@本書的內(nèi)容和我的感想吧。
全書整體脈絡(luò)很清楚,先介紹了分布式系統(tǒng),接著以大型網(wǎng)站及架構(gòu)演進(jìn)過程中不同時段遇到的挑戰(zhàn)引出中間件的話題,之后簡單介紹各類中間件中用到的通用技術(shù)(如垃圾回收、內(nèi)存布局、反射、網(wǎng)絡(luò)通信),隨之以大型網(wǎng)站架構(gòu)中各層如服務(wù)層、數(shù)據(jù)訪問層、消息層、軟負(fù)載等分章論述其中遇到的挑戰(zhàn)和應(yīng)對策略。
整本書翻完之后首先的感覺是作者已經(jīng)建構(gòu)了關(guān)于這個領(lǐng)域成體系的知識,能夠僅通過文字加最簡單的框圖將“架構(gòu)”這種話題娓娓道來內(nèi)功應(yīng)該不淺(好吧,此類文章夸到此時該批評出場了)。像豆瓣里的一些人評論的那樣,很多東西感覺講的不深入,話題起了個頭,撩起興趣來了,咔,結(jié)束了。讓看官們把脫下的褲子就這么草草穿上當(dāng)然會有很多不甘心,可以理解。此現(xiàn)象我覺得是針對的作者群事先沒說清,如果你是Java領(lǐng)域的初學(xué)者,或者有過幾年開發(fā)經(jīng)驗(yàn),但常接觸的只是java.lang.util下面的某幾個類,知道個ssh,參與了幾個MIS系統(tǒng),開發(fā)的功能也就是些增刪改查,看起來自然吃力。此前只知道how,很少想why,遇到問題只知道google甚至只知道baidu,一頁一頁翻過去,用別人類似場景中解決方案逐個試錯,試出一個有效的來就覺得大功告成。遇事沒有由點(diǎn)及線再及面的深入思考、理解的習(xí)慣,書中的場景自然陌生,問題來了卻只給了個文字性的解決方案描述當(dāng)然不適應(yīng),但一本三百多頁的書要把架構(gòu)的細(xì)節(jié)面面俱到講清楚可能嗎?“talk is cheap show me the code”,阿里系在java領(lǐng)域開源了那么多東西,直接去看人家的源碼吧。
建議曾經(jīng)接觸過或思考過分布式應(yīng)用的Java工程師看看,畢竟這樣的人能夠站到相似的背景線上,與作者在書中的對話更容易一些。但淘寶面對的問題實(shí)際上已經(jīng)不是大量開源組件所能直接解決的,所以才需要他們深入源碼細(xì)節(jié)、消化之后再創(chuàng)造。比如一個信息路由,我所接觸的只是需要分機(jī)器路由就OK了,但他們甚至需要考慮到機(jī)房、機(jī)架這種粒度。畢竟這本書里面涉及了眾多概念:阿姆達(dá)爾定律、BIO NIO AIO、應(yīng)用服務(wù)化 服務(wù)治理、消息中間件、數(shù)據(jù)垂直拆分水平拆分、CAP BASE Paxos、讀寫分離(Master Slave)。很多地方是順著一條主線的思路講的時候引出來的,所以只做簡單介紹,但于我來說如果此前陌生就會記下來,另外花時間了解。
一句話,別指望這是一本架構(gòu)方面的大全。能夠給出的是別人面對問題、解決問題的思路,剩下的還是交由你自己解決~