最近看到有部分招聘信息,要求應(yīng)聘者說一下分布式系統(tǒng)架構(gòu)的思路。今天早晨正好有些時(shí)間,我也把我們實(shí)際在.net方面網(wǎng)站架構(gòu)的演化路線整理一下,只是我自己的一些想法,歡迎大家批評指正。

首先說明的是.net下開源內(nèi)容較少,并且也不是做并行數(shù)據(jù)庫等基礎(chǔ)服務(wù),因此在這里什么Hadoop、Spark、ZooKeeper、dubbo等我們暫不去考慮。

一、最初假設(shè)的網(wǎng)站中,我們把應(yīng)用系統(tǒng)網(wǎng)站、文件和數(shù)據(jù)庫都放在一臺服務(wù)器上,一臺服務(wù)器包打天下。

二、隨著業(yè)務(wù)擴(kuò)展,一臺服務(wù)器無法滿足性能需求,將應(yīng)用程序、數(shù)據(jù)庫、文件分別部署在不同的服務(wù)器上,并根據(jù)服務(wù)器用途不同,配置不同的硬件,達(dá)到性能最佳的效果。

三、隨著業(yè)務(wù)擴(kuò)展,一臺數(shù)據(jù)庫、網(wǎng)站、文件服務(wù)器再高性能也無法大量數(shù)據(jù)處理、高并發(fā)用戶訪問時(shí),必須考慮采用集群方式。

1、應(yīng)用服務(wù)器作為網(wǎng)站的入口,會承擔(dān)大量的請求,我們往往通過應(yīng)用服務(wù)器集群來分擔(dān)請求數(shù)。應(yīng)用服務(wù)器前面部署負(fù)載均衡服務(wù)器調(diào)度用戶請求,根據(jù)分發(fā)策略將請求分發(fā)到多個(gè)應(yīng)用服務(wù)器節(jié)點(diǎn)。常用的負(fù)載均衡技術(shù)硬件的有F5,價(jià)格比較貴,軟件的有LVS、Nginx、HAProxy等。

2、隨著用戶量的增加,數(shù)據(jù)庫成為最大的瓶頸,改善數(shù)據(jù)庫性能常用的手段是進(jìn)行讀寫分離以及分表,讀寫分離顧名思義就是將數(shù)據(jù)庫分為讀庫和寫庫,通過主備功能實(shí)現(xiàn)數(shù)據(jù)同步。分庫分表則分為水平切分和垂直切分,水平切換則是對一個(gè)數(shù)據(jù)庫特大的表進(jìn)行拆分,例如訂單、物流信息表等。垂直切分則是根據(jù)業(yè)務(wù)不同來切換,如訂單、計(jì)稅等等不同的主題放在不同的數(shù)據(jù)庫中。這種情況下,關(guān)聯(lián)查詢是沒有的,通過程序可以比較容易的去解決,還有就是采用分布式事務(wù),來保證數(shù)據(jù)的一致性。我們這里還有一個(gè)做法,一個(gè)大的數(shù)據(jù)表拆分為當(dāng)前操作表和歷史記錄表, 當(dāng)前操作表只保留正在操作的數(shù)據(jù),完成后轉(zhuǎn)入歷史記錄表,這樣可以提高當(dāng)前操作數(shù)據(jù)的效率。

網(wǎng)友評論