日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ESFramework介绍之(14)-- AS与FS通信方案

發(fā)布時(shí)間:2023/12/19 编程问答 56 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ESFramework介绍之(14)-- AS与FS通信方案 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

??? 前面我們已經(jīng)多次提到,每個(gè)AS都有一組FS為之服務(wù)(回顧),AS將接收到的功能請求通過Tcp連接池?或Remoting轉(zhuǎn)發(fā)給某個(gè)FS處理。下面我們將深入討論AS和FS之間的通信機(jī)制。

??? 首先要解決第一個(gè)問題,AS如何知道每個(gè)為之服務(wù)的FS的地址?
??? 最常見的一種解決方案是,AS處的配置文件中有一個(gè)FS地址列表,AS每次啟動(dòng)時(shí),就讀取這個(gè)列表,然后與列表中的每個(gè)FS建立Tcp連接池。這種方案很容易實(shí)現(xiàn),但是有很多缺點(diǎn)。最主要的是當(dāng)動(dòng)態(tài)的添加/移除FS時(shí),都需要修改AS配置文件中的FS地址列表,而且當(dāng)FS的IP發(fā)生變化時(shí),也需要修改這個(gè)列表。所以這個(gè)列表的維護(hù)是相當(dāng)麻煩的。
??? ESFramework全力支持的是另一種非常靈活的方案,在這種方案中,AS的配置文件中不用保存任何FS的信息,為AS服務(wù)的FS的地址都是在運(yùn)行時(shí)由FS自己通知給AS的。這樣,在動(dòng)態(tài)的添加/移除FS時(shí),AS及其配置文件不用作任何變動(dòng)。我們知道,AS和FS之間的所有功能通信是通過TCP連接池進(jìn)行的,在這種情況下,AS是主動(dòng)聯(lián)系FS。而AS和FS之間的非功能通信通過Remoting或WebService的方式來完成,即當(dāng)FS啟動(dòng)時(shí),將自己的地址信息通過AS發(fā)布的遠(yuǎn)程服務(wù)接口告訴給AS,然后AS再根據(jù)這個(gè)地址去與FS建立TCP連接池。在非功能通信中,是FS主動(dòng)聯(lián)系A(chǔ)S,所以FS不需要發(fā)布遠(yuǎn)程服務(wù)接口,FS只需要知道AS發(fā)布的遠(yuǎn)程服務(wù)的地址即可(通常這個(gè)服務(wù)地址記錄在FS的配置文件中)。?

?? 需要解決的第二個(gè)問題是,當(dāng)網(wǎng)絡(luò)出現(xiàn)故障后恢復(fù)或服務(wù)器(AS或FS)重啟后,AS與FS之間的連接池如何恢復(fù)?主要可分為下面三種情況討論。
(1)第一種情況:當(dāng)FS正常工作一段時(shí)間后重啟:
????? 每次FS啟動(dòng)/重啟時(shí)都向向AS發(fā)送“我啟動(dòng)了”的消息,這樣AS就去主動(dòng)與FS建立Tcp連接池或恢復(fù)已存在的連接池。

(2)第二種情況是AS重啟:
????? 這中情況下有兩種解決辦法:一是在FS上加個(gè)按鈕,當(dāng)AS重啟后,工作人員點(diǎn)擊按鈕,給AS發(fā)送“本FS啟動(dòng)了”的信息。二是FS通過Remoting定時(shí)給AS發(fā)送Check消息,當(dāng)發(fā)生Remoting異常時(shí),FS就知道AS掉線了。AS掉線后,FS就定時(shí)給AS發(fā)送“我啟動(dòng)了”的消息,直到AS重啟完畢。ESFramework對第二種方式進(jìn)行了全力的支持。

(3)第三種情況是網(wǎng)絡(luò)斷開后恢復(fù):
????? 這種情況可以由Tcp連接池自動(dòng)重連機(jī)制來解決。

?????? AS與FS之間的通信的兩個(gè)主要問題都已經(jīng)解決了,最后我還想額外補(bǔ)充一點(diǎn),那就是關(guān)于“定時(shí)Check消息”的。在ESF平臺(tái)上,有很多地方需要使用“定時(shí)Check消息”的機(jī)制,這種機(jī)制主要用于使對方確認(rèn)消息發(fā)送者還在線上。比如,手機(jī)通過移動(dòng)與我們的AS建立了Tcp連接,當(dāng)手機(jī)掉線時(shí),移動(dòng)與AS之間的Tcp連接并沒有斷開,所以AS并不知道手機(jī)客戶掉線了。所以,AS要求,手機(jī)每隔一定時(shí)間就要向AS發(fā)送“Check消息”以表明自己在線,如果在指定的時(shí)間間隔內(nèi),AS沒有收到該手機(jī)的“Check消息”,則AS認(rèn)為該手機(jī)已經(jīng)不在線,馬上斷掉其對應(yīng)的Tcp連接。上面的FS也定時(shí)向AS發(fā)送“Check消息”來表明自己一直在線。

?????? 而在AS與IRAS之間,也采用了同樣的機(jī)制。因?yàn)镮RAS需要管理所有在線AS的地址,所以AS也是每次啟動(dòng)時(shí)向IRAS發(fā)送“本AS啟動(dòng)了”的信息,并定時(shí)向IRAS發(fā)送“Check消息”來表明自己一直在線。關(guān)于IRAS的作用的更細(xì)討論,請關(guān)注下篇文章!

下一篇文章:ESFramework介紹之(15)-- IRAS

上一篇文章:ESFramework介紹之(13)-- 功能插件處理器工廠

轉(zhuǎn)到??:ESFramework 可復(fù)用的通信框架(序)?

總結(jié)

以上是生活随笔為你收集整理的ESFramework介绍之(14)-- AS与FS通信方案的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。