使用nginx反向代理MRCP SERVER

MRCP(V2)的消息組成

MRCP(V2)的交互過(guò)程可以分為三部分

? ? 1.SIP交互 : Session Initiation Protocol弟胀,縮寫(xiě)SIP,正如協(xié)議的名稱(chēng)所言,用于初始化會(huì)話配喳。MRCP交互和RTP交互都基于此會(huì)話進(jìn)行缩滨。交互的媒體能力和地址都基于SIP消息攜帶的SDP信息進(jìn)行協(xié)商翘县。SIP消息一般基于UDP協(xié)議交互帜羊。

? ? 2.MRCP消息交互:控制具體的基于語(yǔ)音的操作(語(yǔ)音識(shí)別、語(yǔ)音合成等)洋腮,同時(shí)傳遞操作的信息和結(jié)果(識(shí)別結(jié)果傳遞箫柳、需要合成語(yǔ)音的文本內(nèi)容等)。MRCP消息一般通過(guò)TCP協(xié)議交互啥供。

? ? 3.RTP消息交互:傳遞操作中的音頻流悯恍。RTP消息一般基于UDP協(xié)議交互。


MRCP(V2)的三種子協(xié)議交互依賴(lài)

????????作為一個(gè)MRCP Server滤灯,包含了上面的協(xié)議的三部分坪稽。如何才能對(duì)同時(shí)包含了三中交互方式的協(xié)議進(jìn)行均衡負(fù)載和容錯(cuò)呢。我們即需要保證同一會(huì)話的SIP消息轉(zhuǎn)發(fā)給同一節(jié)點(diǎn)鳞骤,還需要保證與該會(huì)話綁定的MRCP消息和RTP消息都走對(duì)應(yīng)的節(jié)點(diǎn)。

????????看似復(fù)雜黍判,其實(shí)很簡(jiǎn)單豫尽,我們只需要對(duì)SIP交互進(jìn)行負(fù)載均衡即可。通過(guò)觀察SIP交互內(nèi)容顷帖,我們不難看到美旧,MRCP消息和RTP消息的交互地址,都是在SIP交互過(guò)程中贬墩,由SDP協(xié)商的榴嗅。也即,MRCP消息的交互和RTP消息的交互的雙方地址都是基于SIP消息得到的陶舞。

如從下面MRCP Server返回的200SIP消息可以看出嗽测,MRCP消息交互使用9.75.181.154:1544,而媒體則使用9.75.181.154:5028。

MRCP的SIP協(xié)商

只要我們SIP協(xié)商成功肿孵,那么對(duì)應(yīng)的MRCP 和 RTP交互是基于協(xié)商地址直接交互的唠粥。因此只要做到了SIP消息的負(fù)載均衡,就做到了MRCP會(huì)話級(jí)別的負(fù)載均衡停做。


MRCP(V2)的負(fù)載方案

下面我們來(lái)談?wù)勅绾芜M(jìn)行負(fù)載均衡晤愧。

方案一: 使用NGINX進(jìn)行UDP代理

? ? Nginx 1.9版本增加了Stream模塊,支持4層代理蛉腌,

如下圖所示官份,只需要配置stream模塊進(jìn)行代理即可只厘。nginx會(huì)自動(dòng)均衡請(qǐng)求到負(fù)載節(jié)點(diǎn)。這里有幾個(gè)配置項(xiàng)要補(bǔ)充描述一下:

proxy_responses : UDP轉(zhuǎn)發(fā)時(shí)舅巷,此配置項(xiàng)決定了nginx在轉(zhuǎn)發(fā)一個(gè)nginx請(qǐng)求后羔味,反向轉(zhuǎn)發(fā)多少個(gè)響應(yīng)后認(rèn)為釋放通道。如下圖所示悄谐,A給B發(fā)起一個(gè)請(qǐng)求后介评,B返回了10個(gè)響應(yīng),NGINX將10個(gè)響應(yīng)轉(zhuǎn)回到A后會(huì)釋放通道爬舰,NGINX的臨時(shí)轉(zhuǎn)發(fā)端口將被釋放们陆,之后B的下一個(gè)返回消息將無(wú)法轉(zhuǎn)回A。

proxy_timeout : UDP轉(zhuǎn)發(fā)時(shí)情屹,如果A從端口p1通過(guò)ngxin向B發(fā)送了請(qǐng)求坪仇,100s內(nèi)的同源ip端口的請(qǐng)求會(huì)被轉(zhuǎn)發(fā)到同一節(jié)點(diǎn),同理在此期間能否原路返回響應(yīng)垃你。超時(shí)釋放通道椅文。

上面兩個(gè)配置同時(shí)存在是,通道存在時(shí)長(zhǎng)取最小值惜颇,即有配置觸發(fā)了釋放通道皆刺,通道即被釋放。


MRCP代理nginx配置

有的文章可能會(huì)使用客戶端ip hash的方式進(jìn)行均衡凌摄,以保證會(huì)話一致性羡蛾。實(shí)際上通過(guò)上面的配置,已經(jīng)能夠保證超時(shí)時(shí)間內(nèi)的同會(huì)話請(qǐng)求轉(zhuǎn)發(fā)到同一節(jié)點(diǎn)锨亏。反而使用ip hash時(shí)痴怨,需要考慮如何在機(jī)器數(shù)量不多時(shí),使多個(gè)ip hash分部到不同節(jié)點(diǎn)上(這一塊未仔細(xì)研究)器予。

關(guān)于容錯(cuò)浪藻,nginx會(huì)自動(dòng)檢查分發(fā)服務(wù)地址是否可達(dá),如果不可達(dá)乾翔,會(huì)自動(dòng)剔除該節(jié)點(diǎn)爱葵。當(dāng)然,如果在會(huì)話中節(jié)點(diǎn)崩潰末融,進(jìn)行中的會(huì)話會(huì)將無(wú)法繼續(xù)提供服務(wù)钧惧,但系統(tǒng)不會(huì)進(jìn)入故障狀態(tài),后續(xù)新會(huì)話會(huì)轉(zhuǎn)發(fā)到剩余正常節(jié)點(diǎn)勾习。



方案二:使用開(kāi)源SIP框架浓瞪,如OpenSips等。

? ? OpenSips的部署可以參考官網(wǎng)巧婶,需要安裝db進(jìn)行均衡配置乾颁,同時(shí)通過(guò)route腳本進(jìn)行分發(fā)控制涂乌。總體來(lái)說(shuō)個(gè)人覺(jué)得成本稍大英岭。當(dāng)前采用了方案一湾盒。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市诅妹,隨后出現(xiàn)的幾起案子罚勾,更是在濱河造成了極大的恐慌,老刑警劉巖吭狡,帶你破解...
    沈念sama閱讀 206,378評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件尖殃,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡划煮,警方通過(guò)查閱死者的電腦和手機(jī)送丰,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)弛秋,“玉大人器躏,你說(shuō)我怎么就攤上這事⌒仿裕” “怎么了登失?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,702評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)挖炬。 經(jīng)常有香客問(wèn)我壁畸,道長(zhǎng),這世上最難降的妖魔是什么茅茂? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,259評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮太抓,結(jié)果婚禮上空闲,老公的妹妹穿的比我還像新娘。我一直安慰自己走敌,他們只是感情好碴倾,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,263評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著掉丽,像睡著了一般跌榔。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上捶障,一...
    開(kāi)封第一講書(shū)人閱讀 49,036評(píng)論 1 285
  • 那天僧须,我揣著相機(jī)與錄音,去河邊找鬼项炼。 笑死担平,一個(gè)胖子當(dāng)著我的面吹牛示绊,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播暂论,決...
    沈念sama閱讀 38,349評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼面褐,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了取胎?” 一聲冷哼從身側(cè)響起展哭,我...
    開(kāi)封第一講書(shū)人閱讀 36,979評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎闻蛀,沒(méi)想到半個(gè)月后匪傍,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,469評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡循榆,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,938評(píng)論 2 323
  • 正文 我和宋清朗相戀三年析恢,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片秧饮。...
    茶點(diǎn)故事閱讀 38,059評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡映挂,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出盗尸,到底是詐尸還是另有隱情柑船,我是刑警寧澤,帶...
    沈念sama閱讀 33,703評(píng)論 4 323
  • 正文 年R本政府宣布泼各,位于F島的核電站鞍时,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏扣蜻。R本人自食惡果不足惜逆巍,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,257評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望莽使。 院中可真熱鬧锐极,春花似錦、人聲如沸芳肌。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,262評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)亿笤。三九已至翎迁,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間净薛,已是汗流浹背汪榔。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留罕拂,地道東北人揍异。 一個(gè)月前我還...
    沈念sama閱讀 45,501評(píng)論 2 354
  • 正文 我出身青樓全陨,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親衷掷。 傳聞我的和親對(duì)象是個(gè)殘疾皇子辱姨,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,792評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容