日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

ESPlatform 群集平臺(tái)(00) -- 概念與模型

系統(tǒng) 2016 0

當(dāng)我們將基于ESPlus/ESFramework開發(fā)的應(yīng)用程序的服務(wù)端部署在一臺(tái)服務(wù)器上時(shí),就可以稱這臺(tái)服務(wù)器為應(yīng)用服務(wù)器(AS)。當(dāng)在線用戶數(shù)量不斷增加時(shí),我們可能需要部署數(shù)臺(tái)或更多的AS來分擔(dān)負(fù)載。但是,如果沒有ESPlatform統(tǒng)一管理,這些AS中的任何一個(gè)都是獨(dú)立的孤島,不能與其它的AS進(jìn)行協(xié)作。對(duì)于某些特殊的應(yīng)用來說,也許是可以的。但是,對(duì)于大多數(shù)需要群集的應(yīng)用來說,必須要將眾多的AS管理起來,并能協(xié)調(diào)它們的工作。

特別是那些任意兩個(gè)客戶端(這兩個(gè)客戶端可能連接上了不同的AS)之間需要相互通信的應(yīng)用,使用ESFramework的 P2P技術(shù) 可以解決一些問題,但是并不是所有的P2P通道都可以創(chuàng)建成功。 使用ESPlatform后,所有的在線用戶就像連接在同一個(gè)AS上一樣,服務(wù)端實(shí)例對(duì)于客戶端而言,是透明的。

一.群集基礎(chǔ)模型

在單個(gè)AS應(yīng)用中,我們的關(guān)注焦點(diǎn)在于服務(wù)端和客戶端。而在多AS的群集應(yīng)用中,我們需要增加一個(gè)核心關(guān)注點(diǎn),那就是平臺(tái)層。ESPlatform群集模型可以劃分為三層:平臺(tái)層、應(yīng)用層(即AS位于的層)、客戶端。如下圖所示的是ESPlatform所支持的最簡單的群集模型:

ESPlatform 群集平臺(tái)(00) -- 概念與模型

平臺(tái)層的核心是ACMS(應(yīng)用群集管理服務(wù)器),用于管理ESPlatform群集中的所有應(yīng)用服務(wù)器。ACMS的主要職責(zé)可概括為:

(1)管理所有的在線AS。

(2)負(fù)責(zé)AS群集分配策略。

(3)管理所有的在線用戶及其P2P地址。

(4)踢人功能。通過ACMS可以將任何一個(gè)在線用戶踢出系統(tǒng)。

(5)在AS之間轉(zhuǎn)發(fā)消息。

ESPlatform提供了可直接部署運(yùn)行的ACMS服務(wù)器,我們將在后面的文章中詳細(xì)介紹它。

現(xiàn)在,我們以上圖為例,兩個(gè)客戶端Client01與Client02分別連上不同的應(yīng)用服務(wù)器AS01和AS02,我們假設(shè)由于路由器的原因(比如兩個(gè)路由器的NAT類型都是Symmetric),Client01與Client02之間的P2P通道沒有建立成功。此時(shí),如果Client01與Client02之間要相互溝通信息,那么信息就會(huì)經(jīng)過ACMS中轉(zhuǎn)。比如Client01要發(fā)信息給Client02,信息經(jīng)過的路線將會(huì)是:Client01 => AS01 => ACMS => AS02 => Client02。

在ESPlatform群集模型中,從Client01到Client02信息有三種可能的路徑:

(1)當(dāng)Client01到Client02之間存在P2P通道時(shí),直接經(jīng)由P2P通道到達(dá)。否則,進(jìn)入(2)。

(2)當(dāng)Client01到Client02之間連接的是同一個(gè)AS時(shí),直接由該AS轉(zhuǎn)發(fā)。否則,進(jìn)入(3)。

(3)經(jīng)由ACMS轉(zhuǎn)發(fā)。

對(duì)于Client01而言,信息到底是經(jīng)3條路徑中的哪一條到達(dá)Client02的,它并不需要關(guān)心, ESPlatform保證了這一點(diǎn),而且對(duì)客戶端是透明的。

二.全局的好友管理和組管理

對(duì)于那些需要好友關(guān)系或組關(guān)系的應(yīng)用來說,在單AS應(yīng)用中,通常直接在服務(wù)端進(jìn)程中實(shí)例化IFriendsManager的實(shí)現(xiàn)類和IGroupManager的實(shí)現(xiàn)類就可以了。但是,在ESPlatform群集中,由于每個(gè)AS都會(huì)用到IFriendsManager和IGroupManager,所以,最好有一個(gè)全局的好友管理和組管理。

我們可以這樣做,將IFriendsManager的實(shí)現(xiàn)類單獨(dú)部署在一臺(tái)服務(wù)器上,稱之為好友服務(wù)器FriendServer;將IGroupManager的實(shí)現(xiàn)類單獨(dú)部署在一臺(tái)服務(wù)器上,稱之為組服務(wù)器GroupServer。FriendServer和GroupServer都通過Remoting的方式暴露出對(duì)應(yīng)的服務(wù)。所以,各個(gè)AS就是通過Remoting來訪問IFriendsManager和IGroupManager。很明顯,全局的FriendServer和GroupServer應(yīng)該位于平臺(tái)層。

ESPlatform 群集平臺(tái)(00) -- 概念與模型

在部署好FriendServer和GroupServer后,只需要在初始化AS的服務(wù)端引擎時(shí),將IFriendsManager和IGroupManager的Remoting引用注入到引擎對(duì)應(yīng)的屬性,接下來AS就會(huì)自動(dòng)訪問FriendServer和GroupServer暴露的服務(wù)了。

當(dāng)然,這只是最簡單的情況,實(shí)際上,在真正應(yīng)用時(shí),仍然要考慮到一個(gè)非常重要的方面:性能。AS可能會(huì)頻繁訪問FriendServer和GroupServer暴露的服務(wù),所以,非常有必要認(rèn)真考慮:

(1)是否需要在FriendServer和GroupServer的內(nèi)存中緩存好友/組關(guān)系信息以避免每次都從外部加載。

(2)是否需要在AS的內(nèi)存中也緩存好友/組關(guān)系信息以避免每次都Remoting訪問FriendServer和GroupServer。

也許還有其它的方式,但是這點(diǎn)必需根據(jù)您的業(yè)務(wù)需求慎重考慮。

三.策略與原則

一般而言,群集系統(tǒng)都是相當(dāng)復(fù)雜的系統(tǒng),為了處理復(fù)雜性,原則是必需要遵守的,除非你有充分的理由,并能更好地解決問題。在使用ESPlatform群集平臺(tái)時(shí),我們要充分重視以下幾點(diǎn)。

1.保證AS與ACMS之間網(wǎng)絡(luò)暢通

AS在任何時(shí)候都有可能訪問ACMS,比如用戶上下線的時(shí)候,AS需要向ACMS報(bào)告;有些客戶端之間的信息必需經(jīng)過ACMS進(jìn)行中轉(zhuǎn),等等。如果AS與ACMS之間的網(wǎng)絡(luò)中斷,哪怕只是片刻,可能都會(huì)導(dǎo)致AS與ACMS之間的狀態(tài)數(shù)據(jù)不一致。

我們通常將AS與ACMS部署在同一個(gè)機(jī)房的同一個(gè)局域網(wǎng)內(nèi),以保證通信的質(zhì)量和速度。

2.盡可能使需要相互溝通的客戶端連上同一個(gè)AS

一個(gè)新啟動(dòng)的客戶端應(yīng)該連接到哪個(gè)AS服務(wù)器,是由我們的AS分配策略來決定的。所以,為了盡可能地減少經(jīng)ACMS轉(zhuǎn)發(fā)的消息數(shù)量,也就是盡可能地降低ACMS的負(fù)載,在設(shè)計(jì)AS的分配策略時(shí),應(yīng)特別注意盡可能地使那些需要相互溝通的客戶端連接到同一個(gè)AS服務(wù)個(gè)器上。這樣,即使兩個(gè)客戶端之間的P2P通道沒有打通,那么,他們之間的交互信息只要通過AS中轉(zhuǎn)就可以了,不需要麻煩到ACMS。

3.可能需要部署專門的轉(zhuǎn)發(fā)服務(wù)器TS

即使上面一點(diǎn)做得再好,仍然會(huì)有需要經(jīng)ACMS轉(zhuǎn)發(fā)信息的情況存在。如果轉(zhuǎn)發(fā)的是低頻信息(比如IM系統(tǒng)中的文字聊天信息),關(guān)系不是很大。但是如果需轉(zhuǎn)發(fā)的是高頻信息(如視頻音頻數(shù)據(jù)),那么就不適合經(jīng)ACMS中轉(zhuǎn)了。因?yàn)檗D(zhuǎn)發(fā)高頻信息,會(huì)大大增加ACMS的負(fù)載,從而影響整個(gè)群集系統(tǒng)的性能。這個(gè)時(shí)候該怎么辦了?我們的經(jīng)驗(yàn)是:動(dòng)態(tài)連接轉(zhuǎn)發(fā)服務(wù)器TS。

當(dāng)無法成功創(chuàng)建P2P通道而且又不在同一個(gè)AS上的兩個(gè)客戶端Client01與Client02需要高頻通信之前,根據(jù)某種策略,選擇一個(gè)合適的轉(zhuǎn)發(fā)服務(wù)器TS,Client01與Client02都連接到這個(gè)TS,然后后續(xù)的高頻信息(甚至是所有要轉(zhuǎn)發(fā)的信息)都經(jīng)過該TS中轉(zhuǎn)。顯而易見,在ESPlatform的層次模型中,TS也位于應(yīng)用層。

ESPlatform 群集平臺(tái)(00) -- 概念與模型

(1)我們可以將TS看成是一種特殊類型的AS,它不參與任何具體的業(yè)務(wù)邏輯處理,只是簡單地轉(zhuǎn)發(fā)信息。

(2)根據(jù)需要,我們可以部署很多個(gè)TS,而且TS并不需要部署在ACMS/AS的同一個(gè)機(jī)房內(nèi)。相反的,TS可能是部署在全國各地的。需要高頻通信的Client01與Client02選擇TS最簡單的策略是,看兩個(gè)客戶端到哪個(gè)TS的路由之和最短。

4.熱機(jī)備份ACMS

在群集模型中,很容易看到ACMS是整個(gè)群集系統(tǒng)的“單點(diǎn)”,只要ACMS掛掉,整個(gè)群集系統(tǒng)就無法正常工作了。所以,在部署ACMS時(shí),最好使用雙熱機(jī)備份或多熱機(jī)備份,這樣在主ACMS意外當(dāng)機(jī)后,另一臺(tái)備份機(jī)就立馬可以接手工作。

四.小結(jié)

ESPlatform提供了最基礎(chǔ)的群集模型(本文的第一個(gè)模型圖),而后續(xù)的進(jìn)化模型都是在這個(gè)基礎(chǔ)上根據(jù)可能的需求所進(jìn)行的常規(guī)變化。而且,這些變化可以依據(jù)更多的需求假設(shè)來進(jìn)一步深化。比如,我們可以引入TCMS(轉(zhuǎn)發(fā)群集管理服務(wù)器)來管理所有的轉(zhuǎn)發(fā)服務(wù)器TS。再比如,在需要高頻廣播信息的系統(tǒng)中,我們還可以引入類似TS作用的廣播服務(wù)器BS來轉(zhuǎn)發(fā)所有的廣播信息,并引入BCMS(廣播群集管理服務(wù)器)來管理所有的BS。

但無論怎么變化,其基礎(chǔ)仍然是我們第一個(gè)模型圖所示的基礎(chǔ)模型,它是ESPlatform的核心模型。對(duì)于某些業(yè)務(wù)簡單的系統(tǒng),最簡單的模型可能就已經(jīng)足夠了。對(duì)于那些復(fù)雜的系統(tǒng),在這個(gè)核心模型上要如何變化、如何深化,沒有固定的方向可言,其最終取決于我們系統(tǒng)的需求。正如有句話是這樣說的:憑空想象的模型是沒有用的,必須要與實(shí)際的需求結(jié)合起來,并在實(shí)戰(zhàn)中不斷淬煉。

下篇文章,我們將詳細(xì)介紹群集管理服務(wù)器ACMS,感謝關(guān)注。

閱讀 更多ESFramework開發(fā)手冊(cè)系列文章

-----------------------------------------------------------------------------------------------------------------------------------------------

關(guān)于ESFramework的任何問題,歡迎聯(lián)系我們:

電話:027-87638960

Q Q:372841921

ESPlatform 群集平臺(tái)(00) -- 概念與模型


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 蓝田县| 红原县| 简阳市| 广东省| 托克逊县| 崇州市| 滕州市| 布拖县| 江安县| 邵武市| 大连市| 堆龙德庆县| 祁连县| 昌黎县| 宾阳县| 松桃| 化州市| 唐山市| 进贤县| 房产| 团风县| 巴中市| 宜宾县| 凤山市| 青铜峡市| 乐陵市| 兴宁市| 丰都县| 易门县| 惠州市| 安图县| 昌图县| 嵊州市| 兴城市| 邮箱| 酒泉市| 沁阳市| 广宁县| 泊头市| 盐源县| 清水河县|