1 回答

TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超3個(gè)贊
個(gè)人一些看法:(什么語(yǔ)言都差不多的,我這邊是Java的)
省略前頭的部分內(nèi)容,畢竟是比較簡(jiǎn)單的演化過程
我們將session做成一個(gè)session服務(wù)器,browser1通過負(fù)載均衡請(qǐng)求服務(wù)器,服務(wù)器將session信息存儲(chǔ)到session服務(wù)器中,當(dāng)想要獲取時(shí)就反向進(jìn)行。(缺點(diǎn):目前session Server是單點(diǎn)的,如何解決單點(diǎn),保證可用性)
我們可以將Session Server也做成集群,其適合用于Session數(shù)量與web服務(wù)數(shù)量大的情況下,更改架構(gòu)后,也要修改應(yīng)用存儲(chǔ)session的業(yè)務(wù)邏輯。
接下來我們?cè)倏纯磾?shù)據(jù)庫(kù),讀寫都要經(jīng)過數(shù)據(jù)庫(kù),當(dāng)用戶量達(dá)到一定量時(shí),數(shù)據(jù)庫(kù)又將成為一個(gè)瓶頸,則我們將如何解決?我們可以使用數(shù)據(jù)庫(kù)的讀寫分離,主從庫(kù),并通過統(tǒng)一的數(shù)據(jù)訪問模型進(jìn)行訪問,將所有讀操作引入到Slave服務(wù)器,將寫操作引入到主庫(kù)當(dāng)中,由于數(shù)據(jù)庫(kù)讀寫分離,所以應(yīng)用程序也要有相應(yīng)的變化,使用數(shù)據(jù)訪問模塊讓應(yīng)用程序開發(fā)人員不用理會(huì)讀寫分離的存在,這樣多數(shù)據(jù)源讀寫代碼對(duì)我們的業(yè)務(wù)就沒有了侵入(代碼層的演變,如何支持多數(shù)據(jù)源、如何封裝對(duì)業(yè)務(wù)沒有侵入、如何使用現(xiàn)用的ORM框架實(shí)現(xiàn)數(shù)據(jù)讀寫分離、是否更換ORM、其優(yōu)缺點(diǎn)?)
當(dāng)我們?cè)L問過大,I/O過大,我們數(shù)據(jù)的讀寫分離又將遇到這幾個(gè)問題,主從庫(kù)復(fù)制時(shí)是否延遲(分機(jī)房部署、跨機(jī)房傳輸),應(yīng)用對(duì)于數(shù)據(jù)源的路由問題,接著我們?yōu)榱颂岣叻?wù)器,增加了CND和反向代理服務(wù)器,使用CDN可以解決不同地方訪問速度問題、反向代理可以在機(jī)房中緩存用戶的資源。
這時(shí)文件服務(wù)器又出現(xiàn)了瓶頸,我們將文件服務(wù)器改為分布式文件服務(wù)器集群,我們要考慮到:如何不影響線上的業(yè)務(wù)訪問,是否需要業(yè)務(wù)部門幫忙清理數(shù)據(jù),是否需要備份服務(wù)器,是否需要重新做域名解析。
這時(shí)我們的數(shù)據(jù)庫(kù)又出現(xiàn)了新的瓶頸,我們選擇專庫(kù)專用的方式,進(jìn)行數(shù)據(jù)庫(kù)的垂直拆分,可以解決寫數(shù)據(jù)、并發(fā)、量大的問題,分庫(kù)后又將帶來一些新的問題:跨業(yè)務(wù)的事務(wù)(分布式事務(wù))
當(dāng)某個(gè)數(shù)據(jù)的訪問量、數(shù)據(jù)量、日志等過大達(dá)到瓶頸時(shí),這時(shí)我們就要進(jìn)行數(shù)據(jù)庫(kù)的水平拆分,我們將User拆分成Users1和Users2,水平拆分即將同一個(gè)數(shù)據(jù)表的數(shù)據(jù)拆分到兩個(gè)數(shù)據(jù)庫(kù)當(dāng)中,這時(shí)我們就解決了單數(shù)據(jù)庫(kù)的瓶頸。
水平拆分后,SQL路由出現(xiàn)一些問題,假設(shè)我們想知道某個(gè)用戶是存在Users1還是Users2中,且由于分庫(kù),主鍵的策略也將有所不同,同時(shí)也將面臨一個(gè)分頁(yè)的問題(后臺(tái)管理系統(tǒng)在進(jìn)行展示時(shí)還要考慮分頁(yè)的問題),當(dāng)完成后,我們又發(fā)現(xiàn)應(yīng)用服務(wù)器的搜索量上升,這時(shí)我們將應(yīng)用服務(wù)器的搜索功能提取出來做成搜索引擎,同時(shí)部分場(chǎng)景使用NoSQL提高性能,
當(dāng)然以上架構(gòu)還存在部分問題,如負(fù)載均衡服務(wù)器是單點(diǎn),因此也可以將負(fù)載均衡服務(wù)器做成集群,進(jìn)行主從的熱備,同時(shí)做一個(gè)自動(dòng)切換的解決方案。
過程中:安全性、數(shù)據(jù)分析、監(jiān)控、反作弊........
繼續(xù)發(fā)展:SOA架構(gòu)、服務(wù)化、消息隊(duì)列、任務(wù)調(diào)度、多機(jī)房........
- 1 回答
- 0 關(guān)注
- 1039 瀏覽
添加回答
舉報(bào)