大型网站系统与Java中间件实践 01 认识分布式
01 認識分布式
02 Java中間件
03 分布式框架
如果感覺文章中的圖片不清楚可以查看下面鏈接:
原圖VISIO: https://note.youdao.com/share/?id=7a495e3fba485308f30d700a88ab5689&type=note#/ 原圖PDF地址: https://note.youdao.com/share/?id=35600647bd0177daf74252ca9ce45b77&type=note#/后續(xù)會把原圖文件同步到Github上面上去。暫時謝分享在有道云上。
1:分布式系統(tǒng)介紹
1.1 什么事分布式系統(tǒng)
1.1.1 分布式系統(tǒng)的定義
是一組聯(lián)網(wǎng)計算機上的組件,組件之間通過消息傳遞來通信并協(xié)調(diào)行動。
1.1.2 分布式系統(tǒng)的意義
單機的缺陷:
1.2 分布式系統(tǒng)的基礎(chǔ)知識
1.2.1 組成計算機的5要素
輸入 + 輸出 + CPU + 內(nèi)存 + 外存
計算機組成5要素1.2.2 線程和進程
進程是CPU資源分配的最小單位。
線程是CPU資調(diào)度的最小單位。線程屬于進程,一個進程內(nèi)的多個線程共享進程的內(nèi)存空間,而多個進程之間的內(nèi)存空間是相互獨立的。
生產(chǎn)者和消費者模型。
共享容器協(xié)同1.2.3 網(wǎng)絡(luò)通信基礎(chǔ)和知識
1.2.3.1 OSI與TCP/IP
1.2.3.2 網(wǎng)絡(luò)IO實現(xiàn)方式
1.2.4 如何把應(yīng)用叢單機擴展到分布式
1.2.4.1 輸入設(shè)備的變化
人機交互的輸入設(shè)備 + 系統(tǒng)間調(diào)用者
1.2.4.2 輸出設(shè)備的變化
人家交互輸出設(shè)備 + 系統(tǒng)間響應(yīng)者
1.2.4.3 控制器的變化
1.2.3.4 運算器的變化
1.2.3.5 存儲的變化
1.2.5 分布式系統(tǒng)的難點
1.2.5.1 缺乏全局時鐘
節(jié)點時鐘不一致,分布式鎖
1.2.5.2 面對故障獨立性
多個節(jié)點故障,怎么定位
1.2.5.3 處理單點故障
集群,單點做備份,降低墊底故障的影響范圍
1.2.5.4 事物的挑戰(zhàn)
兩階段提交 最終一致 BASE CAP Paxos
2 大型網(wǎng)站及架構(gòu)演進過程
2.1 大型網(wǎng)站的特點
高并發(fā) + 海量數(shù)據(jù)
2.2 大型網(wǎng)站的架構(gòu)演進
2.2.1 Java技術(shù)單機構(gòu)建的網(wǎng)站
最基本的單體應(yīng)用 應(yīng)用服務(wù)器和數(shù)據(jù)庫服務(wù)器部署在一臺機器上
單體應(yīng)用2.2.2 數(shù)據(jù)庫與應(yīng)用分離
將數(shù)據(jù)庫服務(wù)器和應(yīng)用服務(wù)器部署在不同的機器上
數(shù)據(jù)和應(yīng)用分開部署2.2.3 應(yīng)用服務(wù)器集群
負載均衡因為HTTP協(xié)議是無狀態(tài)的,Session有關(guān)聯(lián)用戶和服務(wù)器的狀態(tài)
需解決Session的問題
根據(jù)Session Id在負載均衡器做路由,同一個Session Id總是路由到同一臺服務(wù)器。
缺點:
1:一臺服務(wù)器宕機,那么機器的會話數(shù)據(jù)全部丟失。
2:會話表示是應(yīng)用層的信息,那么負載均衡服務(wù)器需要在應(yīng)用層進行數(shù)據(jù)解析,開銷比較大。
3:負載均衡服務(wù)器變成了一個有狀態(tài)的節(jié)點。
增加會話同步機制,把會話數(shù)據(jù)同步到其他服務(wù)器上面。
缺點:
1:同步Session數(shù)據(jù)增加網(wǎng)絡(luò)帶寬的開銷。
2:同步會導(dǎo)致每臺服務(wù)器有集群的數(shù)據(jù),導(dǎo)致Session數(shù)據(jù)的內(nèi)容占用會很嚴重。
3:Session數(shù)據(jù)集中存儲
將Session數(shù)據(jù)存儲在存儲服務(wù)器上。
缺點:
1:讀寫Session數(shù)據(jù)引入了網(wǎng)絡(luò)操作,相對于讀取本地數(shù)據(jù)來說,存在延時和不穩(wěn)定 但是我們服務(wù)器通訊在內(nèi)網(wǎng),所以問題不大。
2:存儲集群出現(xiàn)問題,就會影響我們的應(yīng)用。
4:基于Cookie
把Session的數(shù)據(jù)存儲在Cookie里面,
缺點:
1:Cookie長度限制。
2:安全性,依賴于客戶端維持狀態(tài)。
3:性能影響,帶寬消耗:每次HTTP請求增加帶寬消耗。
2.2.5 數(shù)據(jù)壓力變大,讀寫分離
2.2.5.1 數(shù)據(jù)庫讀寫分離
數(shù)據(jù)庫主從同步,更新操作連接主庫數(shù)據(jù)源,查詢操作連接從庫數(shù)據(jù)源
2.2.5.2 搜索引擎是一個讀庫
2.2.5.3 緩存
2.2.6 引入分布式存儲系統(tǒng)
讀寫分離2.2.7 數(shù)據(jù)庫瓶頸
2.2.7.1 專庫專用,數(shù)據(jù)垂直拆分
將不同的業(yè)務(wù)數(shù)據(jù)拆分到不同的數(shù)據(jù)庫中。
不能關(guān)聯(lián)查詢。
2.2.7.2 數(shù)據(jù)水平分表
主鍵一致性
數(shù)據(jù)庫拆分2.2.8 應(yīng)用面對新挑戰(zhàn)
數(shù)據(jù)拆分,業(yè)務(wù)越來越大,項目很難修改
服務(wù)化2.2.9 消息中間件
異步和解耦
《新程序員》:云原生和全面數(shù)字化實踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的大型网站系统与Java中间件实践 01 认识分布式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++ algorithm库中的几个常用
- 下一篇: Windows Presentation