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