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