.net分布式系統(tǒng)架構(gòu)的思路是什么

今天就跟大家聊聊有關(guān).net分布式系統(tǒng)架構(gòu)的思路是什么,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

堅(jiān)守“ 做人真誠(chéng) · 做事靠譜 · 口碑至上 · 高效敬業(yè) ”的價(jià)值觀,專業(yè)網(wǎng)站建設(shè)服務(wù)10余年為成都混凝土攪拌罐車小微創(chuàng)業(yè)公司專業(yè)提供成都定制網(wǎng)頁(yè)設(shè)計(jì)營(yíng)銷網(wǎng)站建設(shè)商城網(wǎng)站建設(shè)手機(jī)網(wǎng)站建設(shè)小程序網(wǎng)站建設(shè)網(wǎng)站改版,從內(nèi)容策劃、視覺(jué)設(shè)計(jì)、底層架構(gòu)、網(wǎng)頁(yè)布局、功能開(kāi)發(fā)迭代于一體的高端網(wǎng)站建設(shè)服務(wù)。

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

首先說(shuō)明的是.net下開(kāi)源內(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ù)器包打天下。

.net分布式系統(tǒng)架構(gòu)的思路是什么

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

.net分布式系統(tǒng)架構(gòu)的思路是什么

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

1、應(yīng)用服務(wù)器作為網(wǎng)站的入口,會(huì)承擔(dān)大量的請(qǐng)求,我們往往通過(guò)應(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ù),通過(guò)主備功能實(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)查詢是沒(méi)有的,通過(guò)程序可以比較容易的去解決,還有就是采用分布式事務(wù),來(lái)保證數(shù)據(jù)的一致性。我們這里還有一個(gè)做法,一個(gè)大的數(shù)據(jù)表拆分為當(dāng)前操作表和歷史記錄表, 當(dāng)前操作表只保留正在操作的數(shù)據(jù),完成后轉(zhuǎn)入歷史記錄表,這樣可以提高當(dāng)前操作數(shù)據(jù)的效率。

3、用戶一天天增加,業(yè)務(wù)量越來(lái)越大,產(chǎn)生的文件越來(lái)越多。通常情況下,一個(gè)目錄下的文件建議不能超過(guò)1萬(wàn)個(gè),否則對(duì)于文件的查找和輪詢都會(huì)非常慢,會(huì)導(dǎo)致整個(gè)系統(tǒng)無(wú)法正常運(yùn)行。我們一般是按照"\應(yīng)用程序名\模塊名稱\日期"的目錄結(jié)構(gòu)組織的,對(duì)于文件數(shù)目仍舊很大的應(yīng)用,應(yīng)該再細(xì)分。當(dāng)單臺(tái)的文件服務(wù)器已經(jīng)不能滿足需求,就需要分布式的文件系統(tǒng)支撐。常用的分布式文件系統(tǒng)有NFS。我們用的是MS的分布式文件系統(tǒng)(DFS),與AD域相關(guān)性較大。

4、因?yàn)閼?yīng)用服務(wù)器是集群方式,用戶前后兩次請(qǐng)求可能訪問(wèn)的不是一臺(tái)服務(wù)器。因此已經(jīng)不能像以前一樣使用狀態(tài)(Application、Session、Cache、ViewState等),應(yīng)用系統(tǒng)必須是無(wú)狀態(tài)的(當(dāng)然了,用的負(fù)載均衡具有會(huì)話保持的時(shí)候,一個(gè)用戶只會(huì)定位到一臺(tái)服務(wù)器)。系統(tǒng)的緩存應(yīng)該保存在專門的緩存服務(wù)器上,如果必須有狀態(tài),也應(yīng)該保存在專門的緩存服務(wù)器中。作為第一批吃螃蟹者,我們用了微軟的AppFabric作為緩存服務(wù)器,因?yàn)楫?dāng)時(shí)版本很低,問(wèn)題也不少,后來(lái)我們棄用了AppFabric,使用redis作為緩存服務(wù)。現(xiàn)在,AppFabric已經(jīng)改進(jìn)了不少,運(yùn)行在Azure云上,應(yīng)該是不會(huì)存在以前的問(wèn)題了。

.net分布式系統(tǒng)架構(gòu)的思路是什么

中間插一段啊。對(duì)于各種政府、單位等不能將系統(tǒng)部署到互聯(lián)網(wǎng)的部門,并且在各省、市都有對(duì)應(yīng)的分支機(jī)構(gòu)。因?yàn)榫W(wǎng)絡(luò)專線的價(jià)格還是比較高的,至少比互聯(lián)網(wǎng)的網(wǎng)絡(luò)帶寬低了不少,當(dāng)然了不差錢的不說(shuō)啊。這種情況下,一般不采用如上的集中式、集群部署方式,而是采用分布式部署的方式,第一種分布式部署是各分支機(jī)構(gòu)搭建一整套系統(tǒng),定期(例如每天)進(jìn)行數(shù)據(jù)的同步工作,將分支數(shù)據(jù)匯總到總部、總部的數(shù)據(jù)下發(fā)回各分部;第二種分布式部署方式是各分支部署中間件,但是數(shù)據(jù)集中在總部。

四、隨著業(yè)務(wù)進(jìn)一步擴(kuò)展,應(yīng)用程序變得非常臃腫,這時(shí)我們需要將應(yīng)用程序進(jìn)行業(yè)務(wù)拆分,如我們做的綜合業(yè)務(wù)管理系統(tǒng)分為門戶、聯(lián)系處置、業(yè)務(wù)信息、指標(biāo)、數(shù)據(jù)查詢分析等業(yè)務(wù)板塊。每個(gè)業(yè)務(wù)板塊是一個(gè)獨(dú)立的應(yīng)用負(fù)責(zé)相對(duì)獨(dú)立的業(yè)務(wù)運(yùn)作。業(yè)務(wù)板塊之間通過(guò)消息隊(duì)列進(jìn)行通信來(lái)實(shí)現(xiàn)。數(shù)據(jù)庫(kù)也進(jìn)行相應(yīng)的拆分,不同的主題放到不同的數(shù)據(jù)庫(kù)中。同時(shí),最好搭建靜態(tài)資源服務(wù)器,將公用的css、js、images等都存放到靜態(tài)資源服務(wù)器中。

.net分布式系統(tǒng)架構(gòu)的思路是什么

五、對(duì)于海量數(shù)據(jù)的查詢,我們使用NoSql數(shù)據(jù)庫(kù)加上搜索引擎可以達(dá)到更好的性能。并不是所有的數(shù)據(jù)都要放在關(guān)系型數(shù)據(jù)中。常用的NOSQL有MongoDB和redis,搜索引擎有l(wèi)ucene,我們使用的Solr、ElasticSearch等基于Lucene內(nèi)核實(shí)現(xiàn)的更易用的搜索引擎。數(shù)據(jù)量大的話,Solr等也要做成集群。

.net分布式系統(tǒng)架構(gòu)的思路是什么

六、再往下走,系統(tǒng)需要與其他系統(tǒng)進(jìn)行交互,系統(tǒng)也要給各種前端(例如網(wǎng)站、安卓、IOS)提供服務(wù),這樣我們就要在邏輯層之上建設(shè)應(yīng)用服務(wù)層,提供對(duì)客戶端的和對(duì)外的SOA服務(wù)接口。這樣又涉及到DTO、WebService、WCF和WebApi(Rest)等概念。但是最重要的是,SOA方式下,包括前面的MQ方式下,事務(wù)一致性無(wú)法得到保障的,必須采用一定的機(jī)制例如事務(wù)補(bǔ)償機(jī)制來(lái)確保事務(wù)的最終一致性。各個(gè)業(yè)務(wù)板塊所在的服務(wù)器,在不同時(shí)段的壓力也不同,為了盡量做到服務(wù)器集群內(nèi)各服務(wù)器的壓力平攤, 還需要提供更好的機(jī)制,記錄下每個(gè)服務(wù)器的壓力、資源情況、連接數(shù)等等,以便將新的請(qǐng)求轉(zhuǎn)向到壓力最小的服務(wù)器上。

七、業(yè)務(wù)繼續(xù)發(fā)展,就是cdn,再往下就是搭建幾個(gè)中心,將系統(tǒng)部署在各個(gè)中心,各地用戶訪問(wèn)距離他最近的中心,中心間數(shù)據(jù)保持同步。

八、上面講了應(yīng)用系統(tǒng)方面比較多,數(shù)據(jù)方面也要做許多工作。上面已經(jīng)介紹了分庫(kù)分表方式。應(yīng)用系統(tǒng)做大了,勢(shì)必有許多的數(shù)據(jù)資源,尤其是現(xiàn)在大數(shù)據(jù)這個(gè)名詞非?;鸨那闆r下,數(shù)據(jù)分析和處理是一個(gè)系統(tǒng)必須要做的事情。這樣做的好處是,將數(shù)據(jù)的查詢、分析等獨(dú)立出來(lái),不影響正式運(yùn)行中的系統(tǒng),另外是通過(guò)分析挖掘確實(shí)能得到許多意想不到的價(jià)值。

這時(shí),主要的工作是搭建數(shù)據(jù)倉(cāng)庫(kù),然后進(jìn)行后續(xù)的分析和處理。使用ETL/ELT將數(shù)據(jù)定期從正式環(huán)境中導(dǎo)入到數(shù)據(jù)倉(cāng)庫(kù)中,按照不同的主題搭建一個(gè)個(gè)的數(shù)據(jù)集市。對(duì)于數(shù)據(jù)量比較小的系統(tǒng),可以使用關(guān)系數(shù)據(jù)庫(kù)+多維數(shù)據(jù)庫(kù)的方式;對(duì)于大型系統(tǒng),就要使用按列存儲(chǔ)、并行數(shù)據(jù)庫(kù)等方式了。對(duì)于數(shù)據(jù)的分析可以以報(bào)表、KPI、儀表盤駕駛艙等方式提供上層領(lǐng)導(dǎo)決策,也可以使用數(shù)據(jù)挖掘、機(jī)器學(xué)習(xí)和訓(xùn)練等方式實(shí)現(xiàn)價(jià)值發(fā)現(xiàn)、風(fēng)險(xiǎn)控制等。

九、一般情況下,企業(yè)是沒(méi)有那么大的財(cái)力和人員去做上述內(nèi)容的,因此使用云成為企業(yè)的一個(gè)選擇。無(wú)論是Azure、阿里云、亞馬遜等都會(huì)提供一個(gè)個(gè)的服務(wù)。我們就以阿里云為例,ECS提供虛擬服務(wù)器、SLB提供負(fù)載均衡、RDS提供數(shù)據(jù)庫(kù)服務(wù)、OSS提供存儲(chǔ)服務(wù)、DRDS是分布式數(shù)據(jù)服務(wù)、ODSP(現(xiàn)在改名叫MaxCompute)提供大數(shù)據(jù)的計(jì)算服務(wù)、RocketMQ提供MQ、OCS提供分布式緩存服務(wù)、以及CDN、OTS、ADS等等就不一一列舉了。

對(duì)了,現(xiàn)在還有Docker這個(gè)利器,無(wú)論在企業(yè)還是云中都可以使用,我們?cè)谧约簝?nèi)部使用的Redis、Memcached、RabbitMQ、Solr等都部署在Docker中,確實(shí)比較方便。 

上面說(shuō)了一大堆,其實(shí)架構(gòu)做的再好,還需要底層來(lái)實(shí)現(xiàn)。目前流行的語(yǔ)言還是面向?qū)ο驩O的Java、.net等,也就是說(shuō)還是用OO的思想和理念去編程。抽象、封裝、繼承、多態(tài)盡管很字面上比較容易理解,但是深入的認(rèn)識(shí)確實(shí)需要一定的程序量的積累,面向?qū)ο蟮膸状笤瓌t和設(shè)計(jì)模式還是編寫出更高可擴(kuò)展、可替換、可配置、可維護(hù)等軟件質(zhì)量指標(biāo)的代碼的重要保證。

看完上述內(nèi)容,你們對(duì).net分布式系統(tǒng)架構(gòu)的思路是什么有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。

網(wǎng)頁(yè)標(biāo)題:.net分布式系統(tǒng)架構(gòu)的思路是什么
文章網(wǎng)址:http://muchs.cn/article44/iheoee.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化、面包屑導(dǎo)航、全網(wǎng)營(yíng)銷推廣網(wǎng)站策劃、自適應(yīng)網(wǎng)站、企業(yè)建站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁(yè)設(shè)計(jì)