摘要:另一個用戶請求過來,負載均衡器指派這個請求到服務器。這樣就平攤了請求這種方式就叫做輪詢策略還有很多種,就看你想怎么實現(xiàn)了,反正這個邏輯的代碼放在負載均衡器上。
前言
只有光頭才能變強。文本已收錄至我的GitHub倉庫,歡迎Star:https://github.com/ZhongFuCheng3y/3y
這本書買了一段時間了,之前在杭州沒帶過去,現(xiàn)在讀完第三章,來做做筆記
這本書前三章都在科普和回顧中間件/分布式的基礎(chǔ),講得非常通俗易懂。在之前已經(jīng)我寫過基礎(chǔ)分布式相關(guān)文章,大家可以先去看看:
外行人都能看懂的SpringCloud,錯過了血虧!
什么是ZooKeeper?
什么是消息隊列?
什么是單點登錄(SSO)
一、為什么分布式?在之前的文章(外行人都能看懂的SpringCloud,錯過了血虧!)也提過為什么要分布式:
模塊之間獨立,各做各的事,便于擴展,復用性高
高吞吐量。某個任務需要一個機器運行10個小時,將該任務用10臺機器的分布式跑(將這個任務拆分成10個小任務),可能2個小時就跑完了
在書上給出的觀點:
升級單機的處理能力的性價比越來越低,單機的處理能力存在瓶頸
分布式系統(tǒng)更加穩(wěn)定和可用(單機掛了就掛了,分布式掛了一般還有備用/不至于整個鏈路全掛)
1.1 大型網(wǎng)站架構(gòu)演進過程其實在沒接觸過分布式之前,在逛論壇的時候,經(jīng)常會出現(xiàn)一些看起來很牛逼的詞,諸如”讀寫分離“、”分庫分表“、”主從架構(gòu)“、”負載均衡“、”單點故障“等等名詞,就覺得很高大上。下面我就稍微順著”大型網(wǎng)站架構(gòu)演進過程“來講解一下這些詞
在我們最開始接觸Java項目的時候,一般來說是單機的(數(shù)據(jù)庫、Web服務器都是同一臺機器)
網(wǎng)站對外開放以后,訪問量增大,服務器的壓力也隨之提高。此時,我們最簡單的做法就是可以將數(shù)據(jù)庫和應用分開,這樣可以緩解一下當前系統(tǒng)的壓力
應用服務器的壓力繼續(xù)增大,我們可以把應用服務器做成集群(說白了,就是加了臺機器)
加了臺應用服務器以后,就出現(xiàn)新的問題了:
用戶請求的時候,走哪臺服務器啊?
Session是依賴單臺服務器的,那Session怎么搞?
解決用戶走哪臺服務器,我們就在用戶請求到達應用服務器之前,加了一個”負載均衡器“,這個”負載均衡器“說白了就寫了用戶請求會到哪臺應用服務器的邏輯
比如說,一個用戶請求過來,負載均衡器指派這個請求到服務器A。另一個用戶請求過來,負載均衡器指派這個請求到服務器B。這樣就平攤了請求— 這種方式就叫做輪詢
...策略還有很多種,就看你想怎么實現(xiàn)了,反正這個邏輯的代碼放在負載均衡器上。
而Session的問題,我之前寫什么是單點登錄(SSO)已經(jīng)講過了,一般來說我們可以將Session保存在Redis上就行了。
隨著業(yè)務的發(fā)展,我們的數(shù)據(jù)量和訪問量都在增長,現(xiàn)在有不少的業(yè)務都是讀多寫少的,對于這種業(yè)務也是會直接反應到數(shù)據(jù)庫上。
于是,我們可以增加一個讀庫。寫入的操作走服務器C的MySQL,讀取的操作走服務器D的MySQL。這樣就實現(xiàn)了讀寫分離。
一般來說,我們的寫庫也叫做主庫,讀庫也叫做從庫,在互聯(lián)網(wǎng)架構(gòu)中,這叫做主從架構(gòu),比如常見的架構(gòu):一主多從(詳細的參考資料:如何給老婆解釋什么是 Master-Slave)
針對讀多寫少的業(yè)務,我們還有優(yōu)化策略,引入搜索引擎和緩存。
搜索引擎也相當于一個讀庫,使用搜索引擎的倒排表方式,能夠大大提升檢索的速度
緩存則將熱數(shù)據(jù)放入內(nèi)存中,如果查詢的數(shù)據(jù)在緩存中存在,則直接返回
搜索引擎和緩存的參考資料:
Redis合集
什么是Lucene
Elasticsearch入門
注:這里說的索引和緩存就未必特指ES和Redis,比如緩存我也可以用本地緩存而不一定是Redis的。這里用Redis和ES只是我畫圖方便。
繼讀寫分離之后,數(shù)據(jù)庫還是遇到了瓶頸,此時我們就可以采用分庫分表策略了:
垂直拆分— 不同的業(yè)務數(shù)據(jù)分到不同的數(shù)據(jù)庫
水平拆分— 將同一張表的數(shù)據(jù)拆分到不同的數(shù)據(jù)庫中(原因是這張表的數(shù)據(jù)量/更新量太大了)
注:單表行數(shù)超過500萬行或者單表容量超過2GB才推薦進行分庫分表(如果預計三年都達不到這個數(shù)據(jù)量,不要在創(chuàng)建表的時候就分庫分表!) —《阿里巴巴 Java開發(fā)手冊》
在數(shù)據(jù)存儲方面,除了關(guān)系型數(shù)據(jù)庫之外,如果有別的業(yè)務場景,可能還需要引入分布式存儲系統(tǒng)
分布式文件系統(tǒng)
分布式Key-Value系統(tǒng)
分布式數(shù)據(jù)庫
數(shù)據(jù)庫問題解決之后,應用也面臨著挑戰(zhàn)(應用的功能會越做越多,應用也隨之越做越大),為了不讓應用持續(xù)變大,這就需要把應用拆開,從一個應用變?yōu)閮蓚€/多個應用。
不同功能/模塊之間的調(diào)用不再單純通過本機調(diào)用,引入了遠程的服務調(diào)用。
某個應用只有一臺機器上運行著,如果這臺機器上出現(xiàn)了問題,導致這個應用無法運行,這就叫單點故障。
最后這本書《大型網(wǎng)站系統(tǒng)與Java中間件》的前三章主要是鋪墊什么是中間件、什么是分布式(從單機演進到分布式的過程)以及講述了網(wǎng)站的架構(gòu)演進過程,剩下的是回顧一些基礎(chǔ)。比如說:
bio/nio/aio
HTTP/Session
JVM
Java多線程以及并發(fā)的基礎(chǔ)知識
JUC包下的常見類
這些我都曾經(jīng)多多少少都做過筆記,不妨在我的公眾號下找找相關(guān)的文章。總的來說,還是讀得很過癮的!后面讀完下面的章節(jié),我會繼續(xù)分享,敬請期待。
樂于輸出干貨的Java技術(shù)公眾號:Java3y。公眾號內(nèi)有200多篇原創(chuàng)技術(shù)文章、海量視頻資源、精美腦圖,關(guān)注即可獲取!
覺得我的文章寫得不錯,點贊!
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/74908.html
摘要:文本已收錄至我的倉庫,歡迎回顧上一篇大型網(wǎng)站系統(tǒng)與中間件讀書筆記一這周周末讀了第四章,現(xiàn)在過來做做筆記,希望能幫助到大家。沒錯,我們通過肯定是可以完成兩個系統(tǒng)之間的通信的問題的。 前言 只有光頭才能變強。文本已收錄至我的GitHub倉庫,歡迎Star:https://github.com/ZhongFuCheng3y/3y 回顧上一篇: 《大型網(wǎng)站系統(tǒng)與Java中間件》讀書筆記(一)...
摘要:開頭正式開啟我入職的里程,現(xiàn)在已是工作了一個星期了,這個星期算是我入職的過渡期,算是知道了學校生活和工作的差距了,總之,盡快習慣這種生活吧。當時是看的廖雪峰的博客自己也用做爬蟲寫過幾篇博客,不過有些是在前人的基礎(chǔ)上寫的。 showImg(https://segmentfault.com/img/remote/1460000010867984); 開頭 2017.08.21 正式開啟我...
摘要:接下來將介紹分布式緩存的典型代表,以及分布式緩存的應用場景。的分布式實現(xiàn)本身并不是一種分布式的緩存系統(tǒng),它的分布式是由訪問它的客戶端來實現(xiàn)的。 前言:本書是對分布式系統(tǒng)架構(gòu)涉及到的相關(guān)技術(shù)的一本科普書籍。由于很難作為開發(fā)參考,只能但求了解。所以通篇淺讀,對分布式系統(tǒng)進行大致的了解。因為寫的非常好,感覺非常有意思,自己也做不出總結(jié)。所謂的讀書筆記也就演變成了摘抄。 簡介 一個大型、穩(wěn)健、...
摘要:本項目主要收集國內(nèi)外各大互聯(lián)網(wǎng)公司技術(shù)大牛們出版的值得一看的書籍,歡迎推薦書籍完善內(nèi)容和排版。逆流而上阿里巴巴技術(shù)成長之路阿里巴巴集團成長集編委會總結(jié)阿里巴巴技術(shù)團隊在基礎(chǔ)架構(gòu)中間件數(shù)據(jù)庫業(yè)務開發(fā)等領(lǐng)域的經(jīng)典實踐以及對未來的思考。 出自 GitHub 開源組織 Doocs源地址:https://github.com/doocs/tech... 后面將會在 GitHub 陸續(xù)更新書籍清...
閱讀 3389·2023-04-26 01:46
閱讀 2913·2023-04-25 20:55
閱讀 5484·2021-09-22 14:57
閱讀 2980·2021-08-27 16:23
閱讀 1717·2019-08-30 14:02
閱讀 2068·2019-08-26 13:44
閱讀 652·2019-08-26 12:08
閱讀 2961·2019-08-26 11:47