從程序員到架構(gòu)師:大數(shù)據(jù)量 緩存、高并發(fā)、微服務(wù) 多團(tuán)隊(duì)協(xié)同等核心場(chǎng)景實(shí)戰(zhàn)
定 價(jià):¥89
中 教 價(jià):¥62.30 (7.00折)
庫(kù) 存 數(shù): 0
叢 書(shū) 名:計(jì)算機(jī)前沿技術(shù)叢書(shū)
《從程序員到架構(gòu)師:大數(shù)據(jù)量、緩存、高并發(fā)、微服務(wù)、多團(tuán)隊(duì)協(xié)同等核心場(chǎng)景實(shí)戰(zhàn)》分為數(shù)據(jù)持久化層場(chǎng)景實(shí)戰(zhàn)、緩存層場(chǎng)景實(shí)戰(zhàn)、基于常見(jiàn)組件的微服務(wù)場(chǎng)景實(shí)戰(zhàn)、微服務(wù)進(jìn)階場(chǎng)景實(shí)戰(zhàn)和開(kāi)發(fā)運(yùn)維場(chǎng)景實(shí)戰(zhàn)5個(gè)部分,基于對(duì)十余個(gè)架構(gòu)搭建與改造項(xiàng)目的經(jīng)驗(yàn)總結(jié),介紹了大數(shù)據(jù)量、緩存、高并發(fā)、微服務(wù)、多團(tuán)隊(duì)協(xié)同等核心場(chǎng)景下的架構(gòu)設(shè)計(jì)常見(jiàn)問(wèn)題及其通用技術(shù)方案,包含冷熱分離、查詢(xún)分離、分表分庫(kù)、秒殺架構(gòu)、注冊(cè)發(fā)現(xiàn)、熔斷、限流、微服務(wù)等具體需求下的技術(shù)選型、技術(shù)原理、技術(shù)應(yīng)用、技術(shù)要點(diǎn)等內(nèi)容,將技術(shù)講解與實(shí)際場(chǎng)景相結(jié)合,內(nèi)容豐富,實(shí)戰(zhàn)性強(qiáng),易于閱讀。《從程序員到架構(gòu)師:大數(shù)據(jù)量、緩存、高并發(fā)、微服務(wù)、多團(tuán)隊(duì)協(xié)同等核心場(chǎng)景實(shí)戰(zhàn)》適合計(jì)劃轉(zhuǎn)型架構(gòu)師的程序員及希望提升架構(gòu)設(shè)計(jì)能力的IT從業(yè)人員閱讀。
實(shí)用、有料,閱讀輕松、不費(fèi)時(shí)·立意場(chǎng)景化教學(xué),一章一場(chǎng)景,理清技術(shù)應(yīng)用·眾多項(xiàng)目經(jīng)歷盡在眼前,帶你提前體驗(yàn)架構(gòu)師打怪日常*統(tǒng)一多色、調(diào)清、改字色……精心處理每一張框圖,力爭(zhēng)圖圖清晰*每頁(yè)增加筆記欄,方便記錄拓展發(fā)散,提升閱讀體驗(yàn)
隨著社會(huì)節(jié)奏的日益加快,碎片化學(xué)習(xí)逐漸成為人們獲取知識(shí)的主要方式,雖然能學(xué)到很多知識(shí),但這些知識(shí)往往零散瑣碎、不系統(tǒng)。剛學(xué)習(xí)Spring時(shí),每當(dāng)看到Spring的示例代碼,我先是恍然大悟:哦,原來(lái)Spring還有這個(gè)功能!然后趕緊把這段代碼復(fù)制到自己的代碼庫(kù)里。琢磨一番后發(fā)現(xiàn):不行,我還是得完整掌握Spring。于是又在網(wǎng)絡(luò)上尋找完整的Spring學(xué)習(xí)文檔。但利用碎片化時(shí)間看完一半后,還是決定放棄了。碎片化學(xué)習(xí)知識(shí)時(shí),人們往往追求實(shí)用,對(duì)用得上的知識(shí)學(xué)得很快,而那些暫時(shí)用不到或沒(méi)有融合使用場(chǎng)景的知識(shí)卻不容易記住,每次看完就忘,一直這樣循環(huán)往復(fù)。相信大部分人也都跟我一樣,往往是真正遇到問(wèn)題時(shí)才會(huì)去想對(duì)應(yīng)的解決方案。我是什么時(shí)候開(kāi)始能完整看完Spring官方文檔的?是在明白了Spring大部分功能的使用場(chǎng)景后。 同樣的經(jīng)歷也發(fā)生在我的Spark學(xué)習(xí)之路上,我有過(guò)多次Spark從入門(mén)到放棄的經(jīng)歷,直到有一天碰到了一個(gè)實(shí)際業(yè)務(wù)問(wèn)題需要定期分析大量數(shù)據(jù)并生成分析結(jié)果,在解決這個(gè)問(wèn)題的過(guò)程中,我才真正理解了Spark的用途。這就和有些人一直不明白架構(gòu)師到底是做什么的一樣,直到有一天,他們遇到了一個(gè)具體的問(wèn)題,摸索出了一個(gè)可行的方案,才明白:原來(lái)架構(gòu)師是這樣解決問(wèn)題的。因此,如果想要學(xué)好軟件架構(gòu),基于場(chǎng)景的學(xué)習(xí)方式有效。因?yàn)橐坏├斫饬藰I(yè)務(wù)場(chǎng)景,就能很容易地看懂某個(gè)解決方案,并理解解決方案背后的實(shí)現(xiàn)原理。那么,有沒(méi)有這樣一本書(shū):它沒(méi)有教條,沒(méi)有理論,就像講故事一樣,將個(gè)人架構(gòu)實(shí)戰(zhàn)經(jīng)歷娓娓道來(lái)。它先講清楚需要解決的問(wèn)題,然后訴說(shuō)個(gè)人架構(gòu)的心路歷程,并將實(shí)現(xiàn)思路結(jié)合起來(lái),闡述整體方案,后引申出解決方案的不足及更多思考。在做了大量市場(chǎng)調(diào)研后我并沒(méi)有找到此類(lèi)書(shū)籍,于是就產(chǎn)生了一個(gè)想法,可不可以自己寫(xiě)一本這樣的書(shū),來(lái)填補(bǔ)這塊空白?本書(shū)講的是架構(gòu),可是,什么是架構(gòu)?什么是架構(gòu)?關(guān)于架構(gòu),我以前一直以為,只有真正從0到1,經(jīng)歷各種技術(shù)選型后搭建出來(lái)的一個(gè)系統(tǒng)框架,才算是真正的架構(gòu)。但現(xiàn)實(shí)是,隨意在Github上搜索一個(gè)框架,比如Spring Cloud腳手架,就有很多相關(guān)的教程。而且,對(duì)于從0開(kāi)始的業(yè)務(wù)來(lái)說(shuō),技術(shù)選型有那么重要嗎?實(shí)際工作中不都是技術(shù)創(chuàng)始人熟悉哪個(gè)技術(shù)棧就用哪個(gè)技術(shù)棧嗎?如果腳手架不是架構(gòu),那什么是?來(lái)看看軟件架構(gòu)的定義。軟件架構(gòu)是一系列相關(guān)的抽象模式,用于指導(dǎo)大型軟件系統(tǒng)各個(gè)方面的設(shè)計(jì)。軟件架構(gòu)是一個(gè)系統(tǒng)的草圖,描述的對(duì)象是直接構(gòu)成系統(tǒng)的抽象組件,各個(gè)組件之間的連接明確和相對(duì)細(xì)致地描述組件之間的通信。在實(shí)現(xiàn)階段,這些抽象組件被細(xì)化為實(shí)際的組件,比如具體的某個(gè)類(lèi)或者對(duì)象。在面向?qū)ο箢I(lǐng)域中,組件之間的連接通常用接口來(lái)實(shí)現(xiàn)。軟件架構(gòu)是構(gòu)建計(jì)算機(jī)軟件的基礎(chǔ)。與建筑師制訂建筑項(xiàng)目的設(shè)計(jì)原則和目標(biāo)來(lái)作為繪圖員畫(huà)圖的基礎(chǔ)一樣,一個(gè)軟件架構(gòu)師或者系統(tǒng)架構(gòu)師設(shè)計(jì)軟件架構(gòu)以作為滿(mǎn)足不同客戶(hù)需求的實(shí)際系統(tǒng)設(shè)計(jì)方案的基礎(chǔ)。是不是很難理解?我以前有個(gè)領(lǐng)導(dǎo),原來(lái)是Oracle的VP,那時(shí)候公司在推行Scrum,我就問(wèn)他,學(xué)Scrum重要的是什么?他說(shuō),是體驗(yàn),先別去刻意記憶那些規(guī)則,而是跟著前輩做項(xiàng)目,在里面認(rèn)真體驗(yàn)一段時(shí)間,自然就懂了。我覺(jué)得這一方法在學(xué)習(xí)上也可以參考:先不去糾結(jié)什么是架構(gòu),而是去探索架構(gòu)要解決什么問(wèn)題、要處理什么樣的場(chǎng)景。這就是本書(shū)的立足點(diǎn)。從實(shí)際場(chǎng)景中學(xué)架構(gòu)我職場(chǎng)深耕15余載,經(jīng)歷過(guò)數(shù)十次互聯(lián)網(wǎng)架構(gòu)業(yè)務(wù)。在這幾十次的架構(gòu)經(jīng)歷中,有些因與業(yè)務(wù)緊密結(jié)合無(wú)法單獨(dú)拿出來(lái),但有些可以從特定業(yè)務(wù)需求中剝離出來(lái)變成技術(shù)思路上通用的解決方案。其中可以抽取歸納的架構(gòu)經(jīng)歷共16次,本書(shū)將這16次真實(shí)的架構(gòu)經(jīng)歷整理成一套知識(shí)體系,方便讀者更加系統(tǒng)地理解它們,終內(nèi)化為自己的知識(shí)。根據(jù)架構(gòu)設(shè)計(jì)的立足點(diǎn),本書(shū)劃分為5個(gè)部分。第1部分:數(shù)據(jù)持久化層場(chǎng)景實(shí)戰(zhàn)。主要講解存儲(chǔ)的數(shù)據(jù)量太大影響讀寫(xiě)性能時(shí),如何在存儲(chǔ)層采取措施來(lái)解決性能問(wèn)題。學(xué)完這部分內(nèi)容后,當(dāng)遇到數(shù)據(jù)量大的問(wèn)題時(shí),就可以直接從中找到參考答案。 第2部分:緩存層場(chǎng)景實(shí)戰(zhàn)。主要講解大流量時(shí),如何避免流量直接壓垮數(shù)據(jù)庫(kù)層。學(xué)完這后,當(dāng)遇到緩存層場(chǎng)景問(wèn)題,就知道如何進(jìn)行架構(gòu)設(shè)計(jì)了。 第3部分:基于常見(jiàn)組件的微服務(wù)場(chǎng)景實(shí)戰(zhàn)。主要講解業(yè)務(wù)邏輯分布在不同的服務(wù)時(shí),如何使用一些常見(jiàn)的組件去解決其中的各種問(wèn)題。通過(guò)這部分內(nèi)容的學(xué)習(xí),能快速掌握一些微服務(wù)的基本原理,并靈活地組合一些常見(jiàn)微服務(wù)組件,或結(jié)合自研的一些框架來(lái)解決微服務(wù)場(chǎng)景問(wèn)題。 第4部分:微服務(wù)進(jìn)階場(chǎng)景實(shí)戰(zhàn)。在學(xué)完基于常見(jiàn)組件的微服務(wù)場(chǎng)景實(shí)戰(zhàn)內(nèi)容后,這個(gè)模塊將先用各種真實(shí)經(jīng)歷讓你提前體會(huì)在大公司使用微服務(wù)時(shí)會(huì)面臨的一些問(wèn)題,然后通過(guò)真實(shí)的架構(gòu)經(jīng)歷來(lái)講解使用無(wú)常見(jiàn)組件可用的微服務(wù)時(shí)所面臨的一些問(wèn)題及其解決方案。 第5部分:開(kāi)發(fā)運(yùn)維場(chǎng)景實(shí)戰(zhàn)。主要講解如何通過(guò)一些架構(gòu)上的設(shè)計(jì)來(lái)提高開(kāi)發(fā)效率和測(cè)試微服務(wù)的效率。
曾任硅谷上市公司技術(shù)總監(jiān)、知名重資產(chǎn)型互聯(lián)網(wǎng)上市公司技術(shù)總監(jiān)、創(chuàng)業(yè)公司 CTO。目前是建信金融科技·基礎(chǔ)技術(shù)中心的技術(shù)專(zhuān)家。擁有 15 年互聯(lián)網(wǎng)研發(fā)經(jīng)驗(yàn),保險(xiǎn)、電商、銀行等行業(yè)領(lǐng)域都有所涉獵,落地實(shí)踐過(guò)數(shù)十個(gè)架構(gòu)項(xiàng)目,在微服務(wù)、大數(shù)據(jù)、 AI工程化落地、中臺(tái)化改造、DevOps 、運(yùn)維自動(dòng)化等方面有著豐富的經(jīng)驗(yàn)。拉勾教育架構(gòu)專(zhuān)欄優(yōu)秀講師。
序前言第1部分 數(shù)據(jù)持久化層場(chǎng)景實(shí)戰(zhàn)第1章 冷熱分離/1.1 業(yè)務(wù)場(chǎng)景:幾千萬(wàn)數(shù)據(jù)量的工單表如何快速優(yōu)化/1.2 數(shù)據(jù)庫(kù)分區(qū),從學(xué)習(xí)到放棄/1.3 冷熱分離簡(jiǎn)介/1.3.1 什么是冷熱分離/1.3.2 什么情況下使用冷熱分離/1.4 冷熱分離一期實(shí)現(xiàn)思路:冷熱數(shù)據(jù)都用MySQL/1.4.1 如何判斷一個(gè)數(shù)據(jù)到底是冷數(shù)據(jù)還是熱數(shù)據(jù)/1.4.2 如何觸發(fā)冷熱數(shù)據(jù)分離/1.4.3 如何分離冷熱數(shù)據(jù)/1.4.4 如何使用冷熱數(shù)據(jù)/1.4.5 歷史數(shù)據(jù)如何遷移/1.4.6 整體方案/1.5 冷熱分離二期實(shí)現(xiàn)思路:冷數(shù)據(jù)存放到HBase/1.5.1 冷熱分離一期解決方案的不足/1.5.2 歸檔工單的使用場(chǎng)景/1.5.3 HBase原理介紹/1.5.4 HBase的表結(jié)構(gòu)設(shè)計(jì)/1.5.5 二期的代碼改造/1.6 小結(jié)/第2章 查詢(xún)分離/2.1 業(yè)務(wù)場(chǎng)景:千萬(wàn)工單表如何實(shí)現(xiàn)快速查詢(xún)/2.2 查詢(xún)分離簡(jiǎn)介/2.2.1 何為查詢(xún)分離/2.2.2 何種場(chǎng)景下使用查詢(xún)分離/2.3 查詢(xún)分離實(shí)現(xiàn)思路/2.3.1 如何觸發(fā)查詢(xún)分離/2.3.2 如何實(shí)現(xiàn)查詢(xún)分離/2.3.3 查詢(xún)數(shù)據(jù)如何存儲(chǔ)/2.3.4 查詢(xún)數(shù)據(jù)如何使用/2.3.5 歷史數(shù)據(jù)遷移/2.3.6 MQ Elasticsearch的整體方案/2.4 Elasticsearch注意事項(xiàng)/2.4.1 如何使用Elasticsearch設(shè)計(jì)表結(jié)構(gòu)/2.4.2 Elasticsearch的存儲(chǔ)結(jié)構(gòu)/2.4.3 Elasticsearch如何修改表結(jié)構(gòu)/2.4.4 陷阱一:Elasticsearch是準(zhǔn)實(shí)時(shí)的嗎/2.4.5 陷阱二:Elasticsearch宕機(jī)恢復(fù)后,數(shù)據(jù)丟失/2.4.6 陷阱三:分頁(yè)越深,查詢(xún)效率越低/2.5 小結(jié)/第3章 分表分庫(kù)/3.1 業(yè)務(wù)場(chǎng)景:億級(jí)訂單數(shù)據(jù)如何實(shí)現(xiàn)快速讀寫(xiě)/3.2 拆分存儲(chǔ)的技術(shù)選型/3.2.1 MySQL的分區(qū)技術(shù)/3.2.2 NoSQL/3.2.3 NewSQL/3.2.4 基于MySQL的分表分庫(kù)/3.3 分表分庫(kù)實(shí)現(xiàn)思路/3.3.1 使用什么字段作為分片主鍵/3.3.2 分片的策略是什么/3.3.3 業(yè)務(wù)代碼如何修改/3.3.4 歷史數(shù)據(jù)如何遷移/3.3.5 未來(lái)的擴(kuò)容方案是什么/3.4 小結(jié)/第2部分 緩存層場(chǎng)景實(shí)戰(zhàn)第4章 讀緩存/4.1 業(yè)務(wù)場(chǎng)景:如何將十幾秒的查詢(xún)請(qǐng)求優(yōu)化成毫秒級(jí)/4.2 緩存中間件技術(shù)選型(Memcached,MongoDB,Redis)/4.3 緩存何時(shí)存儲(chǔ)數(shù)據(jù)/4.4 如何更新緩存/4.4.1 組合1:先更新緩存,再更新數(shù)據(jù)庫(kù)/4.4.2 組合2:先刪除緩存,再更新數(shù)據(jù)庫(kù)/4.4.3 組合3:先更新數(shù)據(jù)庫(kù),再更新緩存/4.4.4 組合4:先更新數(shù)據(jù)庫(kù),再刪除緩存/4.4.5 組合5:先刪除緩存,更新數(shù)據(jù)庫(kù),再刪除緩存/4.5 緩存的高可用設(shè)計(jì)/4.6 緩存的監(jiān)控/4.7 小結(jié)/第5章 寫(xiě)緩存/5.1 業(yè)務(wù)場(chǎng)景:如何以小代價(jià)解決短期高頻寫(xiě)請(qǐng)求/5.2 寫(xiě)緩存/5.3 實(shí)現(xiàn)思路/5.3.1 寫(xiě)請(qǐng)求與批量落庫(kù)這兩個(gè)操作同步還是異步/5.3.2 如何觸發(fā)批量落庫(kù)/5.3.3 緩存數(shù)據(jù)存儲(chǔ)在哪里/5.3.4 緩存層并發(fā)操作需要注意什么/5.3.5 批量落庫(kù)失敗了怎么辦/5.3.6 Redis的高可用配置/5.4 小結(jié)/第6章 數(shù)據(jù)收集/6.1 業(yè)務(wù)背景:日億萬(wàn)級(jí)請(qǐng)求日志收集如何不影響主業(yè)務(wù)/6.2 技術(shù)選型思路/6.2.1 使用什么技術(shù)保存埋點(diǎn)數(shù)據(jù)的現(xiàn)場(chǎng)/6.2.2 使用什么技術(shù)收集日志數(shù)據(jù)到持久化層/6.2.3 為什么使用Kafka/6.2.4 使用什么技術(shù)把Kafka的數(shù)據(jù)遷移到持久化層/6.3 整體方案/6.4 小結(jié)/第7章 秒殺架構(gòu)/7.1 業(yè)務(wù)場(chǎng)景:設(shè)計(jì)秒殺架構(gòu)必知必會(huì)的那些事/7.2 整體思路/7.2.1 瀏覽頁(yè)面如何將請(qǐng)求攔截在上游/7.2.2 下單頁(yè)面如何將請(qǐng)求攔截在上游/7.2.3 付款頁(yè)面如何將請(qǐng)求攔截在上游/7.2.4 整體服務(wù)器架構(gòu)/7.3 小結(jié)/第3部分 基于常見(jiàn)組件的微服務(wù)場(chǎng)景實(shí)戰(zhàn)第8章 注冊(cè)發(fā)現(xiàn)/8.1 業(yè)務(wù)場(chǎng)景:如何對(duì)幾十個(gè)后臺(tái)服務(wù)進(jìn)行高效管理/8.2 傳統(tǒng)架構(gòu)會(huì)出現(xiàn)的問(wèn)題/8.2.1 配置煩瑣,上線(xiàn)容易出錯(cuò)/8.2.2 加機(jī)器要重啟/8.2.3 負(fù)載均衡單點(diǎn)/8.2.4 管理困難/8.3 新架構(gòu)要點(diǎn)/8.3.1 中心存儲(chǔ)服務(wù)使用什么技術(shù)/8.3.2 使用哪個(gè)分布式協(xié)調(diào)服務(wù)/8.3.3 基于ZooKeeper需要實(shí)現(xiàn)哪些功能/8.4 ZooKeeper宕機(jī)了怎么辦/8.5 小結(jié)/第9章 全鏈路日志/9.1 業(yè)務(wù)場(chǎng)景:這個(gè)請(qǐng)求到底經(jīng)歷了什么/9.2 技術(shù)選型/9.2.1 日志數(shù)據(jù)結(jié)構(gòu)支持OpenTracing/9.2.2 支持Elasticsearch作為存儲(chǔ)系統(tǒng)/9.2.3 保證日志的收集對(duì)性能無(wú)影響/9.2.4 查詢(xún)統(tǒng)計(jì)功能的豐富程度/9.2.5 使用案例/9.2.6 終選擇/9.3 注意事項(xiàng)/9.3.1 SkyWalking的數(shù)據(jù)收集機(jī)制/9.3.2 如果SkyWalking服務(wù)端宕機(jī)了,會(huì)出現(xiàn)什么情況/9.3.3 流量較大時(shí),如何控制日志的數(shù)據(jù)量/9.3.4 日志的保存時(shí)間/9.3.5 集群配置:如何確保高可用/9.4 小結(jié)/第10章 熔斷/10.1 業(yè)務(wù)場(chǎng)景:如何預(yù)防一個(gè)服務(wù)故障影響整個(gè)系統(tǒng)/10.1.1 個(gè)問(wèn)題:請(qǐng)求慢/10.1.2 第二個(gè)問(wèn)題:流量洪峰緩存超時(shí)/10.2 覆蓋場(chǎng)景/10.3 Sentinel 和Hystrix/10.4 Hystrix的設(shè)計(jì)思路/10.4.1 線(xiàn)程隔離機(jī)制/10.4.2 熔斷機(jī)制/10.4.3 滾動(dòng)(滑動(dòng))時(shí)間窗口/10.4.4 Hystrix調(diào)用接口的請(qǐng)求處理流程/10.5 注意事項(xiàng)/10.5.1 數(shù)據(jù)一致性/10.5.2 超時(shí)降級(jí)/10.5.3 用戶(hù)體驗(yàn)