最近看到有部分招聘信息,要求應(yīng)聘者說一下分布式系統(tǒng)架構(gòu)的思路。今天早晨正好有些時(shí)間,我也把我們實(shí)際在.net方面網(wǎng)站架構(gòu)的演化路線整理一下,只是我自己的一些想法,歡迎大家批評(píng)指正。
首先說明的是.net下開源內(nèi)容較少,并且也不是做并行數(shù)據(jù)庫(kù)等基礎(chǔ)服務(wù),因此在這里什么Hadoop、Spark、ZooKeeper、dubbo等我們暫不去考慮。
一、最初假設(shè)的網(wǎng)站中,我們把應(yīng)用系統(tǒng)網(wǎng)站、文件和數(shù)據(jù)庫(kù)都放在一臺(tái)服務(wù)器上,一臺(tái)服務(wù)器包打天下。
二、隨著業(yè)務(wù)擴(kuò)展,一臺(tái)服務(wù)器無(wú)法滿足性能需求,將應(yīng)用程序、數(shù)據(jù)庫(kù)、文件分別部署在不同的服務(wù)器上,并根據(jù)服務(wù)器用途不同,配置不同的硬件,達(dá)到性能最佳的效果。
三、隨著業(yè)務(wù)擴(kuò)展,一臺(tái)數(shù)據(jù)庫(kù)、網(wǎng)站、文件服務(wù)器再高性能也無(wú)法大量數(shù)據(jù)處理、高并發(fā)用戶訪問時(shí),必須考慮采用集群方式。
1、應(yīng)用服務(wù)器作為網(wǎng)站的入口,會(huì)承擔(dān)大量的請(qǐng)求,我們往往通過應(yīng)用服務(wù)器集群來(lái)分擔(dān)請(qǐng)求數(shù)。應(yīng)用服務(wù)器前面部署負(fù)載均衡服務(wù)器調(diào)度用戶請(qǐng)求,根據(jù)分發(fā)策略將請(qǐng)求分發(fā)到多個(gè)應(yīng)用服務(wù)器節(jié)點(diǎn)。常用的負(fù)載均衡技術(shù)硬件的有F5,價(jià)格比較貴,軟件的有LVS、Nginx、HAProxy等。
2、隨著用戶量的增加,數(shù)據(jù)庫(kù)成為最大的瓶頸,改善數(shù)據(jù)庫(kù)性能常用的手段是進(jìn)行讀寫分離以及分表,讀寫分離顧名思義就是將數(shù)據(jù)庫(kù)分為讀庫(kù)和寫庫(kù),通過主備功能實(shí)現(xiàn)數(shù)據(jù)同步。分庫(kù)分表則分為水平切分和垂直切分,水平切換則是對(duì)一個(gè)數(shù)據(jù)庫(kù)特大的表進(jìn)行拆分,例如訂單、物流信息表等。垂直切分則是根據(jù)業(yè)務(wù)不同來(lái)切換,如訂單、計(jì)稅等等不同的主題放在不同的數(shù)據(jù)庫(kù)中。這種情況下,關(guān)聯(lián)查詢是沒有的,通過程序可以比較容易的去解決,還有就是采用分布式事務(wù),來(lái)保證數(shù)據(jù)的一致性。我們這里還有一個(gè)做法,一個(gè)大的數(shù)據(jù)表拆分為當(dāng)前操作表和歷史記錄表, 當(dāng)前操作表只保留正在操作的數(shù)據(jù),完成后轉(zhuǎn)入歷史記錄表,這樣可以提高當(dāng)前操作數(shù)據(jù)的效率。
延伸閱讀
- ssh框架 2016-09-30
- 阿里移動(dòng)安全 [無(wú)線安全]玩轉(zhuǎn)無(wú)線電——不安全的藍(lán)牙鎖 2017-07-26
- 消息隊(duì)列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標(biāo)分割】 2017-07-26
- 詞向量-LRWE模型-更好地識(shí)別反義詞同義詞 2017-07-26
- 從棧不平衡問題 理解 calling convention 2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明 2017-07-26
- Swift實(shí)現(xiàn)JSON轉(zhuǎn)Model - HandyJSON使用講解 2017-07-26
- 阿里移動(dòng)安全 Android端惡意鎖屏勒索應(yīng)用分析 2017-07-26
- 集合結(jié)合數(shù)據(jù)結(jié)構(gòu)來(lái)看看(二) 2017-07-26