欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

通信系統(tǒng)架構(gòu)的制作方法

文檔序號(hào):12809573閱讀:718來源:國知局
通信系統(tǒng)架構(gòu)的制作方法與工藝

本申請(qǐng)是申請(qǐng)日為2014年11月25日提交的、申請(qǐng)?zhí)枮?01480064431.2的發(fā)明專利申請(qǐng)“通信系統(tǒng)架構(gòu)”的分案申請(qǐng)。



背景技術(shù):

傳統(tǒng)通信系統(tǒng)允許設(shè)備用戶(端點(diǎn))(諸如個(gè)人計(jì)算機(jī)或移動(dòng)設(shè)備)通過諸如互聯(lián)網(wǎng)之類的基于分組的計(jì)算機(jī)網(wǎng)絡(luò)與一個(gè)或多個(gè)其它端點(diǎn)進(jìn)行語音或視頻呼叫。圖1示出了這樣的用戶設(shè)備102的示例,如用戶104所使用的。用戶設(shè)備102被顯示為執(zhí)行通信客戶端120以用于進(jìn)行這些呼叫。端點(diǎn)的呼叫數(shù)據(jù)的通信頻繁地受到遵守已達(dá)成的通信協(xié)議的端點(diǎn)的影響。其中一個(gè)示例是會(huì)話發(fā)起協(xié)議(sip)。在廣義的術(shù)語中,sip指示呼叫是根據(jù)端點(diǎn)到端點(diǎn)的基于請(qǐng)求應(yīng)答事務(wù)范式協(xié)商的,其中(除了別的之外),呼叫從初始未連接狀態(tài)發(fā)展到實(shí)時(shí)媒體能夠通過sip用戶代理(諸如構(gòu)成端點(diǎn)102處執(zhí)行的客戶端軟件106的一部分的sip用戶代理108)向其它端點(diǎn)的其它用戶代理發(fā)送請(qǐng)求消息序列并接收相應(yīng)響應(yīng)消息作為回報(bào)而在端點(diǎn)之間流動(dòng)的狀態(tài),同時(shí)呼叫的維護(hù)和最后終止都受到類似的影響。每個(gè)用戶代理針對(duì)該呼叫的持續(xù)時(shí)間維護(hù)狀態(tài)機(jī)(諸如狀態(tài)機(jī)110),其用于跟蹤當(dāng)前呼叫狀態(tài)。該狀態(tài)機(jī)根據(jù)顯著請(qǐng)求的傳輸和顯著響應(yīng)的接收適當(dāng)?shù)馗隆?/p>

在圖2中描繪了兩個(gè)用戶(alice和bob)之間的sip呼叫流的典型示例。首先,alice的用戶代理向bob的用戶代理發(fā)送邀請(qǐng)請(qǐng)求(s202),bob的用戶代理首先返回臨時(shí)的響鈴響應(yīng)(s204),其后面跟著ok應(yīng)答(s206)指示bob已經(jīng)接受該呼叫。alice的用戶代理用ack消息(s208)和實(shí)時(shí)媒體流開始(s210)對(duì)此進(jìn)行確認(rèn)。在s212處,alice的用戶代理通過向bob的用戶代理發(fā)送再見請(qǐng)求(s212)促使呼叫終止。作為響應(yīng),bob的用戶代理返回ok應(yīng)答(s214)并且終止該呼叫。如圖所示,alice和bob的用戶代理可以通過sip代理120交換這些消息。例如,alice和bob的用戶代理可以首先向代理120注冊(cè)它們各自的地址以便使它們相對(duì)于對(duì)方“可見”。通常,代理120到目前為止是無狀態(tài)的,因?yàn)樗痪S護(hù)任何關(guān)于當(dāng)前呼叫狀態(tài)的數(shù)據(jù)(而是僅僅用作中繼器),或者到目前為止是事務(wù)有狀態(tài)的,因?yàn)樗痪S護(hù)關(guān)于當(dāng)前事務(wù)(即,單個(gè)請(qǐng)求-響應(yīng)交換)的以及僅針對(duì)那些事務(wù)的持續(xù)過程中的有限的信息。



技術(shù)實(shí)現(xiàn)要素:

提供這一簡要概述,以便以簡化形式引入選擇的概念,下面在具體實(shí)施方式中將進(jìn)一步描述這些概念。這一簡要概述不是旨在標(biāo)識(shí)出所聲明主題的關(guān)鍵特征或重要特征,也不旨在用作限定所聲明主題的范圍。所聲明的主題也并不僅限于解決背景技術(shù)中提出的任何或全部缺點(diǎn)的實(shí)現(xiàn)方式。

公開了用于實(shí)現(xiàn)包括第一和第二計(jì)算機(jī)設(shè)備的計(jì)算機(jī)系統(tǒng)和通過通信網(wǎng)絡(luò)連接的一個(gè)或多個(gè)額外端點(diǎn)之間的通信事件的通信系統(tǒng)。該通信系統(tǒng)包括多個(gè)處理單元,每個(gè)處理單元具有對(duì)保存用于管理通信事件的可執(zhí)行代碼模塊的計(jì)算機(jī)存儲(chǔ)器的訪問。該代碼模塊被配置為實(shí)現(xiàn)被配置為管理已建立的通信事件的媒體模態(tài)的媒體模態(tài)控制器,以及被配置為建立該通信事件的呼叫控制器。媒體模態(tài)控制器的實(shí)例被指派為響應(yīng)于由呼叫控制器向媒體控制器發(fā)起的指令,以無需訪問第二設(shè)備上的呼叫代理而將通信事件的媒體模態(tài)控制信號(hào)傳送給第一設(shè)備上的媒體代理。響應(yīng)于通過網(wǎng)絡(luò)從第二設(shè)備上的呼叫代理接收到的指令,該呼叫控制器發(fā)起所述指令。

還公開了一種用于實(shí)現(xiàn)包括第一和第二計(jì)算機(jī)設(shè)備的計(jì)算機(jī)系統(tǒng)和通過通信系統(tǒng)的通信網(wǎng)絡(luò)連接的一個(gè)或多個(gè)額外端點(diǎn)之間的通信事件的方法。該通信系統(tǒng)包括多個(gè)處理單元,每個(gè)所述處理單元具有對(duì)保存用于管理通信事件的可執(zhí)行代碼模塊的計(jì)算機(jī)存儲(chǔ)器的訪問。該代碼模塊被配置為實(shí)現(xiàn)被配置為管理已建立的通信事件的媒體模態(tài)的媒體模態(tài)控制器,以及被配置為建立該通信事件的呼叫控制器。該方法包括響應(yīng)于通過網(wǎng)絡(luò)從第二設(shè)備上的呼叫代理接收到的指令,呼叫控制器向媒體控制器發(fā)起指令,響應(yīng)于該呼叫控制器發(fā)起的指令,指派媒體模態(tài)控制器的實(shí)例無需訪問第二設(shè)備上的呼叫代理而將通信事件的媒體模態(tài)控制信號(hào)傳送給第一設(shè)備上的媒體代理。

還公開了一種包括第一計(jì)算機(jī)設(shè)備和第二計(jì)算機(jī)設(shè)備的計(jì)算機(jī)系統(tǒng)。該第一用戶設(shè)備包括網(wǎng)絡(luò)接口和處理單元。第一設(shè)備的網(wǎng)絡(luò)接口被配置為通過通信系統(tǒng)的通信網(wǎng)絡(luò)與該通信系統(tǒng)的媒體模態(tài)控制器通信。該媒體模態(tài)控制器被配置為管理已建立的通信事件的媒體模態(tài),該媒體模態(tài)控制器是響應(yīng)于來自該通信系統(tǒng)的通信控制器的指令的。第一設(shè)備的處理單元被配置為執(zhí)行媒體模態(tài)代理,該媒體模態(tài)代理被配置為與媒體模態(tài)控制器而不與通信控制器通信。該第二計(jì)算機(jī)設(shè)備包括網(wǎng)絡(luò)接口和處理單元。第二設(shè)備的網(wǎng)絡(luò)接口被配置為通過網(wǎng)絡(luò)與呼叫控制器通信,該呼叫控制器被配置為建立該通信事件。第二設(shè)備的處理單元被配置為執(zhí)行呼叫代理,該呼叫代理被配置為與呼叫控制器通信并且通過與所述呼叫控制器的所述通信間接地控制第一用戶設(shè)備的媒體模態(tài)代理的操作。

還公開了包括網(wǎng)絡(luò)接口和處理單元的第一計(jì)算機(jī)設(shè)備。該網(wǎng)絡(luò)接口被配置為通過通信系統(tǒng)的通信網(wǎng)絡(luò)與該通信系統(tǒng)的媒體模態(tài)控制器通信,以便管理已建立的通信事件的媒體模態(tài)。媒體模態(tài)控制器是響應(yīng)于來自通信系統(tǒng)的通信控制器的指令的,該通信控制器被配置為建立通信事件。處理單元被配置為執(zhí)行媒體模態(tài)代理,該媒體模態(tài)代理被配置為與媒體模態(tài)控制器而不與通信控制器通信,第一用戶設(shè)備的媒體模態(tài)的操作是通過與所述呼叫控制器通信的第二用戶設(shè)備而被間接地控制的。

附圖說明

為了輔助理解所公開的主題以及示出可以如何使其生效,現(xiàn)在將通過舉例的方式參考下面的附圖,其中:

圖1是執(zhí)行sip客戶端的用戶設(shè)備的示意圖;

圖2是基于sip的呼叫流的示意圖;

圖3是通信系統(tǒng)的示意圖;

圖4是用戶設(shè)備的示意圖;

圖5a是數(shù)據(jù)中心的示意圖;

圖5b是數(shù)據(jù)中心的服務(wù)器的示意圖;

圖6a和6b示意性地描繪了分層通信系統(tǒng)架構(gòu)的原理;

圖7a和7b示意性地描繪了在通信系統(tǒng)內(nèi)交換數(shù)據(jù)的方法;

圖7c是通信系統(tǒng)中的數(shù)據(jù)交換的示意圖;

圖8是通信系統(tǒng)架構(gòu)的示意性概覽。

圖9是特定通信系統(tǒng)架構(gòu)的示意圖,其中圖9a、9b和9c示意性地描繪其額外細(xì)節(jié);

圖10a和圖10b是呼叫建立過程的示意圖,其中圖10a示意性地描繪其額外細(xì)節(jié);

圖11a和11b提供故障轉(zhuǎn)移過程的示意圖;

圖11c是用于實(shí)現(xiàn)故障轉(zhuǎn)移過程的方法的示意圖;

圖12和12a根據(jù)通信系統(tǒng)架構(gòu)示意性地描繪了用戶設(shè)備;

具體實(shí)施方式

0.1概述

在一個(gè)或多個(gè)端點(diǎn)之間建立諸如呼叫(例如,音頻呼叫、音頻和視頻(av)呼叫等等)之類的實(shí)時(shí)媒體通信事件時(shí),需要考慮很多因素和變量來做出若干決定,包括是否應(yīng)允許參與方互相呼叫、使用什么音頻和視頻編解碼器、如何將媒體分組從一方端點(diǎn)路由到另一方等等。為了(除了別的之外)確保做出適當(dāng)?shù)臎Q定,為呼叫中的參與方提供最好的切實(shí)可行的質(zhì)量,并且盡可能快地完成呼叫建立,負(fù)責(zé)該呼叫建立(包括媒體(例如,音頻和視頻)協(xié)商)的算法、協(xié)議、系統(tǒng)和處理應(yīng)該具有對(duì)任何顯著信息的訪問并且應(yīng)該被分配足夠的計(jì)算資源以便能夠執(zhí)行它們各自的控制功能。

在所描述的實(shí)施例中,定制的中央智能云呼叫建立、控制和媒體協(xié)商(ciccsmnc)系統(tǒng)從“分布式平臺(tái)”(或者稱為“云平臺(tái)”或簡稱為“云”)內(nèi)部提供對(duì)實(shí)時(shí)媒體通信事件的集中化(與基于端點(diǎn)正相反)控制,其中ciccsmnc系統(tǒng)被定制為使用這一云平臺(tái)所提供的計(jì)算資源,該云平臺(tái)可以容易地并且動(dòng)態(tài)地確保(除了別的之外)滿足上面的考慮。

如本申請(qǐng)中所使用的,“分布式平臺(tái)”(“云”)是計(jì)算平臺(tái),可通過網(wǎng)絡(luò)(例如,互聯(lián)網(wǎng))訪問,其包括由多個(gè)聯(lián)網(wǎng)的計(jì)算機(jī)設(shè)備和其上運(yùn)行的系統(tǒng)軟件組成的分布式計(jì)算機(jī)系統(tǒng),該計(jì)算機(jī)系統(tǒng)提供(潛在地非常大的)物理計(jì)算資源(諸如物理處理資源和物理存儲(chǔ)資源,易失性的和/或非易失性的)池,并且所述系統(tǒng)軟件被配置為通過實(shí)現(xiàn)多個(gè)獨(dú)立的、軟件實(shí)現(xiàn)的(或“虛擬的”)、資源有限的計(jì)算機(jī)系統(tǒng)來劃分這一底層物理資源池,每個(gè)所述計(jì)算機(jī)系統(tǒng)具有它們自己各自的計(jì)算機(jī)架構(gòu)(其可以不同于它們?cè)谄渖线\(yùn)行的底層物理計(jì)算機(jī)系統(tǒng)的架構(gòu))。這些虛擬計(jì)算機(jī)系統(tǒng)的每一個(gè)由系統(tǒng)軟件分配(并且因此可以利用)總的可用物理資源的預(yù)定的一部分,該部分具有實(shí)質(zhì)上獨(dú)立于該平臺(tái)的任何其它虛擬計(jì)算機(jī)系統(tǒng)的尺寸。這些虛擬計(jì)算機(jī)系統(tǒng)中的至少一些被配置為提供應(yīng)用代碼的運(yùn)行時(shí)環(huán)境,在該虛擬計(jì)算機(jī)系統(tǒng)中(例如,在一個(gè)或多個(gè)虛擬處理器上)執(zhí)行的代碼應(yīng)用具有各自的指令集架構(gòu)(其可以不同于該虛擬計(jì)算機(jī)系統(tǒng)在其上運(yùn)行的任何物理處理器的架構(gòu))。這些或其它這種虛擬計(jì)算機(jī)系統(tǒng)可以被配置為數(shù)據(jù)訪問單元(例如,被配置為數(shù)據(jù)庫服務(wù)器或類似的),被配置為提供該數(shù)據(jù)訪問單元可訪問的物理存儲(chǔ)資源的訪問,因此應(yīng)用代碼可以從那些物理存儲(chǔ)資源讀取數(shù)據(jù)并向其寫入數(shù)據(jù)。

這一物理計(jì)算機(jī)資源池,以及通過虛擬化動(dòng)作對(duì)該池的劃分能夠由于虛擬化分層(由該平臺(tái)的系統(tǒng)軟件實(shí)現(xiàn)的)使硬件和軟件考慮解耦合,該虛擬化分層提供物理計(jì)算機(jī)資源(例如,可用的物理處理器時(shí)鐘周期和存儲(chǔ)器的物理比特)從“虛擬”資源的分離—也就是,資源實(shí)際是在每個(gè)虛擬計(jì)算機(jī)系統(tǒng)中看到的。底層硬件的物理資源可以通過新的物理網(wǎng)絡(luò)計(jì)算機(jī)設(shè)備的添加,或現(xiàn)有物理聯(lián)網(wǎng)計(jì)算機(jī)的升級(jí)來增強(qiáng),并且在傳統(tǒng)兼容方面唯一需要的考慮就是確保升級(jí)后的物理計(jì)算機(jī)系統(tǒng)還是能夠運(yùn)行相同種類的虛擬機(jī)(即,無需任何關(guān)于什么操作系統(tǒng)或應(yīng)用代碼將運(yùn)行在那些虛擬機(jī)上的考慮)。類似地,系統(tǒng)設(shè)計(jì)者可以設(shè)計(jì)系統(tǒng)(可能是具有很多組件的極其復(fù)雜的系統(tǒng)),并且開發(fā)與之有關(guān)的、用于與物理硬件考慮(諸如順序、部署和安置物理服務(wù)器等)無關(guān)的云平臺(tái)上的實(shí)現(xiàn)的代碼—系統(tǒng)設(shè)計(jì)者只需要考慮在虛擬計(jì)算機(jī)系統(tǒng)的資源限制(而非地底層硬件的資源限制)方面的計(jì)算機(jī)資源消耗,那些虛擬系統(tǒng)的資源限制是明確定義的并且已知。因此,從系統(tǒng)設(shè)計(jì)者的角度,計(jì)算機(jī)資源考慮被減少到,例如該云平臺(tái)應(yīng)該部署多少個(gè)虛擬計(jì)算機(jī)系統(tǒng)之類的考慮;從平臺(tái)本身的運(yùn)營者的角度(該運(yùn)營者可能不同于系統(tǒng)設(shè)計(jì)者),計(jì)算機(jī)資源考慮被減少到,例如實(shí)現(xiàn)要求數(shù)量的具有預(yù)定義資源分配的虛擬機(jī)需要多少個(gè)物理計(jì)算機(jī)系統(tǒng)之類的考慮。

圖8中示出了示例性分布式平臺(tái)800的高級(jí)概述。該示例性平臺(tái)包括分布式計(jì)算機(jī)系統(tǒng)814。圖8的計(jì)算機(jī)系統(tǒng)814由非常大量的(例如,成千上萬)聯(lián)網(wǎng)計(jì)算機(jī)設(shè)備組成—大到足夠物理計(jì)算資源在一些上下文中可以被視為足夠豐富就像實(shí)際上無限的一樣。這些計(jì)算機(jī)設(shè)備被配置為與基于分組的數(shù)據(jù)網(wǎng)絡(luò)301(例如,互聯(lián)網(wǎng))通信并且是全球分布的(例如,分散遍布多個(gè)國家和/或大洲)。通常,這些計(jì)算機(jī)系統(tǒng)的分組(例如,成千個(gè)服務(wù)器)被安置在不同地理位置處(即,國家的不同區(qū)域、不同國家、不同大洲等)的相應(yīng)數(shù)據(jù)中心(datacentre)中(作為替代可稱為“數(shù)據(jù)中心(datacentre)”)。

系統(tǒng)軟件812運(yùn)行在該分布式計(jì)算機(jī)系統(tǒng)814之上。系統(tǒng)軟件812被配置為實(shí)現(xiàn)獨(dú)立的、虛擬的、資源有限的計(jì)算機(jī)系統(tǒng)806、810的兩個(gè)集合804(運(yùn)行時(shí)集合)和808(存儲(chǔ)集合)。每個(gè)虛擬系統(tǒng)806、810是資源有限的,這體現(xiàn)在其被系統(tǒng)軟件812分配了分布式計(jì)算機(jī)系統(tǒng)814的全部可用底層物理資源的預(yù)定的有限的一部分,并且它也是獨(dú)立的,這體現(xiàn)在這一部分資源的尺寸實(shí)質(zhì)上獨(dú)立于平臺(tái)800的其它虛擬系統(tǒng)。每個(gè)虛擬系統(tǒng)806、810就其被軟件配置為模擬計(jì)算機(jī)架構(gòu)(其通常不同于物理計(jì)算機(jī)系統(tǒng)814的架構(gòu))方面而言是虛擬的。

運(yùn)行時(shí)集合804包括多個(gè)虛擬計(jì)算機(jī)系統(tǒng)806,它為應(yīng)用代碼834的執(zhí)行提供運(yùn)行時(shí)環(huán)境,應(yīng)用代碼834在該虛擬計(jì)算機(jī)系統(tǒng)806上執(zhí)行。系統(tǒng)軟件812被配置為使希望使用平臺(tái)800的軟件開發(fā)者能夠通過網(wǎng)絡(luò)301將他們的定制代碼834上傳到平臺(tái)800以便在其上執(zhí)行。作為響應(yīng),系統(tǒng)軟件812創(chuàng)建這一運(yùn)行時(shí)環(huán)境并將代碼834提供給新創(chuàng)建的運(yùn)行時(shí)環(huán)境用于執(zhí)行。這一代碼834在虛擬系統(tǒng)806上的執(zhí)行是通過對(duì)分配給該環(huán)境的底層物理處理資源和物理存儲(chǔ)資源(主要由物理易失性存儲(chǔ)器實(shí)現(xiàn)在物理層級(jí))的系統(tǒng)軟件中介訪問而變?yōu)榭赡艿摹?/p>

存儲(chǔ)集合808包括被配置為提供數(shù)據(jù)存儲(chǔ)的多個(gè)虛擬計(jì)算機(jī)系統(tǒng)810。每個(gè)具有相應(yīng)的應(yīng)用編程接口(api)811,該api可以用于實(shí)現(xiàn)數(shù)據(jù)向和從分配給該計(jì)算機(jī)系統(tǒng)810的物理存儲(chǔ)資源(主要由物理非易失性存儲(chǔ)器實(shí)現(xiàn)在物理層級(jí))的數(shù)據(jù)轉(zhuǎn)移,例如通過代碼834做出對(duì)其適當(dāng)?shù)暮瘮?shù)調(diào)用。這一轉(zhuǎn)移再次由系統(tǒng)軟件812中介。

分布式平臺(tái)的示例包括windowsazure(tm)、amazon網(wǎng)絡(luò)服務(wù)(tm)等。

ciccscmn系統(tǒng)是根據(jù)一組原則和設(shè)計(jì)模式的集合設(shè)計(jì)和實(shí)現(xiàn)的,其核心在于中央控制和決策制定(與例如端點(diǎn)控制和關(guān)于圖1和圖2所討論的sip的決策制定正相反)。它包括很多服務(wù)邏輯,每個(gè)服務(wù)邏輯由云平臺(tái)的一個(gè)或多個(gè)虛擬計(jì)算機(jī)系統(tǒng)上執(zhí)行的應(yīng)用代碼來實(shí)現(xiàn),那些虛擬計(jì)算機(jī)系統(tǒng)不同于該云平臺(tái)的其它服務(wù)邏輯的計(jì)算機(jī)系統(tǒng)(也就是,這樣不同服務(wù)邏輯就由該云平臺(tái)的各自不同虛擬計(jì)算機(jī)系統(tǒng)上執(zhí)行的不同應(yīng)用代碼集合來實(shí)現(xiàn))。

服務(wù)邏輯可以根據(jù)類型分組(每個(gè)類型有多個(gè)服務(wù)邏輯)。每個(gè)類型的服務(wù)邏輯被配置為—通過與構(gòu)成終端用戶通信客戶端應(yīng)用的一部分的相同類型的其它服務(wù)邏輯和服務(wù)代理交互—控制使用該客戶端的通信系統(tǒng)上進(jìn)行的實(shí)時(shí)媒體通信事件(例如,av呼叫)的不同方面。

中央控制和決策制定并不是由單個(gè)服務(wù)邏輯或軟件組件實(shí)現(xiàn)的,而是由不同類型的多個(gè)獨(dú)立的服務(wù)邏輯(控制器)實(shí)現(xiàn)的,它們共同工作以控制并輔助任何給定的實(shí)時(shí)媒體通信事件。所述服務(wù)是解耦合的,具有明確定義的邊界和接口。針對(duì)呼叫建立和相應(yīng)的媒體建立,以及在呼叫進(jìn)行的同時(shí)對(duì)這些的控制,如下定義了并在表1中列出了下面的服務(wù)分組(服務(wù)的類型):

-第一類型:呼叫控制(監(jiān)督信令、呼叫狀態(tài)、控制—控制是通過信令的變化狀態(tài)的復(fù)合)

-第二和第三類類型:傳輸控制和管道控制(監(jiān)督拓?fù)?、端點(diǎn)連接/管道管理、媒體流和分組化、線路上的加密)。傳輸處理整個(gè)端點(diǎn)拓?fù)?,并且指示管道在呼叫的拓?fù)渲械亩它c(diǎn)之間建立連接。

-第四類型:音頻媒體控制(監(jiān)督音頻編解碼器選擇、音頻特定變量管理、端點(diǎn)音頻控制(例如,靜音))

-第五類型:視頻媒體控制(視頻編解碼器選擇、視頻特定變量管理、端點(diǎn)視頻控制(例如,啟用/禁用視頻))

表1

任何給定呼叫通常將在該呼叫期間的任何給定時(shí)間由每類服務(wù)邏輯中的一個(gè)(也就是,每個(gè)分組中的一個(gè))控制(雖然該類型的個(gè)體服務(wù)邏輯在某些條件下遭受呼叫過程中的變化)。

服務(wù)邏輯暴露接口-例如,restful(“代表性狀態(tài)轉(zhuǎn)移”)接口—用于與相互和/或與它們各自的代理通信。rest是一種抽象了分布式超媒體中的架構(gòu)元件的架構(gòu)風(fēng)格,在較高的抽象水平抽象處理元件(即,執(zhí)行運(yùn)行時(shí)功能的元件—在當(dāng)前上下文中包括服務(wù)邏輯和服務(wù)代理);數(shù)據(jù)元件(即,由處理元件處理的數(shù)據(jù)—在這一上下文中包括實(shí)時(shí)媒體通信事件數(shù)據(jù)和相關(guān)聯(lián)的控制數(shù)據(jù));以及連接元件(即,在這一上下文中有助于通信系統(tǒng)中的處理元件之間通信的機(jī)制)。rest忽略了處理元件實(shí)現(xiàn)和協(xié)議語法的細(xì)節(jié),以便聚焦在處理元件的角色、它們與其它組件的交互上的約束和它們對(duì)重要數(shù)據(jù)元件的解釋上。

服務(wù)被具有基本不相交的職權(quán)(即,在不同類型的服務(wù)邏輯所執(zhí)行的任務(wù)之間有最小化的重疊或沒有重疊)的不同類型的服務(wù)邏輯“劃分邊界”:如果由第一類服務(wù)邏輯的第一服務(wù)的控制迫使必須執(zhí)行第二類服務(wù)邏輯的職權(quán)中的任務(wù),則該服務(wù)邏輯將請(qǐng)求該第二類型的第二服務(wù)邏輯代替執(zhí)行該任務(wù),而不是它自己去執(zhí)行該任務(wù)。服務(wù)間請(qǐng)求是高層級(jí)請(qǐng)求,在該請(qǐng)求中它們不指定低層級(jí)的實(shí)現(xiàn)細(xì)節(jié)(也就是,它們只請(qǐng)求完成特定任務(wù),而不指定如何完成它的低層級(jí)細(xì)節(jié))。然后,一旦該任務(wù)完成則該第二服務(wù)邏輯通知第一服務(wù)邏輯,還是無需傳輸任何關(guān)于如何完成該任務(wù)的低層級(jí)細(xì)節(jié)。例如,第一服務(wù)邏輯可以請(qǐng)求第二服務(wù)邏輯建立一些用于從一個(gè)端點(diǎn)向另一個(gè)(位于第二服務(wù)邏輯的職權(quán)內(nèi))傳輸數(shù)據(jù)的機(jī)制;然后該第二服務(wù)邏輯可以處理該請(qǐng)求的所有低層級(jí)細(xì)節(jié),例如選擇連接協(xié)議、找到穿過該網(wǎng)絡(luò)的路徑、根據(jù)所述協(xié)議建立并維護(hù)跨越該路徑的連接等等。一旦被通知這一機(jī)制的建立,第一服務(wù)邏輯可以利用該機(jī)制,同時(shí)低層級(jí)實(shí)現(xiàn)細(xì)節(jié)還是對(duì)其保持很大程度上不可見。

定義了規(guī)則或“合同”,其針對(duì)每對(duì)服務(wù)邏輯指定該對(duì)服務(wù)邏輯在其中應(yīng)該和不應(yīng)該相互直接通信的環(huán)境,針對(duì)每個(gè)服務(wù)及其相應(yīng)代理指定該服務(wù)和該代理在其中應(yīng)該和不應(yīng)該直接相互通信的環(huán)境。合同本質(zhì)上定義了每個(gè)服務(wù)在接口方面暴露什么,負(fù)責(zé)什么以及限制是什么。

建立實(shí)時(shí)音頻和視頻呼叫(本申請(qǐng)中簡稱為“視頻呼叫”)是由遞送這些業(yè)務(wù)的各自服務(wù)邏輯執(zhí)行的,其通過例如呼叫控制服務(wù)邏輯的restful接口接收到或發(fā)起的命令而實(shí)現(xiàn)。這一命令使得在云中創(chuàng)建該呼叫的“呼叫表示”,它包括以呼叫參數(shù)形式的“呼叫狀態(tài)”以及由該呼叫控制服務(wù)邏輯在該呼叫的持續(xù)過程種存儲(chǔ)并維護(hù)的信息。拋開該服務(wù)邏輯的失敗,這是該呼叫唯一權(quán)威性的實(shí)例和狀態(tài)表示;接收到的關(guān)于該特定呼叫的任何后續(xù)命令造成由呼叫控制服務(wù)邏輯在其表示上執(zhí)行可能的狀態(tài)修改,并且這一變化被傳輸給任何感興趣的端點(diǎn)/參與方/訂戶。

作為呼叫建立和控制的一部分,需要協(xié)商并控制媒體,并且建立傳輸機(jī)制以允許媒體數(shù)據(jù)分組在端點(diǎn)之間流動(dòng)。這通過呼叫控制服務(wù)邏輯調(diào)用其它控制服務(wù)邏輯(傳輸、管道、音頻、視頻)暴露出來的接口通知它們?cè)摵艚胁⒅甘舅鼈儓?zhí)行在端點(diǎn)之間建立該呼叫的步驟來實(shí)現(xiàn)。這一服務(wù)間交互的模型使得各種服務(wù)做任何必要的事情以做出相關(guān)決定,指示它們的端點(diǎn)代理執(zhí)行動(dòng)作,提供變量數(shù)據(jù)和上下文—向呼叫控制服務(wù)和任何其它有關(guān)的服務(wù)邏輯報(bào)告準(zhǔn)備就緒。一旦各種服務(wù)已經(jīng)完成并且都報(bào)告準(zhǔn)備就緒,該呼叫控制服務(wù)邏輯更新呼叫狀態(tài)并將該呼叫的更新后的狀態(tài)傳輸給所有連接的端點(diǎn)(以及任何其它感興趣的組件),以允許連接該呼叫并且允許媒體流動(dòng)。

在該呼叫期間,將由端點(diǎn)和代理向各個(gè)服務(wù)發(fā)送信號(hào)—用于控制呼叫參與的主要方面,這是通過呼叫控制服務(wù)邏輯進(jìn)行的,但是如果服務(wù)之間的合同沒有被破壞,服務(wù)代理能夠獨(dú)立地使用它們各自的接口根據(jù)需要與它們相應(yīng)的相同的服務(wù)邏輯通話。

還應(yīng)該注意的是,服務(wù)被認(rèn)為擁有基于云的組件和元件以及端點(diǎn)服務(wù)代理(如果該服務(wù)要求的)二者。云服務(wù)也擁有端點(diǎn)合同(或代理)。

現(xiàn)在將參照?qǐng)D3描述根據(jù)本發(fā)明的主題的通信系統(tǒng)300。通信系統(tǒng)300包括基于分組的通信網(wǎng)絡(luò)(這里是計(jì)算機(jī)網(wǎng)絡(luò))301(例如,互聯(lián)網(wǎng))。連接到網(wǎng)絡(luò)300的是與第一用戶302a(“alice”)相關(guān)聯(lián)的用戶設(shè)備(用戶終端)304a和與第二用戶302b(“bob”)相關(guān)聯(lián)的其它用戶設(shè)備(用戶終端)204b。用戶設(shè)備304a、304b被布置為從各自設(shè)備的用戶接收信息并向其輸出信息。雖然在圖3中只顯示了兩個(gè)用戶設(shè)備,但是通信系統(tǒng)300中可以包括更多的用戶設(shè)備。用戶設(shè)備304a、304b中的每一個(gè)可以是,例如移動(dòng)電話(例如,智能電話)、平板電腦、筆記本電腦、個(gè)人計(jì)算機(jī)(“pc”)(包括,例如windowstm、macostm和linuxtmpc)、游戲設(shè)備、個(gè)人數(shù)字助理(“pda”)或能夠連接到該網(wǎng)絡(luò)301的其它嵌入式設(shè)備。

同時(shí)連接到網(wǎng)絡(luò)301的還有多個(gè)數(shù)據(jù)中心(dc)320a、320b,…,320c和業(yè)務(wù)管理系統(tǒng)330,該業(yè)務(wù)管理系統(tǒng)是計(jì)算機(jī)系統(tǒng)。業(yè)務(wù)管理系統(tǒng)330包括一個(gè)或多個(gè)存儲(chǔ)器設(shè)備334和一個(gè)或多個(gè)處理器,所述處理器被配置為執(zhí)行業(yè)務(wù)管理代碼332(業(yè)務(wù)管理器/業(yè)務(wù)管理邏輯)以便如下面更詳細(xì)描述的管理數(shù)據(jù)中心業(yè)務(wù)。業(yè)務(wù)管理系統(tǒng)330和數(shù)據(jù)中心320構(gòu)成分布式平臺(tái)800的一部分。

通信系統(tǒng)300用于實(shí)現(xiàn)通過通信網(wǎng)絡(luò)301連接的多個(gè)端點(diǎn)之間的通信事件(例如,av呼叫)。該端點(diǎn)可以是用戶設(shè)備(例如,304a、304b)和/或其它計(jì)算機(jī)設(shè)備/計(jì)算機(jī)系統(tǒng)(例如,服務(wù)器或者橋接)。通信系統(tǒng)300包括多個(gè)處理單元,每個(gè)處理單元具有對(duì)保存用于管理通信事件的可執(zhí)行(應(yīng)用)代碼模塊的計(jì)算機(jī)存儲(chǔ)器的訪問。如下面更詳細(xì)討論的,所述代碼模塊被配置為實(shí)現(xiàn):

-呼叫控制器,其被配置為建立通信事件并管理已建立的通信事件;

-一個(gè)或多個(gè)媒體模態(tài)控制器(例如,音頻控制器、視頻控制器),其被配置為管理已建立的通信事件(其包括例如在該通信事件的建立期間與端點(diǎn)協(xié)商媒體模態(tài)參數(shù))的各自媒體模態(tài)(例如,音頻、視頻);

-傳輸控制器,其被配置為管理端點(diǎn)之間通信事件的媒體的傳輸(其包括,例如在該通信事件的建立期間與端點(diǎn)協(xié)商傳輸參數(shù),以及控制管道控制器);以及

-管道控制器,其被配置為針對(duì)所述傳輸控制器的控制下的所述媒體傳輸在各對(duì)所述端點(diǎn)之間創(chuàng)建管道(在通信事件的建立期間)。

任何一個(gè)或多個(gè)所述控制器可以是虛擬控制器,如下面解釋的。

處理單元跨多個(gè)容錯(cuò)區(qū)域分布,并且計(jì)算機(jī)存儲(chǔ)器被劃分到多個(gè)容錯(cuò)區(qū)域中。容錯(cuò)區(qū)域是實(shí)質(zhì)上與任何其它容錯(cuò)區(qū)域中的組件(硬件和軟件)的故障隔離的區(qū)域。示例包括數(shù)據(jù)中心中的不同故障域(下面討論的)、不同數(shù)據(jù)中心(數(shù)據(jù)中心定義各自的容錯(cuò)區(qū)域)、不同地理位置(地理位置定義各自的容錯(cuò)區(qū)域)。在這一實(shí)施例中,處理單元是聯(lián)網(wǎng)服務(wù)器的處理單元。所述服務(wù)器遍布多個(gè)數(shù)據(jù)中心分布(并且遍布每個(gè)數(shù)據(jù)中心中的不同故障域)。該通信系統(tǒng)包括多個(gè)控制服務(wù)器,每個(gè)控制服務(wù)器被配置為控制各自組的一個(gè)或多個(gè)所述聯(lián)網(wǎng)服務(wù)器的操作。每個(gè)控制服務(wù)器被配置為響應(yīng)于從網(wǎng)絡(luò)接收至少一個(gè)可執(zhí)行代碼模塊,將接收到的代碼模塊存儲(chǔ)在計(jì)算機(jī)存儲(chǔ)器中,因此所述存儲(chǔ)的代碼模塊是對(duì)該控制服務(wù)器控制的一個(gè)或多個(gè)服務(wù)器可訪問的。響應(yīng)于從網(wǎng)絡(luò)接收到代碼模塊,該控制服務(wù)器被配置為在服務(wù)器上實(shí)例化虛擬機(jī),因此該虛擬機(jī)響應(yīng)于接收到的指令以在該虛擬機(jī)上實(shí)例化該代碼模塊。該控制服務(wù)器被配置為在一個(gè)或多個(gè)服務(wù)器上實(shí)例化多個(gè)虛擬機(jī),因此每個(gè)虛擬機(jī)響應(yīng)于接收到的指令以實(shí)例化相同的代碼模塊。

在這一實(shí)施例中,如下面更詳細(xì)描述的,每個(gè)所述處理單元被配置為運(yùn)行多個(gè)虛擬機(jī),每個(gè)所述虛擬機(jī)具有對(duì)至少一個(gè)所述代碼模塊的訪問,因此該代碼模塊的一個(gè)或多個(gè)實(shí)例運(yùn)行在該虛擬機(jī)上。但是,在替代實(shí)施例中,一些或所有處理單元可以不運(yùn)行虛擬機(jī)并且代碼模塊可以“直接”在那些處理單元上執(zhí)行(例如,在“直接”運(yùn)行在該處理單元上的操作系統(tǒng)之上)。

0.2用戶設(shè)備

圖4描繪了用戶設(shè)備304(諸如用戶設(shè)備304a和304b)的詳細(xì)視圖。用戶設(shè)備114包括中央處理單元(“cpu”)402,連接到該cpu的有:輸出設(shè)備,諸如可以實(shí)現(xiàn)為觸摸屏的顯示器404,以及用于輸出音頻信號(hào)的揚(yáng)聲器(或“擴(kuò)音器”)410;輸入設(shè)備,諸如用于接收音頻信號(hào)的麥克風(fēng)426,用于接收?qǐng)D像數(shù)據(jù)的相機(jī)408,以及小鍵盤406;用于存儲(chǔ)數(shù)據(jù)的存儲(chǔ)器426;以及用于與網(wǎng)絡(luò)301通信的諸如調(diào)制解調(diào)器之類的網(wǎng)絡(luò)接口424。用戶設(shè)備114可以包括除了圖4中示出的那些之外的其它元件。顯示器404、揚(yáng)聲器410、麥克風(fēng)412、存儲(chǔ)器426、相機(jī)408、小鍵盤406和網(wǎng)絡(luò)接口424可以整合到用戶設(shè)備304中。作為替代,一個(gè)或多個(gè)顯示器404、揚(yáng)聲器410、麥克風(fēng)412、存儲(chǔ)器426、相機(jī)408、小鍵盤406和網(wǎng)絡(luò)接口424也可以不整合到該用戶設(shè)備中,而是通過各自的接口連接到cpu402。這種接口的一個(gè)示例就是usb接口。如果用戶設(shè)備304通過網(wǎng)絡(luò)接口424到網(wǎng)絡(luò)301的連接是無線連接,則網(wǎng)絡(luò)接口424可以包括用于向互聯(lián)網(wǎng)301無線地發(fā)送信號(hào)和從互聯(lián)網(wǎng)301無線地接收信號(hào)的天線。

圖4還描繪了cpu402上執(zhí)行的操作系統(tǒng)(“os”)414。在os414之上運(yùn)行的是通信系統(tǒng)300的通信客戶端應(yīng)用(客戶端)的實(shí)例416,顯示為軟件棧??蛻舳?16與操作系統(tǒng)414通信并且管理該通信系統(tǒng)300上的連接,包括與其它用戶設(shè)備和與數(shù)據(jù)中心320的連接??蛻舳?16有客戶端用戶界面(“ui”),其用于向設(shè)備的用戶呈現(xiàn)信息和從該用戶接收信息。以此方式,客戶端416執(zhí)行允許用戶(例如,alice、bob)通過該通信系統(tǒng)300進(jìn)行通信所需要的處理。該軟件棧顯示了客戶端協(xié)議層418、客戶端引擎層420和客戶端用戶界面層422。每一層負(fù)責(zé)具體功能。由于每一層通常與其它兩層通信,因此它們可以被視為布置在如圖4中所示的棧中。操作系統(tǒng)414管理設(shè)備304的硬件資源,并處理通過網(wǎng)絡(luò)接口424向和從網(wǎng)絡(luò)301發(fā)送的數(shù)據(jù)。該客戶端軟件的客戶端協(xié)議層418與操作系統(tǒng)414通信并管理該通信系統(tǒng)300上的連接。要求更高層級(jí)處理的處理被傳遞給客戶端引擎層420。客戶端引擎420還與客戶端用戶界面層422通信。該客戶端引擎420被布置為控制客戶端用戶界面層334通過客戶端的用戶界面向用戶呈現(xiàn)信息,以及通過該用戶界面從該用戶接收信息。

客戶端引擎層包括多個(gè)服務(wù)代理421。每個(gè)服務(wù)代理處理實(shí)時(shí)媒體通信事件(例如,呼叫)的不同方面;所述多個(gè)服務(wù)代理累積起來使用戶能夠通過客戶端用戶界面進(jìn)行這一實(shí)時(shí)媒體通信事件。這將在下面更詳細(xì)地進(jìn)行描述。每個(gè)服務(wù)代理有相應(yīng)的api(例如,c++api),并且所述代理通過那些api相互通信。代理是定義端點(diǎn)如何與每個(gè)服務(wù)交互(并且有時(shí)是相互交互)的端點(diǎn)/客戶端邏輯實(shí)現(xiàn)。

0.3數(shù)據(jù)中心結(jié)構(gòu)

圖5a是數(shù)據(jù)中心320(例如,圖3中的數(shù)據(jù)中心320a、320b、320c)的示意圖。該數(shù)據(jù)中心包括多個(gè)服務(wù)器544、504a、504b、504c;網(wǎng)絡(luò)基礎(chǔ)設(shè)施580,其連接到網(wǎng)絡(luò)310用于通過網(wǎng)絡(luò)301在該數(shù)據(jù)中心320中的聯(lián)網(wǎng)設(shè)備和該數(shù)據(jù)中心外部的設(shè)備之間交換數(shù)據(jù)分組;以及電力基礎(chǔ)設(shè)施590,用于為該數(shù)據(jù)中心的設(shè)備供電。服務(wù)器504a、504b和服務(wù)器502c分別由電源592和電源592’(它們自身由電力基礎(chǔ)設(shè)施590供電)供電。該數(shù)據(jù)中心還包括連接到網(wǎng)絡(luò)基礎(chǔ)設(shè)施580的數(shù)據(jù)中心業(yè)務(wù)管理系統(tǒng)588,用于接收從網(wǎng)絡(luò)301發(fā)往該數(shù)據(jù)中心320的流入業(yè)務(wù)并將所述業(yè)務(wù)遍布服務(wù)器504a、504b、504c分布,并且用于將來自數(shù)據(jù)中心320的一個(gè)服務(wù)器(例如,504a)的內(nèi)部業(yè)務(wù)跨該數(shù)據(jù)中心320的其它服務(wù)器(例如,504b、504c)分布。dc業(yè)務(wù)管理系統(tǒng)可以包括諸如硬件負(fù)載均衡器之類的組件,以及在適當(dāng)計(jì)算機(jī)系統(tǒng)處執(zhí)行的軟件或它們的組合。

服務(wù)器504a、504b、504c的每一個(gè)包括各自的處理器506a、506b、506c,它們連接到各自的用于存儲(chǔ)數(shù)據(jù)的存儲(chǔ)器514a、514b、514c和各自的用于與其它聯(lián)網(wǎng)設(shè)備交換數(shù)據(jù)的網(wǎng)絡(luò)接口584a、584b、584c。網(wǎng)絡(luò)接口584a和584b連接到網(wǎng)絡(luò)開關(guān)582,它能夠使服務(wù)器504a和504b通過該開關(guān)582相互地或與連接到該開關(guān)582的任何其它服務(wù)器(未示出)直接交換數(shù)據(jù)。網(wǎng)絡(luò)接口584c連接到網(wǎng)絡(luò)開關(guān)582’,它能夠使服務(wù)器504c通過該開關(guān)582’直接與連接到該開關(guān)582’的任何其它服務(wù)器(未示出)交換數(shù)據(jù)。開關(guān)582連接到網(wǎng)絡(luò)基礎(chǔ)設(shè)施582,它也能夠使服務(wù)器504a、504b和連接到開關(guān)582的任何其它服務(wù)器(未示出)與連接到該網(wǎng)絡(luò)基礎(chǔ)設(shè)施的其它設(shè)備(例如,通過諸如開關(guān)582’之類的其它開關(guān)連接的設(shè)備)以及與連接到網(wǎng)絡(luò)301的其它設(shè)備交換數(shù)據(jù)。開關(guān)582’類似地連接使得服務(wù)器504c能夠參與類似的數(shù)據(jù)交換。

服務(wù)器544是該數(shù)據(jù)中心的控制服務(wù)器:它負(fù)責(zé)控制和監(jiān)測該數(shù)據(jù)中心中的其它服務(wù)器??刂品?wù)器544由電源595供電,而該電源自身由電力基礎(chǔ)設(shè)施590供電??刂品?wù)器544包括處理器546,其連接到用于存儲(chǔ)數(shù)據(jù)的存儲(chǔ)器554和用于與其它聯(lián)網(wǎng)設(shè)備交換數(shù)據(jù)的網(wǎng)絡(luò)接口586。網(wǎng)絡(luò)接口586連接到網(wǎng)絡(luò)基礎(chǔ)設(shè)施580,它能夠使控制服務(wù)器544與連接到該網(wǎng)絡(luò)基礎(chǔ)設(shè)施的其它設(shè)備(包括服務(wù)器504a、504b、504c)以及與連接到網(wǎng)絡(luò)301的其它設(shè)備(例如,圖3中的304a、304b)交換數(shù)據(jù)。

服務(wù)器504a、504b、504c被分組到各自的“故障域”502、502’中,故障域是一組共享公共故障點(diǎn)的服務(wù)器(也就是,針對(duì)操作依賴于相同物理電子組件的服務(wù)器,其故障因此抑制所有那些服務(wù)器的操作)。例如,服務(wù)器504a和504b通過網(wǎng)絡(luò)開關(guān)582連接到網(wǎng)絡(luò)基礎(chǔ)設(shè)施580,該網(wǎng)絡(luò)開關(guān)對(duì)服務(wù)器508a、508b二者是公用的;這一開關(guān)582的故障會(huì)造成服務(wù)器504a、504b的每一個(gè)以及連接到該開關(guān)的任何其它服務(wù)器的故障,因?yàn)樗羞@些服務(wù)器都會(huì)從網(wǎng)絡(luò)基礎(chǔ)設(shè)施580斷開連接并且在那種情況下繼而從網(wǎng)絡(luò)301斷開連接。因此可以說網(wǎng)絡(luò)開關(guān)582將故障域定義為連接到該開關(guān)582的所有服務(wù)器的分組。類似地,服務(wù)器504a和504b二者都由電源592供電,而該電源自身由電力基礎(chǔ)設(shè)施509供電;這一電源592的故障會(huì)造成服務(wù)器504a、504b的每一個(gè)和該電源592供電的任何其它服務(wù)器的故障。因此可以說電源592將故障域定義為該電源592供電的所有服務(wù)器的分組。在圖5a中,示出的連接到開關(guān)582的每個(gè)服務(wù)器也顯示為由電源592供電,因此圖5a的開關(guān)582和電源592定義了公共故障域502;一般來講,相同電源供電的服務(wù)器可以連接到不同網(wǎng)絡(luò)開關(guān),反之亦然。類似地,圖5a示出了由網(wǎng)絡(luò)開關(guān)582’和電源592’二者特征化的第二故障域502’。故障域502’的服務(wù)器504c顯示為連接到開關(guān)582’和電源592’。數(shù)據(jù)中心320包括同時(shí)在故障域502、502’中和由額外的網(wǎng)絡(luò)開關(guān)、電源和其它物理組件(未示出)特征化的其它故障域中的額外的服務(wù)器(可能有幾千個(gè))。

圖5b示出了控制服務(wù)器546和服務(wù)器504(例如,504a、504b、504c)的示意圖??刂品?wù)器546的處理器執(zhí)行操作系統(tǒng)(os)550。該操作系統(tǒng)550管理控制服務(wù)器544的硬件資源并處理通過網(wǎng)絡(luò)接口586發(fā)送的數(shù)據(jù)。運(yùn)行在os550之上的是采用數(shù)據(jù)中心控制軟件(代碼)形式的數(shù)據(jù)中心管理器塊552。數(shù)據(jù)中心管理器552與操作系統(tǒng)550通信并管理與該數(shù)據(jù)中心的其它服務(wù)器和與連接到網(wǎng)絡(luò)301的其它設(shè)備的連接。數(shù)據(jù)中心管理器包括數(shù)據(jù)中心控制和監(jiān)測塊(dc控制塊)556,資源報(bào)告塊558和外部控制塊559。該dc控制塊556負(fù)責(zé)監(jiān)測該數(shù)據(jù)中心中的其它服務(wù)器(例如,504)的資源利用并且控制所述服務(wù)器的操作。dc控制塊將通過這一監(jiān)測獲取的信息提供給資源報(bào)告塊558。資源報(bào)告塊558負(fù)責(zé)通過網(wǎng)絡(luò)301報(bào)告遍及dc的資源使用情況(即,關(guān)于該數(shù)據(jù)中心的物理資源的整個(gè)使用情況的信息)。外部控制塊559被配置為從網(wǎng)絡(luò)301接收配置信息并將該信息傳輸給dc控制塊556。作為響應(yīng),dc控制塊556被配置為依此控制數(shù)據(jù)中心320的操作。

服務(wù)器504的處理器506執(zhí)行超管理器512。在本上下文中,超管理器是創(chuàng)建、運(yùn)行并管理虛擬機(jī)(通常多于一個(gè))的一片計(jì)算機(jī)軟件。在本上下文中,“虛擬機(jī)”(vm)是具有第一計(jì)算機(jī)架構(gòu)的第一計(jì)算機(jī)系統(tǒng)的軟件實(shí)現(xiàn)(或“模擬”),其運(yùn)行在具有不同于該第一計(jì)算機(jī)架構(gòu)的第二計(jì)算機(jī)架構(gòu)的第二計(jì)算機(jī)系統(tǒng)上。換句話說,vm具有它自己的計(jì)算機(jī)架構(gòu),其可以非常不同于該vm最終運(yùn)行在其上的任何底層物理計(jì)算機(jī)系統(tǒng)(例如,服務(wù)器504)的計(jì)算機(jī)架構(gòu)。超管理器運(yùn)行多個(gè)vm時(shí),每個(gè)vm可以具有不同于其它vm的各自的計(jì)算機(jī)結(jié)構(gòu)。vm通常支持代碼在其上的執(zhí)行(例如,應(yīng)用或可以在其上執(zhí)行應(yīng)用的操作系統(tǒng)的執(zhí)行)。vm可以被設(shè)計(jì)為模擬現(xiàn)有類型的“現(xiàn)實(shí)”計(jì)算機(jī)系統(tǒng)(也就是,vm可以具有存在直接硬件實(shí)現(xiàn)方案的虛擬計(jì)算機(jī)架構(gòu)),或者它可以被設(shè)計(jì)為模擬“假設(shè)的”計(jì)算機(jī)系統(tǒng)(也就是,vm可以具有不存在直接硬件實(shí)現(xiàn)方案的計(jì)算機(jī)架構(gòu))。

例如,虛擬機(jī)可以包括具有特定指令集架構(gòu)的模擬處理器;要在該虛擬機(jī)上執(zhí)行的代碼首先被編譯到低層級(jí)機(jī)器代碼指令的序列中,這些指令是根據(jù)該模擬處理器的指令集架構(gòu)的(即,具有由其指定的操作碼和操作對(duì)象)。但是,這些機(jī)器代碼指令并不在物理處理器本身上執(zhí)行;而是由超管理器執(zhí)行進(jìn)一步的指令翻譯,最終得到要在該超管理器(以及因此的模擬處理器)在其上執(zhí)行的底層物理計(jì)算機(jī)系統(tǒng)的一個(gè)或多個(gè)物理處理器(例如,處理器506)上執(zhí)行的低層級(jí)機(jī)器代碼指令,那些指令是根據(jù)討論中的該物理處理器(與模擬處理器正相對(duì))的指令集結(jié)構(gòu)的(即,具有由其指定的操作碼和操作對(duì)象)。針對(duì)更小尺寸的vm,vm可以共享物理處理器;針對(duì)更大的vm,這些應(yīng)該是專用的。

超管理器512被配置為運(yùn)行一個(gè)根(父)vm508和一個(gè)或多個(gè)客人(子)vm510。該根vm執(zhí)行操作系統(tǒng)520,并且每個(gè)客人vm510i、512i執(zhí)行各自的操作系統(tǒng)520i、520ii。適當(dāng)操作系統(tǒng)的一個(gè)示例是windows服務(wù)器2012tm。在根os520之上執(zhí)行代碼形式的主控制塊522,其被配置為(除了別的之外)能夠創(chuàng)建并終止客人vm510并通過調(diào)用該超管理器的適當(dāng)應(yīng)用編程接口(api)(未示出)在其上發(fā)起os510的啟動(dòng)。在每個(gè)客人os510i、510ii之上執(zhí)行各自的代碼形式的客人控制塊532i、532ii,以及使得其各自vm510i、510ii執(zhí)行多于或超出該vm自身的運(yùn)行的有用任務(wù)的各自應(yīng)用代碼534i、534ii(例如,軟件開發(fā)者的訂制代碼)。每個(gè)客人控制塊532被配置為(除了別的之外)能夠促使應(yīng)用代碼模塊的執(zhí)行(即,實(shí)例化該應(yīng)用代碼模塊以創(chuàng)建其實(shí)例)并且終止該vm上的應(yīng)用代碼模塊的執(zhí)行(即,退役那些應(yīng)用代碼實(shí)例)。每個(gè)os520被配置為在該os520啟動(dòng)時(shí)自動(dòng)發(fā)起相應(yīng)客人控制塊532的執(zhí)行??腿藇m可以替代地或另外地被配置為數(shù)據(jù)訪問單元(未示出)—見上文。至少一些應(yīng)用代碼模塊用于管理一個(gè)或多個(gè)通信事件(例如,呼叫)。

控制服務(wù)器544的dc控制塊和根vm508的根控制塊能夠經(jīng)由圖5b中虛線指示的網(wǎng)絡(luò)基礎(chǔ)設(shè)施580相互通信,例如通過適當(dāng)api的使用。由根vm進(jìn)行的客人vm的創(chuàng)建和終止是在控制服務(wù)器544的dc控制塊556的命令下進(jìn)行。dc控制塊556還可以向根控制塊522指示應(yīng)該在該虛擬機(jī)的子vm上要執(zhí)行什么應(yīng)用塊,例如通過提供該代碼的標(biāo)識(shí)符或可以用于例如從網(wǎng)絡(luò)301下載代碼的地址。vm510可以運(yùn)行一個(gè)或多個(gè)應(yīng)用代碼模塊的一個(gè)或多個(gè)實(shí)例。

如本文中所指出的,配置信息經(jīng)由網(wǎng)絡(luò)301被上傳到數(shù)據(jù)中心320;這一配置信息由外部控制塊559接收到。每一片控制信息與在子vm520上執(zhí)行的代碼有關(guān)和/或與該應(yīng)用代碼要在其上執(zhí)行的該子vm520(即,一個(gè)或多個(gè)應(yīng)用代碼模塊要在其上實(shí)例化)的一個(gè)或多個(gè)期望屬性有關(guān)。

根控制塊508能夠與每個(gè)客人控制塊532通信并且反之亦然,例如經(jīng)由超管理器530—再次在圖5b中用虛線示出。一旦已經(jīng)由根控制塊508在dc控制塊556的命令下創(chuàng)建了客人vm510,該根控制塊指令客人控制代碼發(fā)起應(yīng)用代碼的執(zhí)行,例如響應(yīng)于從根控制塊522接收應(yīng)用代碼534的地址或標(biāo)識(shí)符(如dc控制塊556從配置信息所提供的),客人控制塊532使用該標(biāo)識(shí)符或地址下載該應(yīng)用代碼534以便在os530上執(zhí)行。

例如,應(yīng)用代碼可以由軟件開發(fā)者或系統(tǒng)設(shè)計(jì)者上傳到適當(dāng)網(wǎng)絡(luò)位置,并且該位置被作為配置信息傳輸?shù)娇刂品?wù)器544的外部控制塊559。然后,該外部控制塊559將該位置傳輸給dc控制塊556,作為響應(yīng),dc控制塊556指令根控制塊552在與根vm相同的服務(wù)器506上創(chuàng)建新的客人vm,并且將該代碼下載到該新創(chuàng)建的vm上,或者將該代碼下載到該服務(wù)器上的現(xiàn)有客人vm。

這些配置信息還可以包括指定應(yīng)用代碼要在其上執(zhí)行的子vm的屬性的信息。例如,該配置信息可以指定子vm應(yīng)該是“內(nèi)部可見的”(也就是,被配置為使得分布式平臺(tái)800的其它vm能夠經(jīng)由網(wǎng)絡(luò)301或經(jīng)由dc網(wǎng)絡(luò)基礎(chǔ)設(shè)施580與該vm建立邏輯連接)和/或“外部可見的”(也就是,被配置為使得例如連接到網(wǎng)絡(luò)301的304a、304b之類的設(shè)備能夠經(jīng)由網(wǎng)絡(luò)301與vm建立邏輯連接)。例如,該配置信息還可以指定一個(gè)或多個(gè)物理計(jì)算機(jī)資源各自要被分配給子vm510的部分(諸如量為例如兆字節(jié)、千兆字節(jié)等的存儲(chǔ)器和量為例如兆赫茲、千兆赫茲等的處理資源),該代碼要在該子vm上執(zhí)行。

經(jīng)由網(wǎng)絡(luò)310上傳到數(shù)據(jù)中心320的配置信息被存儲(chǔ)在控制服務(wù)器544的存儲(chǔ)器554中,并且這一存儲(chǔ)的配置信息是dc控制塊556可訪問的,并且(至少部分)對(duì)每個(gè)根vm和每個(gè)客人vm都是可訪問的。

只有根vm具有對(duì)服務(wù)器506的底層物理計(jì)算機(jī)資源(例如,處理器、存儲(chǔ)器)的直接訪問;其它客人vm經(jīng)由超管理器或經(jīng)由總線(也就是,邏輯vm間通信信道)通過根vm訪問這些信息。根vm522和超管理器512共同地被配置為管理對(duì)這些底層物理資源的訪問并共同地動(dòng)作以將這些物理資源的各個(gè)預(yù)定部分分配給每個(gè)客人vm,所述預(yù)定部分實(shí)質(zhì)上獨(dú)立于其它客人vm,即其它客人vm的任何行為或修改不會(huì)增加或減少該客人vm可使用的物理資源的部分。因此,每個(gè)客人vm(例如,510i)提供資源有限的運(yùn)行時(shí)環(huán)境,其實(shí)質(zhì)上與同一個(gè)處理器506上運(yùn)行的任何其它客人vm(例如,510ii)分離開。

客人vm510不經(jīng)由超管理器512直接相互通信,并且如上所討論的對(duì)彼此的可用物理資源有最小的影響(由超管理器的虛擬化提供這一實(shí)質(zhì)上的獨(dú)立性)。在這些方面,vm無視彼此的存在。也就是說,客人vm還是能被配置為經(jīng)由網(wǎng)絡(luò)基礎(chǔ)設(shè)施580相互通信,在dc內(nèi)(數(shù)據(jù)中心320中)和通過網(wǎng)絡(luò)301二者都可以。

如圖5b中所示,dc控制塊556還負(fù)責(zé)控制dc業(yè)務(wù)管理系統(tǒng)588以便在數(shù)據(jù)中心中管理針對(duì)從網(wǎng)絡(luò)301接收到的數(shù)據(jù)和經(jīng)由網(wǎng)絡(luò)基礎(chǔ)設(shè)施580交換的內(nèi)部數(shù)據(jù)二者的業(yè)務(wù)流。

每個(gè)子vm510上的子控制代碼532有兩個(gè)功能(除了別的之外):首先,它向其對(duì)應(yīng)的根vm發(fā)送周期性心跳;其次,它監(jiān)測該vm上執(zhí)行的應(yīng)用代碼532。如果發(fā)生應(yīng)用代碼故障,則該子控制代碼嘗試使用存儲(chǔ)的配置信息重新啟動(dòng)該應(yīng)用代碼。如果它無法這樣做,它將這一故障傳輸給對(duì)應(yīng)的根控制代碼522。此外,如果發(fā)生該子vm的故障,則來自子控制代碼532的心跳將會(huì)停止。響應(yīng)于這些事件之一,根控制532終止子vm510,然后使用如上所述的存儲(chǔ)的配置信息重新創(chuàng)建它(所述重新創(chuàng)建的vm因此加載并執(zhí)行與被終止的vm相同的應(yīng)用代碼)。

類似地,根控制代碼522向dc控制塊556發(fā)送周期性心跳。如果這些心跳停止,例如由于物理服務(wù)器504的硬件故障(例如,電源故障、網(wǎng)絡(luò)故障等等)或由于根控制代碼、超管理器等的軟件故障,該dc控制塊566假設(shè)該服務(wù)器上運(yùn)行的所有子vm都發(fā)生故障。作為響應(yīng),其使用存儲(chǔ)的配置信息在具有足夠可用物理資源的數(shù)據(jù)中心的一個(gè)或多個(gè)運(yùn)行的服務(wù)器上重新創(chuàng)建那些vm(如上所述),并且控制dc業(yè)務(wù)管理系統(tǒng)588相應(yīng)地將業(yè)務(wù)發(fā)送給所述重新創(chuàng)建的vm。

該分布式平臺(tái)800(包括多個(gè)這種數(shù)據(jù)中心320a、320b、320c等)可以因此適合于運(yùn)行多個(gè)服務(wù)邏輯,每個(gè)服務(wù)邏輯由執(zhí)行各自應(yīng)用代碼534的一個(gè)或多個(gè)客人虛擬機(jī)510實(shí)現(xiàn)。這些虛擬機(jī)可以遍布單個(gè)數(shù)據(jù)中心320分布和/或使用經(jīng)由網(wǎng)絡(luò)301(例如,互聯(lián)網(wǎng))傳輸?shù)臄?shù)據(jù)中心之間業(yè)務(wù)跨多個(gè)數(shù)據(jù)中心分布。

0.4服務(wù)邏輯的分層結(jié)構(gòu)

在下面描述的實(shí)施例中,控制服務(wù)邏輯(或者通篇中稱為“控制器”)(由運(yùn)行在分布式平臺(tái)上的虛擬機(jī)上執(zhí)行的應(yīng)用代碼實(shí)現(xiàn))被配置為遞送各自服務(wù)以支持(也就是,管理其至少一個(gè)方面)實(shí)時(shí)媒體通信事件。被配置為實(shí)現(xiàn)服務(wù)邏輯的代碼模塊以如上所描述的方式在虛擬機(jī)510上實(shí)例化。不同類型的服務(wù)邏輯被配置為遞送不同控制服務(wù)(不同服務(wù)是,例如呼叫控制、音頻控制、視頻控制、傳輸控制、管道控制),同時(shí)相同類型的服務(wù)邏輯被配置為遞送相同的服務(wù)(例如,呼叫控制、音頻控制、視頻控制、傳輸控制、管道控制中的一個(gè))。

每個(gè)類型的服務(wù)之一通常在實(shí)時(shí)媒體通信事件期間的任何給定時(shí)間將控制該事件的相應(yīng)方面。一旦創(chuàng)建通信事件,從每個(gè)類型的多個(gè)可能服務(wù)邏輯中選擇該類型的服務(wù)邏輯以支持該通信事件(例如,呼叫)。這一選擇是在業(yè)務(wù)管理系統(tǒng)330中響應(yīng)于從客戶端一側(cè)該類型服務(wù)代理(612,圖4)或從另一類型的另一個(gè)服務(wù)邏輯對(duì)該類型服務(wù)的請(qǐng)求所做出的。

響應(yīng)于針對(duì)該類型服務(wù)的這一請(qǐng)求,相同類型的服務(wù)邏輯的每一個(gè)能夠遞送相同的服務(wù)并且是可互換地可選擇的(然而不同類型的服務(wù)邏輯不是可互換地可選擇的)。例如,第一類型的每個(gè)服務(wù)邏輯可以響應(yīng)于來自向其發(fā)送的可能的請(qǐng)求消息的第一集合中的任何請(qǐng)求消息,并且第二類型的每個(gè)服務(wù)邏輯可以響應(yīng)于來自向其發(fā)送的可能的請(qǐng)求消息的第二集合中的任何請(qǐng)求消息,該第一和第二集合是不相交的或部分的。然后,這些服務(wù)邏輯的每一個(gè)在該呼叫的持續(xù)時(shí)間內(nèi)或直到該服務(wù)邏輯發(fā)生故障之前控制(即,為其提供控制服務(wù))該呼叫(如下討論的)。

通信系統(tǒng)300響應(yīng)于由啟動(dòng)程序以請(qǐng)求消息(例如,rest呼叫)的形式向服務(wù)邏輯發(fā)起(例如,通過相同類型的代理或通過不同類型的業(yè)務(wù)代理)并通過網(wǎng)絡(luò)301發(fā)送的指令。具體來講,通信系統(tǒng)300根據(jù)該指令(即,處理該指令)做出響應(yīng),指派該服務(wù)邏輯(如上所述實(shí)例化的)的實(shí)例(在vm510上)執(zhí)行與特定通信事件有關(guān)的操作。在這一實(shí)施例中,如下面更詳細(xì)解釋說明的,通過與特定服務(wù)邏輯相關(guān)聯(lián)的負(fù)載均衡器做出指派。

響應(yīng)于該實(shí)例向接收到的指令返回響應(yīng)(該響應(yīng)被返回給啟動(dòng)程序),可以從該指派釋放所述指派的實(shí)例。這一指令(請(qǐng)求)/響應(yīng)交換被稱為事務(wù)。本申請(qǐng)中“釋放”意為被分配給指派的實(shí)例以便使其能夠完成該事務(wù)的所有物理資源(處理資源、存儲(chǔ)器資源)被從其收回(例如,變得對(duì)其它這種事務(wù)可用)。在這一實(shí)施例中,那些物理資源是該vm在其上運(yùn)行的虛擬機(jī)的物理資源。實(shí)例一旦被如此釋放則不再被要求在單獨(dú)分配給其運(yùn)行在的vm的存儲(chǔ)器資源中維護(hù)關(guān)于該事務(wù)的任何信息(如下所解釋的,即使關(guān)于該事務(wù)的信息被存儲(chǔ)在別的地方),這樣該vm一旦被如此釋放就“忘記”該事務(wù)。該實(shí)例可以被配置為這樣被釋放(即,所述釋放被構(gòu)建到該應(yīng)用代碼中),或者該實(shí)例可以通過該通信系統(tǒng)的釋放邏輯被“強(qiáng)制”釋放(例如,被重新指派或被退役)。

該服務(wù)邏輯的實(shí)例是針對(duì)每個(gè)這種指令獨(dú)立指派的實(shí)例(例如,針對(duì)特定服務(wù)邏輯的多個(gè)實(shí)例、以輪詢方式或基于每個(gè)實(shí)例的可用資源),并且通信系統(tǒng)300響應(yīng)于這樣的進(jìn)一步指令以便獨(dú)立地指派該服務(wù)邏輯的該實(shí)例或另一個(gè)實(shí)例來處理該進(jìn)一步指令(響應(yīng)于該服務(wù)邏輯實(shí)例返回對(duì)所述進(jìn)一步指令的響應(yīng),從該指派釋放該服務(wù)邏輯實(shí)例)。

在這一實(shí)施例中,每個(gè)虛擬機(jī)510具有對(duì)呼叫控制器代碼模塊、媒體模態(tài)控制器代碼模塊(音頻或視頻之一,或二者)、傳輸控制器代碼模塊和管道控制器代碼模塊中的最多一個(gè)的訪問,這樣所述呼叫控制器、媒體模態(tài)控制器(音頻或視頻之一,或二者)、傳輸控制器或管道控制只有一個(gè)運(yùn)行在該虛擬機(jī)上。如上所討論的,每個(gè)所述處理單元被配置為執(zhí)行超管理器,該處理單元的虛擬機(jī)運(yùn)行在該超管理器之上。

每個(gè)服務(wù)邏輯具有分層結(jié)構(gòu),現(xiàn)在將參考圖6a和6b描述。如圖6a中所示,分布式平臺(tái)800適合于至少運(yùn)行第一類型的第一服務(wù)邏輯622[1]的第一分組602[1](也就是能夠遞送第一服務(wù)),和第二類型的第二服務(wù)邏輯622[2]的分組602[2](也就是能夠遞送第二服務(wù))。相同類型的服務(wù)邏輯獨(dú)立工作,因?yàn)橐粋€(gè)服務(wù)邏輯的服務(wù)的成功遞送確實(shí)要求該相同類型的其它服務(wù)邏輯中的任何一個(gè)都正確工作。雖然有相互依賴性,但是在針對(duì)一些層級(jí)的功能的解耦的/單獨(dú)的服務(wù)中也具有自主性—例如,一旦建立該初始呼叫,并且正在遞送模態(tài),則有元件完全處于該模態(tài)業(yè)務(wù)的控制和范圍之中,它們能夠在完全無需涉及其它服務(wù)的情況下被執(zhí)行。

用戶設(shè)備304的客戶端416包括每個(gè)類型的服務(wù)的服務(wù)代理612[1](第一類型)、612[2](第二類型)。服務(wù)代理612[1]能夠與第一類型服務(wù)邏輯622[1]的每一個(gè)直接通信,并且服務(wù)代理612[2]能夠與第二類型服務(wù)邏輯622[2]的每一個(gè)直接通信;特定類型的服務(wù)邏輯只與該相同類型的服務(wù)代理直接通信,并且不與其它類型的服務(wù)代理直接通信。但是,不同類型的服務(wù)邏輯能夠直接相互通信。每個(gè)服務(wù)代理612和每個(gè)服務(wù)邏輯622能夠與業(yè)務(wù)管理系統(tǒng)130通信。服務(wù)邏輯間通信以及服務(wù)邏輯和它們各自的代理之間的通信在一定程度上由業(yè)務(wù)管理系統(tǒng)330中介。下面將更詳細(xì)地討論。

如圖6b中所示,遞送特定服務(wù)的服務(wù)邏輯包括一個(gè)或多個(gè)互相依賴的組件642、652,它們串聯(lián)工作以遞送該服務(wù)。一般來講,服務(wù)邏輯的單個(gè)組件(例如,642、652中的一個(gè))的故障造成該服務(wù)邏輯的故障。在這一實(shí)施例中,每個(gè)服務(wù)邏輯實(shí)現(xiàn)在各自單獨(dú)的數(shù)據(jù)中心處(例如320a、320b、320c中的一個(gè)),并且每個(gè)任何給定類型的服務(wù)邏輯被實(shí)現(xiàn)在不同數(shù)據(jù)中心處(即,這樣沒有兩個(gè)相同類型的服務(wù)邏輯(例如,視頻服務(wù)邏輯)被實(shí)現(xiàn)在同一個(gè)數(shù)據(jù)中心處)。在替代實(shí)施例中,服務(wù)邏輯的組件可以遍布多個(gè)數(shù)據(jù)中心分布和/或相同類型的多個(gè)服務(wù)邏輯可以運(yùn)行在同一個(gè)數(shù)據(jù)中心處。此外,在圖6a中,每個(gè)數(shù)據(jù)中心實(shí)現(xiàn)每個(gè)類型的服務(wù)邏輯中的一個(gè),但這不是必要的,并且一些數(shù)據(jù)中心可以實(shí)現(xiàn)一些類型的服務(wù)邏輯而不實(shí)現(xiàn)其它的(例如,只實(shí)現(xiàn)音頻控制服務(wù)邏輯而不實(shí)現(xiàn)視頻控制服務(wù)邏輯)。

服務(wù)邏輯的每個(gè)組件包括負(fù)載均衡器648、658和執(zhí)行各自應(yīng)用代碼的實(shí)例535的一個(gè)或多個(gè)客人虛擬機(jī)510,其中負(fù)載均衡器被如上參考圖5b所描述的被配置為響應(yīng)于接收到的指令(請(qǐng)求消息)指派實(shí)例。該應(yīng)用代碼響應(yīng)于在該vm處接收到的請(qǐng)求消息,例如從用戶設(shè)備(例如,304a、304b)和不同數(shù)據(jù)中心處的其它服務(wù)邏輯等接收到的“外部”請(qǐng)求,或者從該服務(wù)邏輯的其它組件接收到的“內(nèi)部”請(qǐng)求。特定組件的每個(gè)vm運(yùn)行在相同的數(shù)據(jù)中心處,并且該組件的負(fù)載均衡器構(gòu)成該數(shù)據(jù)中心的數(shù)據(jù)中心業(yè)務(wù)管理系統(tǒng)558的一部分。該特定組件中的vm基于相同配置信息被配置為具有相同的屬性,并且每一個(gè)vm運(yùn)行相同應(yīng)用代碼的一個(gè)或多個(gè)各自的實(shí)例(其提供那些vm中的一個(gè)或一些如果發(fā)生故障時(shí)的冗余)。組件的負(fù)載均衡器可操作用于接收請(qǐng)求并將那些請(qǐng)求送往該組件的任何一個(gè)vm,例如以輪詢的方式或基于監(jiān)測到的那些vm的資源可用性(例如,將輸入的請(qǐng)求送往具有最多可用資源的vm)。組件的負(fù)載均衡器假設(shè)該組件的每個(gè)vm等效地被配置為能夠處理該負(fù)載均衡器接收到的任何請(qǐng)求。

組件的示例包括在windowsazure(tm)平臺(tái)上實(shí)現(xiàn)的網(wǎng)絡(luò)和工作者角色。

圖6b示出了服務(wù)邏輯642,其包括至少兩個(gè)具有各自負(fù)載均衡器648、658的組件642和652。組件642包括至少兩個(gè)vm510a、510b,其基于相同的配置信息被配置為具有一致的屬性。vm510a執(zhí)行應(yīng)用代碼的實(shí)例534a,而vm510b執(zhí)行相同的(或者至少副本)應(yīng)用代碼的實(shí)例534b。類似地,組件652包括至少兩個(gè)vm510a’、510b’,其基于相同的配置信息被配置為具有相似的屬性。vm510a’執(zhí)行應(yīng)用代碼的實(shí)例534a’,而vm510b’執(zhí)行相同的(或者至少副本)應(yīng)用代碼的實(shí)例534b’。

組件可以被實(shí)現(xiàn)為包含無狀態(tài)vm的無狀態(tài)組件。這取決于該組件和服務(wù)是如何設(shè)計(jì)和編寫的。無狀態(tài)vm是運(yùn)行不依賴在先前請(qǐng)求的處理期間已經(jīng)存儲(chǔ)在該vm處(即,存儲(chǔ)在獨(dú)立分配給該vm的物理存儲(chǔ)器資源中)的任何信息而服務(wù)于其接收的任何請(qǐng)求的應(yīng)用代碼實(shí)例的vm。也就是,無狀態(tài)vm將每個(gè)請(qǐng)求作為獨(dú)立的事務(wù)對(duì)待并且不記錄它已經(jīng)在其被獨(dú)立分配的存儲(chǔ)器資源上執(zhí)行過的先前事務(wù)(雖然它可以取回,并且可能修改存儲(chǔ)在別的地方的信息,例如由該請(qǐng)求(例如其識(shí)別該特定呼叫)定義的特定呼叫的呼叫狀態(tài))。

針對(duì)無狀態(tài)組件的任何請(qǐng)求可以因此被送往該組件的負(fù)載均衡器(因?yàn)樵摻M件中的哪個(gè)無狀態(tài)vm實(shí)際來服務(wù)該請(qǐng)求是無所謂的)。這提供了冗余,因?yàn)槿绻M件中的一個(gè)vm(或者其應(yīng)用代碼)發(fā)生故障,該組件中的其它vm能夠在糾正該故障的同時(shí)無縫地接管工作。

盡管如此,無狀態(tài)vm可以被配置為訪問分布式平臺(tái)的物理存儲(chǔ)資源(例如,物理存儲(chǔ)器的一塊區(qū)域),它是由該平臺(tái)整個(gè)地分配給該組件的而不是分配給它們運(yùn)行在的分布式平臺(tái)800中的具體的各個(gè)vm的(例如,內(nèi)存存儲(chǔ),諸如由易失性存儲(chǔ)器在物理層面處實(shí)現(xiàn)的緩存層),該組件中的每個(gè)vm被配置為訪問相同的存儲(chǔ)器區(qū)域。作為服務(wù)請(qǐng)求的一部分,vm可以從這一存儲(chǔ)器讀取和向其寫入,并且這一存儲(chǔ)器的內(nèi)容可以影響如何服務(wù)該請(qǐng)求。但是,該vm還是無狀態(tài)的,因?yàn)樗灰蕾囉谒约旱母鱾€(gè)存儲(chǔ)器資源,而是依賴于該組件的所有vm都可訪問的存儲(chǔ)器資源。

通信系統(tǒng)的代碼模塊可以被配置為實(shí)現(xiàn)數(shù)據(jù)訪問軟件,借此服務(wù)邏輯(控制器)實(shí)例可通過該數(shù)據(jù)訪問軟件的實(shí)例訪問計(jì)算機(jī)存儲(chǔ)器。

一個(gè)虛擬機(jī)上的控制器實(shí)例可以通過另一個(gè)虛擬機(jī)上的數(shù)據(jù)訪問軟件實(shí)例訪問計(jì)算機(jī)存儲(chǔ)器。服務(wù)邏輯的組件可以被配置為專用內(nèi)存訪問組件,該組件的vm被配置為訪問這些共享存儲(chǔ)器資源(并且如上所討論的,它們本身可以是無狀態(tài)的)并且執(zhí)行可操作用于只服務(wù)來自該服務(wù)邏輯的其它組件的讀/寫請(qǐng)求的應(yīng)用代碼(即,這樣它們只代表該服務(wù)邏輯的其它組件處理存儲(chǔ)器訪問)。一個(gè)示例是azure(tm)平臺(tái)上的專用緩存工作者角色。

作為替代或者另外,虛擬機(jī)上的控制器實(shí)例通過該相同虛擬機(jī)上的數(shù)據(jù)訪問軟件實(shí)例訪問計(jì)算機(jī)存儲(chǔ)器。組件的vm可以被配置為訪問這些共享存儲(chǔ)器資源并且還執(zhí)行應(yīng)用代碼,該共享存儲(chǔ)器資源(例如,內(nèi)存緩存)不是針對(duì)專用組件部署的而是以分布式方式部署到其它組件上的。一個(gè)示例是azure(tm)平臺(tái)上的角色內(nèi)緩存。

作為替代,組件可以被實(shí)現(xiàn)為有狀態(tài)的,該組件的vm被配置為有狀態(tài)vm,其依賴于關(guān)于使用它們自己的各自的各個(gè)存儲(chǔ)器資源存儲(chǔ)的過去的事務(wù)的信息以便成功地服務(wù)未來的請(qǐng)求。這些請(qǐng)求繞過該組件的均衡負(fù)載器被專門送往該vm(因?yàn)樵摻M件的其它vm應(yīng)該無法服務(wù)那些請(qǐng)求)。有狀態(tài)組件可以用于服務(wù)時(shí)間嚴(yán)格的請(qǐng)求(因?yàn)橐话銇碇vvm訪問它自己的各個(gè)存儲(chǔ)器資源要比訪問共享的、組件范圍的存儲(chǔ)器資源更快)。但是,相比于無狀態(tài)組件,有狀態(tài)組件中的vm的故障可能導(dǎo)致該組件無法服務(wù)本來應(yīng)該由該發(fā)生故障的vm服務(wù)的后續(xù)的請(qǐng)求。

服務(wù)邏輯的組件可以被配置為暴露一個(gè)或多個(gè)外部可用的、可尋址的接口624(例如,restful)和/或一個(gè)或多個(gè)內(nèi)部可用、可尋址的接口652(例如,restful),它們可以被利用(即,調(diào)用)以便建立用于與該組件交換數(shù)據(jù)的邏輯連接。內(nèi)部接口624只對(duì)相同服務(wù)邏輯的其它組件可見(并且可由其利用),而外部接口對(duì)相應(yīng)的客戶端一側(cè)服務(wù)代理612和/或其它服務(wù)邏輯可見并且由其利用。組件的接口有效地耦接到該組件的負(fù)載均衡器,因?yàn)槭褂迷摻涌诎l(fā)往該組件的任何請(qǐng)求由該負(fù)載均衡器接收以便轉(zhuǎn)發(fā)給該組件的vm(這一轉(zhuǎn)發(fā)在該組件外部不可見)。

圖6b示出了組件642暴露外部接口624(其有效地耦接到該組件的負(fù)載均衡器648),并且組件652暴露內(nèi)部接口656(其有效地耦接到該組件的負(fù)載均衡器658)。

dc控制塊556以如上參考圖5a和5b所討論的方式控制組件的vm和負(fù)載均衡器(它們是dc業(yè)務(wù)管理系統(tǒng)558的一部分)。數(shù)據(jù)中心320的資源報(bào)告塊558可操作用于從每個(gè)服務(wù)邏輯接收資源利用信息,并且將關(guān)于該數(shù)據(jù)中心中資源使用的信息傳輸給業(yè)務(wù)管理器332(這一信息是塊558所報(bào)告的關(guān)于該服務(wù)邏輯運(yùn)行在的數(shù)據(jù)中心處的物理計(jì)算機(jī)資源的使用和可用性的整體信息的一部分)。該業(yè)務(wù)管理器332可操作用于從多個(gè)數(shù)據(jù)中心(例如,320a、320b、320c)接收這一信息。

如上所討論的,響應(yīng)于針對(duì)特定類型的服務(wù)的各自請(qǐng)求(來自該類型的客戶端一側(cè)代理(因?yàn)橐粋€(gè)類型的服務(wù)代理只向該相同類型的服務(wù)邏輯而不會(huì)向不同類型的服務(wù)邏輯發(fā)送請(qǐng)求)或來自另一個(gè)不同類型的服務(wù)邏輯),從各自可能的分組602[1]、602[2]選擇那些類型的相應(yīng)服務(wù)邏輯622[1]、622[2]以便遞送那些各自的服務(wù)。這一選擇是由業(yè)務(wù)管理器132響應(yīng)于這些請(qǐng)求而做出的—這現(xiàn)在將參考圖7a、7b和7c描述,它們描繪了用于請(qǐng)求特定類型的服務(wù)的示例性處理。圖7a和7b是描繪了所述處理的流程圖,而圖7c示意性的描繪了該處理的示例性數(shù)據(jù)交換。

在步驟s702處,特定類型的服務(wù)的請(qǐng)求者700(例如,該服務(wù)類型的客戶端一側(cè)代理或另一個(gè)服務(wù)類型的服務(wù)邏輯)發(fā)送針對(duì)能夠向業(yè)務(wù)管理系統(tǒng)330遞送該特定類型的服務(wù)的服務(wù)邏輯的地址的請(qǐng)求(指令)。例如,在實(shí)施例中,業(yè)務(wù)管理系統(tǒng)330與特定域名(例如,tm.net)相關(guān)聯(lián),并且針對(duì)服務(wù)的每個(gè)類型(例如,服務(wù)“m”的每個(gè)類型)定義該服務(wù)的類型的子域名(例如,service-m.provider.tm.net)。然后,每個(gè)子域名與和該服務(wù)的供應(yīng)商(例如,通信系統(tǒng)300的運(yùn)營商)相關(guān)聯(lián)的域名(例如,provider.net)的相應(yīng)子域名(例如,service_m.provider.net)相關(guān)聯(lián)。這一關(guān)聯(lián)性是使用規(guī)范名稱(cname)dns(“域名系統(tǒng)”)記錄720生效的,它使得供應(yīng)商子域名(例如,service_m.provider.net)能夠用于在該業(yè)務(wù)管理系統(tǒng)中獲取能夠向其請(qǐng)求針對(duì)該類型的服務(wù)的請(qǐng)求的地址,該地址與該類型的服務(wù)的業(yè)務(wù)管理策略724相關(guān)聯(lián)。cname記錄是本領(lǐng)域內(nèi)公知的。

該類型的服務(wù)(例如,“服務(wù)1”,可以是,例如呼叫控制服務(wù)、音頻控制服務(wù)、視頻控制服務(wù)、業(yè)務(wù)控制服務(wù)、管道控制服務(wù)等)的業(yè)務(wù)管理策略722被存儲(chǔ)在業(yè)務(wù)管理系統(tǒng)330的存儲(chǔ)器334中。這一策略識(shí)別能夠遞送該類型的服務(wù)的多個(gè)服務(wù)邏輯(圖7c中的622a、622b、622c),例如如該通信系統(tǒng)300的運(yùn)營商所指定的。業(yè)務(wù)管理器132可操作用于根據(jù)從每個(gè)數(shù)據(jù)中心資源報(bào)告塊558a、558b、558c等接收到的資源利用信息選擇那些服務(wù)邏輯622a、622b、622c中的一個(gè)。一旦選定,業(yè)務(wù)管理器132向請(qǐng)求者750返回響應(yīng)(s706),該響應(yīng)包括所選擇的服務(wù)部署(例如,圖7c中的622a)的地址。該地址是該服務(wù)邏輯622a的組件642a暴露的外部接口624a的地址,其耦接到該組件622a的負(fù)載均衡器648a。響應(yīng)于接收到這一響應(yīng)消息,請(qǐng)求者750向該地址發(fā)送請(qǐng)求(s708),該請(qǐng)求由負(fù)載均衡器648a接收到。這里,組件642a是無狀態(tài)組件,包括能夠服務(wù)于該請(qǐng)求的多個(gè)無狀態(tài)虛擬機(jī)510a-a、510a-b,并且響應(yīng)于接收到該請(qǐng)求,負(fù)載均衡器648a然后選擇那些虛擬機(jī)之一510a-b并將該請(qǐng)求轉(zhuǎn)發(fā)給它。vm510a-b執(zhí)行各種操作作為響應(yīng)。例如,在這一示例中,服務(wù)邏輯622a包括另一個(gè)組件652a(它本身包括耦接到暴露的內(nèi)部接口656a的負(fù)載均衡器658a)以及多個(gè)虛擬機(jī)510a-a’、510a-b’。由vm510a-b所執(zhí)行的所述操作可以包括向所述內(nèi)部接口656a發(fā)送一個(gè)或多個(gè)內(nèi)部請(qǐng)求。響應(yīng)于其,負(fù)載均衡器658a選擇組件652a的虛擬機(jī)510a-b’并將該請(qǐng)求轉(zhuǎn)發(fā)給該vm。該vm510a-b’執(zhí)行各種操作作為對(duì)此的響應(yīng),然后一旦完成其則向vm510a-b返回響應(yīng)(s716)。作為響應(yīng),組件642a的vm510a-b執(zhí)行額外的操作,包括向請(qǐng)求者700的原始請(qǐng)求返回響應(yīng)(s718)。作為替代,vm510a-b可以服務(wù)來自請(qǐng)求者750的原始請(qǐng)求,而無需向服務(wù)邏輯622a的其它組件發(fā)送任何其它請(qǐng)求。

1.中央智能化云呼叫建立、控制和媒體協(xié)商(ciccscmn)

上面通過舉例說明的方式提供了對(duì)服務(wù)代理與相應(yīng)的相同類型的服務(wù)邏輯通信以及服務(wù)邏輯與其它類型的服務(wù)邏輯通信的機(jī)制的概述,以便解釋說明其基本原理。

現(xiàn)在將描述實(shí)施例,其中,服務(wù)代理和服務(wù)邏輯采用(除了別的之外)這種機(jī)制以支持實(shí)時(shí)媒體通信事件(例如,呼叫),從而允許用戶(例如,302a、302b)相互通信。

在這一實(shí)施例中,如圖9中所示,分布式平臺(tái)適于運(yùn)行下面類型的云控制服務(wù)邏輯(控制器)中的多個(gè),每個(gè)服務(wù)邏輯由各自的以上述方式在分布式平臺(tái)800的虛擬機(jī)上執(zhí)行的代碼實(shí)現(xiàn):用于遞送呼叫控制服務(wù)的呼叫控制服務(wù)邏輯904(呼叫控制器);用于遞送音頻媒體控制服務(wù)的音頻媒體控制服務(wù)邏輯906(音頻控制器);用于遞送視頻媒體控制服務(wù)的視頻媒體控制服務(wù)邏輯908(視頻控制器);用于遞送傳輸控制服務(wù)的傳輸控制服務(wù)邏輯910(傳輸控制器);以及用于遞送管道控制服務(wù)的管道控制服務(wù)邏輯912(管道控制器)。該音頻和視頻控制服務(wù)是不同媒體模態(tài)控制服務(wù)的各自示例(音頻是一種類型的媒體模態(tài),視頻是另一種類型的媒體模態(tài))。每一個(gè)被配置為暴露各自的外部接口905、907、909、911、913。分布式平臺(tái)還適于實(shí)現(xiàn)注冊(cè)和導(dǎo)出請(qǐng)求邏輯914。

該呼叫控制服務(wù)提供對(duì)該呼叫最高級(jí)別的控制,除了該呼叫控制服務(wù)之外的控制服務(wù)提供較低級(jí)別的控制功能以支持該呼叫(每個(gè)功能很大程度上獨(dú)立地同時(shí)根本上,雖然有時(shí)間接地,由呼叫控制器作為呼叫控制服務(wù)的一部分控制)。這些包括一個(gè)或多個(gè)“模態(tài)服務(wù)”,“模態(tài)”是通信傳送的模式—諸如音頻或視頻。

這些云邏輯構(gòu)成用于控制呼叫的云呼叫控制系統(tǒng)900的一部分,那些相同類型的其它控制器(圖9中未示出)也構(gòu)成該系統(tǒng)900的一部分。

這些各個(gè)邏輯和通信客戶端416(運(yùn)行在,例如用戶設(shè)備304a、304b處)構(gòu)成通信系統(tǒng)300的一部分。

控制器控制它們的服務(wù)并且暴露針對(duì)其它服務(wù)的到呼叫的接口—以及到它們各自代理的接口。

1.1服務(wù)代理

用戶設(shè)備304的客戶端416包括多個(gè)不同類型的代理(對(duì)應(yīng)于每個(gè)類型的控制器),也就是呼叫控制代理924、音頻媒體代理926(音頻代理)、視頻媒體代理928(視頻代理)、傳輸代理930和管道代理332??蛻舳?16還包括注冊(cè)和導(dǎo)入請(qǐng)求塊934,它能夠通過網(wǎng)絡(luò)301與該注冊(cè)和導(dǎo)出請(qǐng)求邏輯914通信,并且可操作用于向其注冊(cè)該客戶端416的地址(例如,包括客戶端被執(zhí)行在的用戶設(shè)備304的互聯(lián)網(wǎng)協(xié)議(ip)地址)。發(fā)送給該地址的任何請(qǐng)求由塊943接收并轉(zhuǎn)發(fā)給目標(biāo)代理接收方,從而使該注冊(cè)和導(dǎo)出請(qǐng)求邏輯向該客戶端的各個(gè)代理發(fā)送請(qǐng)求消息(從各個(gè)服務(wù)邏輯中的一個(gè)接收到的)。這使得每個(gè)類型的控制器能夠與該類型的相應(yīng)代理建立用于傳輸相應(yīng)的控制數(shù)據(jù)的連接(例如,使呼叫控制器能夠與該呼叫代理建立用于傳輸呼叫控制數(shù)據(jù)的連接,使音頻控制器能夠與該音頻代理建立用于傳輸音頻控制數(shù)據(jù)的連接,使視頻控制器能夠與該視頻代理建立用于傳輸視頻控制數(shù)據(jù)的連接,使傳輸控制器能夠與該傳輸代理建立用于傳輸傳輸控制數(shù)據(jù)的連接,使管道代理能夠與該管道代理建立用于傳輸管道控制數(shù)據(jù)的連接)。

服務(wù)到端點(diǎn)消息傳遞是通過推送類型的服務(wù)到端點(diǎn)消息信道的方式,這意味著它不要求客戶端請(qǐng)求能夠遞送服務(wù)消息(或響應(yīng))。如果服務(wù)需要向一個(gè)端點(diǎn)發(fā)送消息或命令,它通過適當(dāng)?shù)耐扑托诺馈半S意”地這樣做。

更具體地,客戶端416具有登錄/注冊(cè)設(shè)備,它將用戶設(shè)備304與特定的各自用戶(例如,alice、bob)關(guān)聯(lián)起來。作為登錄程序的一部分,該用戶的用戶名被與執(zhí)行該客戶端的設(shè)備的地址相關(guān)聯(lián)地存儲(chǔ)起來,用戶在該客戶端處通過通信系統(tǒng)300的注冊(cè)和導(dǎo)出請(qǐng)求邏輯914登錄。用戶可以有運(yùn)行在與相同的登錄/注冊(cè)細(xì)節(jié)相關(guān)聯(lián)的其它設(shè)備上的通信客戶端實(shí)例。在具有特定用戶名的相同用戶能夠同時(shí)登錄到不同設(shè)備上的相同客戶端應(yīng)用的多個(gè)實(shí)例的情況中,邏輯914被布置為將該用戶名(用戶id)映射到全部那些多個(gè)實(shí)例,但是也將分別的子標(biāo)識(shí)符(子id)映射到每個(gè)特定個(gè)體實(shí)例。因此,通信系統(tǒng)300能夠區(qū)分不同實(shí)例同時(shí)還保持用戶在該通信系統(tǒng)中的一致性身份。alice302a和bob302b二者都在它們各自的圖3的用戶設(shè)備304a、304b處登錄。

公共客戶端(例如,416)的代理(例如,924、926、928、930、932)能夠使用那些代理的api(如上所討論的)相互傳輸數(shù)據(jù)(包括各種類型的控制數(shù)據(jù)以及該呼叫的實(shí)時(shí)媒體數(shù)據(jù))。

公共客戶端的代理相互提供數(shù)據(jù),例如通過適當(dāng)api(例如,c++api)的使用。呼叫代理924能夠向音頻代理926、視頻代理928和傳輸代理929中的每一個(gè)提供數(shù)據(jù)。音頻代理926和視頻代理928二者都能夠向傳輸代理930提供數(shù)據(jù)。該傳輸代理930能夠向管道代理332提供數(shù)據(jù)。管道代理332能夠向傳輸代理930提供數(shù)據(jù)。這些數(shù)據(jù)被提供到的代理可以,例如執(zhí)行操作和/或向提供者返回進(jìn)一步的數(shù)據(jù)作為響應(yīng)。這一般被看作最優(yōu)化的而不是最純粹的設(shè)計(jì)模式的機(jī)制。根據(jù)最純粹的設(shè)計(jì)模式,代理生成的命令/請(qǐng)求可以被發(fā)送給該代理的各自服務(wù)(而最優(yōu)化的設(shè)計(jì)模式使用代理間接口來替代)。

用于控制呼叫的所有用戶輸入被傳輸給呼叫被傳輸給呼叫代理924用于初始處理(其可以作為響應(yīng)使其它代理或呼叫控制器以如上所討論的方式執(zhí)行進(jìn)一步的處理)。除了與支持該呼叫的呼叫控制器傳輸呼叫控制數(shù)據(jù)外,該呼叫代理從客戶端416的客戶端用戶界面接收控制信號(hào)并向其輸出呼叫信息(諸如關(guān)于當(dāng)前參與者及它們各自的狀態(tài)的信息)。

該代理幫助建立用于要發(fā)送的分組的適當(dāng)?shù)摹肮艿馈?。底層媒體庫(就是使用編解碼器的語音引擎、視頻引擎等)進(jìn)行實(shí)際的媒體數(shù)據(jù)捕捉(例如,從相機(jī)和麥克風(fēng))并將所述分組發(fā)送給正確的套接字。

1.2云控制器

呼叫控制器提供對(duì)呼叫的高級(jí)別控制并且以該呼叫的呼叫狀態(tài)的形式維護(hù)關(guān)于該呼叫的信息。它與參與該呼叫的相應(yīng)呼叫代理交互。該呼叫控制器提供該呼叫的實(shí)時(shí)媒體流的上下文并且最終監(jiān)督其它服務(wù)邏輯的低級(jí)別控制(例如,音頻控制、視頻控制、傳輸控制、管道控制等等),確保它們正確地串聯(lián)工作以支持該呼叫。

呼叫狀態(tài)的本地版本是由該呼叫的每個(gè)端點(diǎn)維護(hù)的。響應(yīng)于來自該呼叫控制器的呼叫狀態(tài)更新,該端點(diǎn)的呼叫代理相應(yīng)地更新該設(shè)備上存儲(chǔ)的呼叫狀態(tài)的本地版本。呼叫代理并不以它們自己的意志更新該呼叫狀態(tài)(也就是,只有響應(yīng)于通過網(wǎng)絡(luò)來自該呼叫控制器的更新才更新該呼叫狀態(tài)的本地版本,而不是直接響應(yīng)于發(fā)送請(qǐng)求或接收對(duì)這一請(qǐng)求的響應(yīng)的端點(diǎn)),并且該呼叫狀態(tài)的本地版本不是權(quán)威的;只有存儲(chǔ)在云端的呼叫狀態(tài)是權(quán)威的(這是相應(yīng)通信事件的“主”呼叫狀態(tài))。

呼叫控制器904向相應(yīng)的呼叫控制代理924(并且向參與該呼叫的該類型的任何其它代理)遞送呼叫控制服務(wù)。音頻控制器906向相應(yīng)的音頻代理926(并且向參與該呼叫的該類型的任何其它代理)遞送音頻控制服務(wù)。視頻控制器908向相應(yīng)的視頻代理928(并且向參與該呼叫的該類型的任何其它代理)遞送視頻控制服務(wù)。傳輸控制器向相應(yīng)的傳輸代理930(并且向參與該呼叫的該類型的任何其它代理)遞送相應(yīng)的傳輸控制服務(wù)。管道控制代理向相應(yīng)的管道代理332(并且向參與該呼叫的該類型的任何其它代理)遞送管道控制服務(wù)。

每個(gè)控制器(控制服務(wù)邏輯)是運(yùn)行在該云平臺(tái)800上的多個(gè)這種控制器(控制服務(wù)邏輯)中的一個(gè)(所述多個(gè)控制器中的每一個(gè)在這一實(shí)施例中運(yùn)行在不同數(shù)據(jù)中心處,它們可以有不同的地理位置),例如呼叫控制器是多個(gè)呼叫控制器(那些呼叫控制器中的每一個(gè)運(yùn)行在相互不同的數(shù)據(jù)中心處)中的一個(gè),該音頻控制器是多個(gè)音頻控制器(那些音頻控制器中的每一個(gè)運(yùn)行在相互不同的數(shù)據(jù)中心處)中的一個(gè),該視頻控制器是多個(gè)視頻控制器(那些視頻控制器中的每一個(gè)運(yùn)行在相互不同的數(shù)據(jù)中心處)中的一個(gè),該傳輸控制器是多個(gè)傳輸控制器(那些傳輸控制器中的每一個(gè)運(yùn)行在相互不同的數(shù)據(jù)中心處)中的一個(gè),并且該管道控制器是多個(gè)管道控制器(那些管道控制器中的每一個(gè)運(yùn)行在相互不同的數(shù)據(jù)中心處)中的一個(gè)。

音頻和視頻控制器提供對(duì)呼叫的音頻和視頻方面的分別控制,并且控制(除了別的之外)音頻(或視頻)編解碼器選擇、音頻(或視頻)特定變量管理、通過與參與該呼叫的相應(yīng)音頻(或視頻)代理的交互的端點(diǎn)音頻(或視頻)控制。該音頻和視頻控制器是不同的媒體模態(tài)控制器。

傳輸控制器和管道控制器共同控制呼叫的媒體(例如,音頻/視頻)數(shù)據(jù)如何在該呼叫的端點(diǎn)之間傳送。除了別的之外,它們合作創(chuàng)建“管道”形式的傳輸機(jī)制,它能夠用于在參與者之間傳輸呼叫的實(shí)時(shí)媒體數(shù)據(jù),傳輸控制器監(jiān)督其較高層級(jí)的方面(諸如網(wǎng)絡(luò)拓?fù)?并且管道控制器實(shí)現(xiàn)較低層級(jí)細(xì)節(jié),并在該傳輸代理的控制之下最終創(chuàng)建該管道。

呼叫控制器904、音頻控制器906、視頻控制器908、傳輸控制器910和管道控制912中的每一個(gè)是分別運(yùn)行在分布式平臺(tái)800上的該相同類型的(并且能夠遞送該相同服務(wù))多個(gè)服務(wù)邏輯中的一個(gè)。每個(gè)代理924、926、928、930、932可以用如上所討論的并且在下面的上下文中描述的方式從業(yè)務(wù)管理器332請(qǐng)求相應(yīng)服務(wù)邏輯(分別是904、906、908、910和912)的地址。

呼叫控制器能夠建立用于通過音頻控制器906、視頻控制器908(媒體控制器)和傳輸控制器910各自的外部接口907、909、911與它們的每一個(gè)傳輸控制數(shù)據(jù)的連接。該傳輸控制器能夠建立用于通過呼叫控制器904、音頻控制器906、視頻控制器908和管道控制器912各自的外部接口950、907、909、913與它們的每一個(gè)傳輸數(shù)據(jù)的連接。管道控制器912能夠建立用于通過傳輸控制器911的外部接口911與之傳輸數(shù)據(jù)的連接。一般來講,只有傳輸控制器直接與管道控制器交互(其它服務(wù)可以通過呼叫控制器與管道控制器間接交互)。

一個(gè)類型(呼叫、音頻、視頻、傳輸、管道)的控制器只訪問該相同類型的端點(diǎn)代理而不會(huì)訪問(即,不會(huì)與之建立連接或從其直接接收指令)不同類型的代理。

服務(wù)間通信的本質(zhì)一般以呼叫控制器開始,并且該呼叫控制器提供到其它服務(wù)的鏈接和返回它自己的鏈接(有必要的話)。但是,這并不排除其它流程。

控制器904、906、908、910和912的每一個(gè)能夠建立用于與注冊(cè)和導(dǎo)出請(qǐng)求邏輯914傳輸數(shù)據(jù)的連接,借此它們能夠如下所描述的向它們各自對(duì)應(yīng)的代理傳輸相關(guān)控制數(shù)據(jù)。

如上所討論的,注冊(cè)和導(dǎo)出請(qǐng)求邏輯914能夠建立用于使用客戶端416的注冊(cè)和導(dǎo)入請(qǐng)求塊注冊(cè)的地址與該塊傳輸數(shù)據(jù)的連接,借此從控制器904、906、908、910和912的每一個(gè)接收到的數(shù)據(jù)能夠被轉(zhuǎn)發(fā)給目標(biāo)代理(分別是824、926、928、930和332)。該注冊(cè)和導(dǎo)入請(qǐng)求塊934被配置為從分布式平臺(tái)800的注冊(cè)和導(dǎo)出請(qǐng)求邏輯914接收那些數(shù)據(jù),并將那些數(shù)據(jù)送往目標(biāo)的客戶端一側(cè)代理(924、926、928、930、332中的一個(gè))。

特定類型的代理能夠建立用于通過該類型的控制器的外部接口(例如,restful接口)與該控制器傳輸控制數(shù)據(jù)的連接。例如,呼叫代理924能夠建立用于通過相應(yīng)的呼叫控制器904各自的外部接口905與相應(yīng)的呼叫控制器904傳輸數(shù)據(jù)的連接。音頻代理926能夠建立用于通過相應(yīng)的音頻控制器906各自的外部接口907直接與相應(yīng)的音頻控制器906傳輸數(shù)據(jù)的連接。視頻代理928能夠建立用于通過相應(yīng)的視頻控制器908各自的外部接口909直接與相應(yīng)的視頻控制器908傳輸數(shù)據(jù)的連接。傳輸代理930能夠建立用于通過相應(yīng)的傳輸控制器910各自的外部接口911直接與相應(yīng)的傳輸控制器910傳輸數(shù)據(jù)的連接。管道代理332能夠建立用于通過相應(yīng)的管道控制器912各自的外部接口913直接與相應(yīng)的管道控制器912傳輸數(shù)據(jù)的連接。

任何這種已建立的連接可以用于,例如發(fā)送請(qǐng)求消息,所述接收機(jī)執(zhí)行操作作為響應(yīng),并且一旦完成操作則通過該連接返回響應(yīng)消息。

每個(gè)控制器通常同時(shí)控制多個(gè)(并且可能很多個(gè))呼叫的各自方面。在特定呼叫的任何兩個(gè)給定事務(wù)(即,基于請(qǐng)求—響應(yīng)交換的事務(wù))之間,每個(gè)控制器可以完成一個(gè)或多個(gè)其它呼叫的任何數(shù)量(零或更多)的事務(wù)。針對(duì)參與那些事務(wù)的無狀態(tài)組件的無狀態(tài)vm,這些vm中的任何一個(gè)可以工作以進(jìn)一步完成這兩個(gè)給定事務(wù)和其它事務(wù)。從這個(gè)意義上,特定類型的控制器的無狀態(tài)vm為該控制器提供控制資源池;可以在任何時(shí)間從該池選擇任何自由vm(即,當(dāng)前沒有執(zhí)行處理以促進(jìn)事務(wù)的任何vm)以促進(jìn)任何給定呼叫的事務(wù),并且一旦該事務(wù)完成,所選擇的vm可以被返回到該池以用于未來的這種選擇。

每次通過網(wǎng)絡(luò)30接收到發(fā)往特定控制器(例如,呼叫、媒體模態(tài)(例如音頻、視頻等)、傳輸、管道)的指令(請(qǐng)求消息),例如rest呼叫,該控制器的實(shí)例被指派處理該指令(如上所描述的,在這一實(shí)施例中通過與該控制器相關(guān)聯(lián)的負(fù)載均衡器)。響應(yīng)于該控制器實(shí)例返回對(duì)該指令的響應(yīng),該控制器實(shí)例被從該指派釋放,這樣所分配的用于實(shí)現(xiàn)完成該指派的任何物理資源(處理資源、存儲(chǔ)器資源)變成未分配的(從而變?yōu)榭捎糜谔幚砥渌@種指令)。

圖9示出了呼叫控制器的多個(gè)實(shí)例974a、974b,…;音頻控制器的多個(gè)實(shí)例976a、976b,…;視頻控制器的多個(gè)實(shí)例978a、978b,…;傳輸控制器的多個(gè)實(shí)例980a、980b,…;以及管道控制器的多個(gè)實(shí)例982a、982b,…。在這一實(shí)施例中,每個(gè)所述實(shí)例是運(yùn)行在虛擬機(jī)510上的一個(gè)或多個(gè)應(yīng)用代碼模塊的實(shí)例534,已經(jīng)以如上參考圖5a和5b所描述的方式將其實(shí)例化。在這一實(shí)施例中,虛擬機(jī)上運(yùn)行最多一個(gè)控制器實(shí)例(因此虛擬機(jī)的選擇等效于運(yùn)行在該虛擬機(jī)上的實(shí)例的選擇)。但是,在其它實(shí)施例中,vm可以運(yùn)行多個(gè)實(shí)例。

呼叫控制器和呼叫代理串聯(lián)行動(dòng)以遞送實(shí)時(shí)媒體呼叫服務(wù)(主要的、較高級(jí)別服務(wù)),聯(lián)合運(yùn)行以提供呼叫建立功能、呼叫管理功能(即,添加/移除參與者、響應(yīng)于通過客戶端用戶界面做出的任何用戶選擇、通過客戶端用戶界面呈現(xiàn)可選擇的選項(xiàng)以提高呼叫體驗(yàn),例如通過使諸如屏幕分享或即時(shí)消息傳遞之類的額外功能實(shí)現(xiàn))、提供創(chuàng)建實(shí)時(shí)媒體呼叫數(shù)據(jù)的底層流的上下文的信息(諸如呼叫參與者狀態(tài))。如上所討論的,這一呼叫服務(wù)的控制通過向該呼叫代理遞送呼叫控制服務(wù)的呼叫控制器實(shí)現(xiàn),用戶一側(cè)交互通過所述呼叫控制器的所述控制之下的呼叫代理實(shí)現(xiàn)。呼叫代理提供呼叫服務(wù)和用戶之間的接口。

其它模態(tài)服務(wù)和它們相應(yīng)的模態(tài)代理串聯(lián)動(dòng)作以遞送各自的模態(tài)服務(wù)(次要的,低層級(jí)的服務(wù))。該模態(tài)控制器遞送模態(tài)控制服務(wù),其可以在呼叫控制的控制之下(直接控制或間接控制之一,即,該模態(tài)服務(wù)由呼叫控制器直接或間接控制下的另一個(gè)模態(tài)服務(wù)直接控制)擴(kuò)展到相應(yīng)的模態(tài)代理,以便由呼叫控制器支持該呼叫控制器(即,以便支持該呼叫控制器及其相應(yīng)呼叫代理針對(duì)該呼叫遞送的呼叫服務(wù))。一旦模態(tài)控制服務(wù)如此擴(kuò)展到相應(yīng)的模態(tài)代理,該模態(tài)控制器和該模態(tài)代理功能聯(lián)合以遞送該模態(tài)服務(wù)。

媒體(音頻和視頻)服務(wù)是一個(gè)示例。音頻(或視頻)控制器和音頻(或視頻代理)串聯(lián)行動(dòng)以遞送音頻(或視頻)服務(wù),聯(lián)合工作以確保在用戶設(shè)備處捕捉到的音頻(或視頻)被優(yōu)化地編碼,這樣針對(duì)該編碼選擇優(yōu)化的音頻(或視頻)變量,并且該音頻(或視頻)代理向傳輸代理提供經(jīng)編碼音頻(或視頻)數(shù)據(jù),用于作為該音頻(或視頻)服務(wù)的一部分傳輸給其它呼叫方。

傳輸和管道服務(wù)是另一個(gè)示例。傳輸控制器和傳輸代理聯(lián)合行動(dòng)以遞送傳輸服務(wù)。管道控制器和管道代理聯(lián)合行動(dòng)以遞送管道服務(wù)。

傳輸控制器控制該呼叫的端點(diǎn)的拓?fù)?,基于該呼叫中的所有端點(diǎn)做出決策,并且因此決定最有效的路由媒體的方式。一旦已經(jīng)做出這些決策,傳輸控制器指令管道控制器根據(jù)需要在所述模態(tài)的相關(guān)端點(diǎn)之間建立必要的物理套接字連接。

1.2.1呼叫控制器

該呼叫控制器被配置為建立通信事件(并且一旦建立則管理所述通信事件)。通信事件被稱為建立在實(shí)時(shí)媒體(例如,音頻/視頻)可以在兩個(gè)或多個(gè)端點(diǎn)之間流動(dòng)的點(diǎn)處。除了別的之外,建立該通信事件包括,創(chuàng)建該通信事件的呼叫狀態(tài)并指令其它控制器適當(dāng)?shù)仨憫?yīng)于其它控制器與它們各自的代理傳輸?shù)模员憬⒚襟w流。除了別的之外,管理該通信事件包括,在該通信事件期間維護(hù)呼叫狀態(tài)的更新(例如,通過添加和/或移除呼叫參與者、聯(lián)合音頻控制器處理靜音/非靜音音頻請(qǐng)求、聯(lián)合視頻控制器處理視頻啟用/禁用請(qǐng)求、最終終止該通信事件等等)。

根據(jù)本發(fā)明的主題,響應(yīng)于通過網(wǎng)絡(luò)接收到的指令,呼叫控制器的實(shí)例被指派推進(jìn)通信事件的建立,并且被配置為向媒體模態(tài)控制器和至少一個(gè)端點(diǎn)中的至少一個(gè)發(fā)起指令。

通常,多個(gè)呼叫控制器實(shí)例的指派將會(huì)發(fā)生在呼叫建立期間,每個(gè)實(shí)例被獨(dú)立于其它實(shí)例地指派推進(jìn)通信事件的建立。例如,響應(yīng)于通過網(wǎng)絡(luò)接收到的指令,呼叫控制器的實(shí)例可以被指派推進(jìn)通信事件的建立,并且響應(yīng)于通過網(wǎng)絡(luò)接收到的進(jìn)一步指令,該呼叫控制器的該實(shí)例或另一個(gè)實(shí)例可以被獨(dú)立地指派進(jìn)一步推進(jìn)該通信事件的建立。例如,初始指派的實(shí)例可以通過創(chuàng)建該通信事件的呼叫狀態(tài)推進(jìn)該通信事件的建立,后續(xù)指派的指令通過執(zhí)行呼叫建立操作并作為對(duì)其響應(yīng)相應(yīng)地更新所述呼叫狀態(tài)來推進(jìn)該通信事件的建立。

呼叫控制器被配置為訪問通信系統(tǒng)的計(jì)算機(jī)存儲(chǔ)器以訪問該通信事件的呼叫狀態(tài)(以便創(chuàng)建該通信事件的呼叫狀態(tài),例如作為建立該通信事件的一部分,或者訪問該通信事件的現(xiàn)有呼叫狀態(tài))。具體來講,在這一實(shí)施例中,被指派的呼叫控制器實(shí)例被配置為訪問該呼叫狀態(tài),并且該呼叫狀態(tài)在該呼叫控制器實(shí)例從所述指派中釋放之后繼續(xù)保持,這樣該呼叫控制器的另一個(gè)實(shí)例能夠在該事件中訪問該呼叫狀態(tài)(也就是,這樣該呼叫控制器的該實(shí)例和/或另一個(gè)實(shí)例能夠在所述釋放之后訪問所述呼叫狀態(tài))。從媒體模態(tài)控制器接收到的媒體模態(tài)狀態(tài)數(shù)據(jù)可以作為該呼叫狀態(tài)的一部分來存儲(chǔ)。

此外,通常呼叫控制器實(shí)例的多個(gè)其它指派發(fā)生在該通信事件期間,以便管理該通信事件(例如,實(shí)例可以被指派響應(yīng)于添加參與者的請(qǐng)求,該實(shí)例或另一個(gè)實(shí)例被獨(dú)立地指派響應(yīng)于移除參與者的請(qǐng)求等等)。因此,該呼叫控制器的實(shí)例可以被指派推進(jìn)該通信事件的建立,并且該呼叫控制器的該實(shí)例或者另一個(gè)實(shí)例可以被獨(dú)立地指派管理所建立的通信事件的至少一部分。

在這一實(shí)施例中,呼叫控制器是由無狀態(tài)代碼模塊實(shí)現(xiàn)的。如圖9a中所示,呼叫控制器服務(wù)邏輯904包括暴露外部接口905的無狀態(tài)呼叫控制組件945,和暴露內(nèi)部接口955并具有分配的共享物理存儲(chǔ)器資源集合的內(nèi)存存儲(chǔ)組件952。該無狀態(tài)呼叫控制組件954能夠建立用于通過該內(nèi)部接口955與無狀態(tài)內(nèi)存存儲(chǔ)組件傳輸數(shù)據(jù)的連接。該內(nèi)存存儲(chǔ)組件953可操作用于將該呼叫控制器904當(dāng)前支持的每個(gè)呼叫的呼叫狀態(tài)953存儲(chǔ)在該組件952的所有vm之間共享的并且所有vm可訪問的共享物理存儲(chǔ)器資源中,該呼叫狀態(tài)包括該呼叫的多個(gè)當(dāng)前參數(shù)。無狀態(tài)呼叫控制組件954可以通過經(jīng)由內(nèi)部接口955建立的連接從那些物理存儲(chǔ)器資源讀取和向其寫入。因此呼叫控制組件954能夠取回并修改呼叫狀態(tài)953或者它的至少一部分。

呼叫的呼叫狀態(tài)代表關(guān)于該呼叫的當(dāng)前信息,諸如通信系統(tǒng)300中的參與端點(diǎn)(用戶設(shè)備)的標(biāo)識(shí)符和它們各自的狀態(tài)(準(zhǔn)備好、連接中、響鈴中、進(jìn)行中等等)、當(dāng)前支持該呼叫的其它服務(wù)邏輯的標(biāo)識(shí)符等等。下面討論呼叫狀態(tài)及其創(chuàng)建和維護(hù)。它還可以跟蹤下面的(除了別的之外):每個(gè)參與者/端點(diǎn)的哪些模態(tài)是活躍的、模態(tài)狀態(tài)是什么(發(fā)送中、靜音等等)—圍繞允許的呼叫控制(踢出、添加、靜音其它等等)的對(duì)每個(gè)用戶的授權(quán)。

所述組件的每一個(gè)包括各自的負(fù)載均衡器和各自的多個(gè)負(fù)載均衡的、以如上討論的方式運(yùn)行副本應(yīng)用代碼實(shí)例的副本vm。通過接口905在控制組件954處接收到的請(qǐng)求被轉(zhuǎn)發(fā)給多個(gè)無狀態(tài)vm中由該組件的負(fù)載均衡器選擇的任何一個(gè)vm,每個(gè)請(qǐng)求被作為不同的、獨(dú)立的事務(wù)來對(duì)待。作為響應(yīng),所選擇的vm可以,作為處理該請(qǐng)求的一部分,通過經(jīng)由內(nèi)部接口955發(fā)送內(nèi)部讀取請(qǐng)求從內(nèi)存存儲(chǔ)組件952接口955取回該呼叫狀態(tài)952的副本(至少它的一部分)。這一內(nèi)部請(qǐng)求被轉(zhuǎn)發(fā)給由該組件的負(fù)載均衡器選擇的內(nèi)存存儲(chǔ)組件952的任何一個(gè)vm,作為響應(yīng),該vm從該內(nèi)存存儲(chǔ)組件952的共享物理存儲(chǔ)器取回該呼叫狀態(tài)953的副本并將該副本返回給呼叫控制組件954。該呼叫控制組件臨時(shí)保存這一副本,并且如果可以的話相應(yīng)地修改所保存的副本,并將修改后的副本發(fā)送給內(nèi)存存儲(chǔ)組件952以便作為額外的內(nèi)部寫入請(qǐng)求的一部分將其存儲(chǔ)其中。并且,這一額外的內(nèi)部寫入請(qǐng)求被轉(zhuǎn)發(fā)給該組件的負(fù)載均衡器所選擇的內(nèi)存存儲(chǔ)組件952中的任何一個(gè)vm(其可以不同于被選擇用于初始取回該呼叫狀態(tài)的副本的所述vm),作為響應(yīng),該vm覆寫內(nèi)存組件952的共享物理存儲(chǔ)器資源中的呼叫狀態(tài)953以實(shí)現(xiàn)接收到的修改。

如下進(jìn)一步討論的,在實(shí)施例中,呼叫控制器響應(yīng)于一個(gè)或多個(gè)指令的每一個(gè);響應(yīng)于一個(gè)或多個(gè)指令中的每一個(gè),該呼叫控制器的各自實(shí)例被獨(dú)立地指派用于根據(jù)該指令推進(jìn)通信事件的建立,所指派的呼叫控制器實(shí)例被配置為如此推進(jìn)通信事件的建立。通信事件的建立可以,例如根據(jù)一個(gè)指令至少通過更新現(xiàn)有呼叫狀態(tài)來推進(jìn)。

所述一個(gè)或多個(gè)指令可以包括第一指令,根據(jù)該第一指令至少通過創(chuàng)建通信事件的呼叫狀態(tài)推進(jìn)通信事件的建立。作為替代或者另外,所述一個(gè)或多個(gè)指令可以包括:

-第二指令,根據(jù)該第二指令至少通過基于接收到的用戶標(biāo)識(shí)符選擇一個(gè)或多個(gè)端點(diǎn)推進(jìn)通信事件的建立;和/或

-第三指令,根據(jù)該第三指令至少通過基于另一個(gè)接收到的用戶標(biāo)識(shí)符選擇一個(gè)或多個(gè)其它端點(diǎn)推進(jìn)通信事件的建立;和/或

-第四指令,根據(jù)該第四指令至少通過向至少一個(gè)所述端點(diǎn)發(fā)起邀請(qǐng)指令推進(jìn)通信事件的建立;和/或

-第五指令,根據(jù)該第五指令至少通過向至少一個(gè)所述端點(diǎn)發(fā)起響鈴指令推進(jìn)通信事件的建立;和/或

-第六指令,根據(jù)該第六指令至少通過將一個(gè)或多個(gè)已識(shí)別的用戶附著到通信事件上推進(jìn)通信事件的建立;和/或

-第七指令,根據(jù)該第七指令至少通過向通信事件添加一個(gè)或多個(gè)已識(shí)別的用戶作為其中的參與者推進(jìn)通信事件的建立;和/或

-第八指令,根據(jù)該第八指令至少通過向一個(gè)或多個(gè)所述端點(diǎn)發(fā)送準(zhǔn)備好指令推進(jìn)通信事件的建立。

本主題的一個(gè)方面針對(duì)用于管理通過通信系統(tǒng)的通信網(wǎng)絡(luò)連接的多個(gè)端點(diǎn)之間的通信事件的方法,該通信系統(tǒng)除了所述端點(diǎn)之外包括多個(gè)處理單元,每個(gè)處理單元具有對(duì)保存用于管理該通信事件的可執(zhí)行代碼模塊的計(jì)算機(jī)存儲(chǔ)器的訪問,該代碼模塊被配置為實(shí)現(xiàn)被配置為管理已建立的通信事件的媒體模態(tài)的媒體模態(tài)控制器,和被配置為建立該通信事件的呼叫控制器,該方法包括:通過網(wǎng)絡(luò)接收指令;響應(yīng)于接收到該指令,指派該呼叫控制器的實(shí)例推進(jìn)通信事件的建立;并且該呼叫控制器實(shí)例向媒體模態(tài)控制器和至少一個(gè)所述端點(diǎn)中的至少一個(gè)發(fā)起指令。

在實(shí)施例中,該方法還可以包括:通過網(wǎng)絡(luò)接收另一個(gè)指令;響應(yīng)于接收到所述其它指令,獨(dú)立地指派該呼叫控制器的該實(shí)例或另一個(gè)實(shí)例進(jìn)一步推進(jìn)通信事件的建立,該實(shí)例向媒體模態(tài)控制器和至少一個(gè)所述端點(diǎn)中的一個(gè)發(fā)出另一個(gè)指令。

在實(shí)施例中,該方法還可以包括:呼叫控制器實(shí)例基于接收到的用戶標(biāo)識(shí)符選擇一個(gè)或多個(gè)端點(diǎn)并向所選擇的端點(diǎn)發(fā)起第一指令;并且獨(dú)立地指派該或另一個(gè)呼叫控制器實(shí)例向包括所選擇端點(diǎn)中的一個(gè)的標(biāo)識(shí)符的媒體模態(tài)控制器發(fā)起第二指令。

1.2.2傳輸控制器

通信系統(tǒng)300的代碼模塊被配置為實(shí)現(xiàn)傳輸控制器,其被配置為在該通信事件的端點(diǎn)之間管理該通信事件的媒體的傳輸。傳輸控制器的實(shí)例被指派無需訪問所述端點(diǎn)的呼叫代理而向所述端點(diǎn)的各自傳輸代理傳送該通信事件的傳輸控制信號(hào),該傳輸控制器實(shí)例被獨(dú)立于呼叫控制器指派并且響應(yīng)于通過網(wǎng)絡(luò)接收到的第一指令。響應(yīng)于該傳輸控制器實(shí)例返回對(duì)第一指令的響應(yīng),從所述指派釋放該傳輸控制器實(shí)例,同時(shí)呼叫控制器繼續(xù)工作與所述端點(diǎn)的呼叫代理和/或與媒體模態(tài)控制器通信(該實(shí)例或者被配置為從包括用于如此釋放該實(shí)例的釋放邏輯的通信系統(tǒng)的指派如此釋放)。可以由該呼叫控制器發(fā)起該第一指令。

如圖9b中所示,傳輸控制器906包括,包括負(fù)載均衡器和多個(gè)無狀態(tài)vm的無狀態(tài)傳輸服務(wù)器組件958,以及包括負(fù)載均衡器和多個(gè)有狀態(tài)vm的有狀態(tài)轉(zhuǎn)發(fā)器組件,有狀態(tài)的意義是每個(gè)vm使用它們單獨(dú)被分配的物理存儲(chǔ)器資源存儲(chǔ)關(guān)于過去的事務(wù)的信息,即使那些事務(wù)已經(jīng)完成之后,并且依賴該信息成功地完成未來的事務(wù)—這一信息只能通過該特定vm訪問(并且如果特定vm發(fā)生故障則變得不可訪問并且因此有效地丟失,使得該轉(zhuǎn)發(fā)器組件無法處理某些未來的請(qǐng)求,因?yàn)閷?duì)這些請(qǐng)求的處理依賴于那個(gè)丟失的信息)。無狀態(tài)傳輸服務(wù)器暴露耦接到該組件的負(fù)載均衡器的外部接口907。有狀態(tài)轉(zhuǎn)發(fā)器組件956暴露耦接到該組件的負(fù)載均衡器的內(nèi)部接口957。該傳輸服務(wù)器組件958能夠建立用于通過該內(nèi)部接口955與該轉(zhuǎn)發(fā)器傳輸數(shù)據(jù)的連接。無狀態(tài)傳輸控制組件也能夠建立到該轉(zhuǎn)發(fā)器組件的特定的各個(gè)vm的連接;如下所解釋說明的(1.4部分),某些狀況必須以這種方式繞過有狀態(tài)轉(zhuǎn)發(fā)器組件的負(fù)載均衡器,即,發(fā)往該轉(zhuǎn)發(fā)器組件的某些內(nèi)部請(qǐng)求可以從該傳輸組件發(fā)送到該轉(zhuǎn)發(fā)器組件的特定的識(shí)別出的vm。

1.2.3管道控制器

通信系統(tǒng)300的代碼模塊被配置為實(shí)現(xiàn)管道控制器,它被配置為在所述傳輸控制器的控制下在兩個(gè)所述端點(diǎn)之間創(chuàng)建用于所述媒體傳輸?shù)墓艿?。管道控制器的?shí)例被指派用于獨(dú)立于傳輸控制器并且響應(yīng)于通過網(wǎng)絡(luò)接收到的第二指令創(chuàng)建所述管道。該傳輸控制器在所述管道控制器實(shí)例從所述指派釋放之后,繼續(xù)工作以與所述端點(diǎn)的傳輸代理和/或媒體模態(tài)控制器和/或呼叫控制器通信。所述第二指令是由傳輸控制器發(fā)出的(而不是由呼叫控制器發(fā)起的,該呼叫控制器被配置為不向管道控制器發(fā)起指令)。響應(yīng)于管道控制器對(duì)管道的創(chuàng)建,該傳輸控制器被配置為向媒體控制器提供已創(chuàng)建的管道的一個(gè)或多個(gè)參數(shù)。

在這一實(shí)施例中,管道控制器被配置為針對(duì)各個(gè)不同的媒體模態(tài)創(chuàng)建多個(gè)管道,每個(gè)所述管道經(jīng)由所述網(wǎng)絡(luò)或另一個(gè)網(wǎng)絡(luò)(例如,該管道控制器可以經(jīng)由互聯(lián)網(wǎng)與管道代理通信,但是該管道可以經(jīng)由諸如局域網(wǎng)之類的另一個(gè)網(wǎng)絡(luò)或經(jīng)由pstn)。具體來講,管道控制器被配置為分別針對(duì)音頻和視頻數(shù)據(jù)的傳輸創(chuàng)建單獨(dú)分開的音頻和視頻管道。

如圖9c中所示,管道控制器908包括無狀態(tài)傳輸控制組件964、有狀態(tài)管道狀態(tài)組件962和可操作用于將管道狀態(tài)961存儲(chǔ)在組件共享物理存儲(chǔ)器資源中的內(nèi)存存儲(chǔ)組件960。該管道控制組件暴露外部接口909,并且該管道狀態(tài)組件962和內(nèi)存存儲(chǔ)組件960的每一個(gè)暴露它們各自的內(nèi)部接口965、963。無狀態(tài)管道控制組件954能夠建立用于經(jīng)由所述內(nèi)部接口965與有狀態(tài)管道狀態(tài)組件962傳輸數(shù)據(jù)的連接。該有狀態(tài)管道狀態(tài)組件962能夠建立用于經(jīng)由所述內(nèi)部接口963與內(nèi)存存儲(chǔ)組件傳輸數(shù)據(jù)的連接。下面討論管道控制器的有狀態(tài)行為(部分1.4)。

1.2.4媒體模態(tài)控制器(例如,音頻控制器、視頻控制器)

根據(jù)本發(fā)明的主題,媒體模態(tài)控制器的實(shí)例(正如由通信系統(tǒng)300的處理單元可訪問的上述代碼模塊所實(shí)現(xiàn)的)被指派用于將多個(gè)端點(diǎn)之間的通信事件(由通信系統(tǒng)300實(shí)現(xiàn))的媒體模態(tài)控制信號(hào)傳送給所述端點(diǎn)各自的媒體模態(tài)代理而不訪問所述端點(diǎn)各自的呼叫代理,該媒體模態(tài)控制器實(shí)例被獨(dú)立于呼叫控制器并且響應(yīng)于經(jīng)由該網(wǎng)絡(luò)接收到的指令如此被指派。響應(yīng)于該媒體模態(tài)控制器實(shí)例向接收到的指令返回響應(yīng),從所述指派釋放該媒體模態(tài)控制器實(shí)例,同時(shí)該呼叫控制器繼續(xù)工作以與所述端點(diǎn)的呼叫代理通信。在這一實(shí)施例中,媒體模態(tài)控制器實(shí)例的響應(yīng)的所述返回是對(duì)該端點(diǎn)的媒體代理關(guān)于媒體模態(tài)參數(shù)的協(xié)商的完成的響應(yīng)。在實(shí)施例中,接收到的指令包括所述端點(diǎn)的每一個(gè)的各自標(biāo)識(shí)符,使用所述接收到的標(biāo)識(shí)符傳送媒體模態(tài)控制信號(hào)。

該媒體模態(tài)控制器實(shí)例可以繼續(xù)工作以與所述端點(diǎn)的媒體代理通信,同時(shí)被指派用于推進(jìn)通信事件的建立的呼叫控制器實(shí)例被從該指派釋放和/或失效(例如,被退役或發(fā)生故障),并且另一個(gè)呼叫控制器實(shí)例被指派用于推進(jìn)該通信事件的建立。

所述接收到的指令可以由呼叫控制器(或者其它控制器,例如傳輸控制器)發(fā)起,所述響應(yīng)被返回給該呼叫控制器(或其它控制器,例如傳輸控制器)。例如,該呼叫控制器的實(shí)例可以向媒體控制器發(fā)起所述指令,并且呼叫控制器的該實(shí)例可以在媒體控制器的實(shí)例被釋放之后繼續(xù)工作以與所述端點(diǎn)的呼叫代理通信。在這一實(shí)施例中,該媒體控制器不向呼叫控制器發(fā)起指令。

媒體模態(tài)控制器還被配置為響應(yīng)經(jīng)由該網(wǎng)絡(luò)接收到的其它指令,該媒體模態(tài)控制器的該實(shí)例或另一個(gè)實(shí)例被獨(dú)立地指派用于處理所述其它指令。

除了其它之外,媒體模態(tài)(例如,音頻或視頻)控制器被配置為用于選擇媒體(例如,音頻或視頻)編解碼器和/或媒體(例如,音頻或視頻)變量,并控制端點(diǎn)的媒體(例如,音頻或視頻)代理以基于所述選擇處理該通信事件的媒體(例如,音頻或視頻)數(shù)據(jù)。

在這一實(shí)施例中,通信系統(tǒng)的代碼模塊被配置為實(shí)現(xiàn)至少第一和第二媒體模態(tài)控制器,它們被配置為分別管理已建立的通信事件的第一和第二媒體模態(tài)。第一媒體模態(tài)控制器的實(shí)例被指派將該通信事件的第一媒體模態(tài)控制信號(hào)傳送給所述端點(diǎn)各自的第一媒體模態(tài)代理而不訪問所述端點(diǎn)各自的第二媒體代理,該第一媒體模態(tài)控制器的實(shí)例獨(dú)立于該第二媒體模態(tài)控制并且響應(yīng)于經(jīng)由該網(wǎng)絡(luò)接收到的指令如此被指派。該第一媒體模態(tài)控制器的實(shí)例被配置為響應(yīng)于實(shí)例返回對(duì)所接收到的指令的響應(yīng)而從所述指派釋放,同時(shí)該第二媒體模態(tài)控制器繼續(xù)工作以與該第二媒體代理通信。所述媒體模態(tài)控制器中的一個(gè)是用于管理已建立的通信事件的音頻的音頻控制器,而另一個(gè)所述媒體模態(tài)控制器是用于管理已建立的通信事件的視頻的視頻控制器。該音頻控制器操作用于向端點(diǎn)的音頻代理而不向該端點(diǎn)的視頻代理傳送音頻控制信號(hào),并且該視頻控制器操作用于向端點(diǎn)的視頻代理而不向該端點(diǎn)的音頻代理傳送視頻控制信號(hào)。

每個(gè)媒體模態(tài)控制器還包括可操作用于存儲(chǔ)媒體模態(tài)狀態(tài)(例如,音頻狀態(tài)、視頻狀態(tài))的內(nèi)存存儲(chǔ)組件(類似于呼叫控制器),所述狀態(tài)例如包括在其間進(jìn)行通信事件的一個(gè)或多個(gè)端點(diǎn)各自的標(biāo)識(shí)符。該媒體模態(tài)狀態(tài)數(shù)據(jù)可以包括該媒體模態(tài)是否針對(duì)所述端點(diǎn)的至少一個(gè)實(shí)現(xiàn)的指示(當(dāng)該媒體模態(tài)控制器是音頻控制器時(shí),該指示是音頻針對(duì)該至少一個(gè)端點(diǎn)是否靜音的指示;當(dāng)該媒體模態(tài)控制器是視頻控制器時(shí),該指示是視頻是否針對(duì)該端點(diǎn)實(shí)現(xiàn)的指示)。

在實(shí)施例中,被指派的媒體模態(tài)控制器實(shí)例可以被配置為訪問該通信系統(tǒng)的計(jì)算機(jī)存儲(chǔ)器以訪問已建立的通信事件的媒體模態(tài)狀態(tài)。在實(shí)施例中,該媒體模態(tài)狀態(tài)可以在該媒體模態(tài)控制器從所述指派的釋放之后繼續(xù)保持,這樣該媒體模態(tài)控制器的另一個(gè)實(shí)例能夠該事件中訪問該媒體模態(tài)狀態(tài)。例如,媒體模態(tài)控制器實(shí)例可以生成媒體模態(tài)狀態(tài)數(shù)據(jù)。該媒體模態(tài)狀態(tài)數(shù)據(jù)可以作為該媒體模態(tài)狀態(tài)的一部分存儲(chǔ)。訪問該媒體模態(tài)狀態(tài)可以包括更新該媒體模態(tài)狀態(tài)。該媒體模態(tài)控制器實(shí)例可以被配置為基于該媒體模態(tài)狀態(tài)傳送媒體模態(tài)控制信號(hào)。

作為替代或者另外,由該媒體模態(tài)控制器實(shí)例返回的對(duì)指令的響應(yīng)可以包括該媒體模態(tài)狀態(tài)數(shù)據(jù)。該響應(yīng)可以被返回該指令的發(fā)起者,作為響應(yīng),該發(fā)起者可以存儲(chǔ)接收到的媒體模態(tài)狀態(tài)數(shù)據(jù)。所述接收到的指令可以是由呼叫控制器(或傳輸控制器)發(fā)起的,所述響應(yīng)被返回給該呼叫控制器(或傳輸控制器)。

媒體模態(tài)控制器與傳輸控制器和管道控制器協(xié)同工作以便向端點(diǎn)傳輸管道細(xì)節(jié):該媒體控制器被配置為從該傳輸控制器接收一個(gè)或多個(gè)管道參數(shù),并將接收到的管道參數(shù)的至少一個(gè)傳輸給端點(diǎn)的媒體代理。

該媒體模態(tài)控制器被配置為向所述端點(diǎn)中的一個(gè)的媒體代理發(fā)送發(fā)起控制信號(hào)(例如,在通信事件開始時(shí)或在已建立的通信事件期間),作為響應(yīng),該媒體代理發(fā)起向所述端點(diǎn)的另一個(gè)的媒體數(shù)據(jù)的傳輸。該媒模態(tài)控制器還被配置為向該媒體代理發(fā)送停止控制信號(hào),作為響應(yīng),該媒體代理停止所述媒體數(shù)據(jù)的傳輸。

在這個(gè)實(shí)施例中,呼叫控制器由無狀態(tài)代碼模塊以類似于呼叫控制器的方式實(shí)現(xiàn)。

進(jìn)一步根據(jù)本發(fā)明的主題,公開了用于管理通過通信系統(tǒng)的通信網(wǎng)絡(luò)連接的端點(diǎn)之間的通信事件的方法,該通信系統(tǒng)包括多個(gè)處理單元,每個(gè)處理單元具有對(duì)保存用于管理該通信事件的可執(zhí)行代碼模塊的計(jì)算機(jī)存儲(chǔ)器的訪問,該代碼模塊被配置為實(shí)現(xiàn)被配置為管理已建立的通信事件的媒體模態(tài)的媒體模態(tài)控制器,以及被配置為建立該通信事件的呼叫控制器,該方法包括:指派該媒體模態(tài)控制器的實(shí)例向所述端點(diǎn)各自的媒體代理傳送該通信事件的媒體模態(tài)控制信號(hào)而不訪問所述端點(diǎn)各自的呼叫代理;從所述指派釋放該媒體模態(tài)控制器實(shí)例;以及指派該呼叫控制器的實(shí)例推進(jìn)通信事件的建立,該呼叫控制器實(shí)例在所述媒體模態(tài)控制器實(shí)例的所述釋放之后工作以與該端點(diǎn)的呼叫代理通信。在實(shí)施例中,該呼叫控制器實(shí)例可以在所述媒體模態(tài)控制器的所述釋放之前或之后被如此指派。

媒體模態(tài)控制器實(shí)例可以被配置為響應(yīng)于通過網(wǎng)絡(luò)接收到的指令以訪問該通信系統(tǒng)的計(jì)算機(jī)存儲(chǔ)器,以便:創(chuàng)建該通信事件的媒體模態(tài)狀態(tài),和/或訪問該通信事件的現(xiàn)有媒體模態(tài)狀態(tài)以更新該現(xiàn)有媒體模態(tài)狀態(tài)。所創(chuàng)建的媒體模態(tài)狀態(tài)和/或更新后的媒體模態(tài)狀態(tài)在所述媒體模態(tài)控制器實(shí)例的釋放之后繼續(xù)保持,這樣該實(shí)例或后續(xù)被指派用于傳送該通信事件的其它媒體模態(tài)控制信號(hào)的另一個(gè)媒體模態(tài)控制器實(shí)例能夠該事件中訪問已創(chuàng)建的和/或已更新的媒體模態(tài)狀態(tài)。

1.2.5業(yè)務(wù)管理器

業(yè)務(wù)管理器332被配置為響應(yīng)于來自請(qǐng)求者(發(fā)起者)的針對(duì)該類型的控制器的請(qǐng)求(例如不同類型的服務(wù)邏輯、相同類型的代理),從多個(gè)該類型的控制器選擇特定類型的控制器,該請(qǐng)求者被配置為從業(yè)務(wù)管理邏輯請(qǐng)求媒體模態(tài)控制器地址。作為響應(yīng),該業(yè)務(wù)管理器返回所選擇的媒體模態(tài)控制器的地址,該發(fā)起者被配置為使用所述返回的地址向該媒體模態(tài)控制器發(fā)起指令。

針對(duì)呼叫控制器請(qǐng)求,該請(qǐng)求者可以是該通信事件的端點(diǎn)之一或者除了所述端點(diǎn)之外的網(wǎng)絡(luò)實(shí)體(例如,另一個(gè)控制器),或者被配置為在預(yù)定時(shí)間發(fā)起調(diào)度的通信事件的建立的會(huì)議管理系統(tǒng)。針對(duì)媒體模態(tài)控制器請(qǐng)求,該請(qǐng)求者可以是呼叫控制器(或可能的傳輸控制器),或者沒有參與該通信事件但是造成該通信事件被建立的用戶設(shè)備。針對(duì)傳輸控制器請(qǐng)求,該請(qǐng)求者可以是呼叫控制器。針對(duì)管道控制器請(qǐng)求,該請(qǐng)求者可以是傳輸控制器。

1.3呼叫設(shè)立(建立)和管理

現(xiàn)在將參考圖10a和10b描述呼叫建立方法。在這種情況中,該呼叫是在兩個(gè)用戶alice(圖3的302a)和bob(圖3的302b)之間的,并且根據(jù)本發(fā)明主題,由云服務(wù)邏輯904、906、908、910、912集中控制,所述云服務(wù)邏輯是由業(yè)務(wù)管理器332從各自的多個(gè)那些相同類型的服務(wù)邏輯中選擇的。

應(yīng)該了解的是,該方法可以擴(kuò)展到能夠在多于兩個(gè)用戶之間進(jìn)行呼叫。

除非另外聲明,在下文中,向云控制服務(wù)邏輯(控制器)發(fā)送的所有請(qǐng)求消息(指令)通過經(jīng)由該服務(wù)邏輯的組件的外部接口建立的連接(由請(qǐng)求者建立,它是參與呼叫的該類型的代理或支持該呼叫的不同類型的服務(wù)邏輯之一)發(fā)送,該連接是到該組件的負(fù)載均衡器的連接,而不是到該組件個(gè)體的虛擬機(jī)的連接。

如上所述,每個(gè)接收到的請(qǐng)求消息使得通信系統(tǒng)獨(dú)立地指派適當(dāng)?shù)目刂破鞯膶?shí)施例來處理該指令(其在這一實(shí)施例中相當(dāng)于在其上運(yùn)行的vm的指派,在這個(gè)實(shí)施例中,每個(gè)vm上最多運(yùn)行一個(gè)控制器實(shí)例)。每個(gè)這一請(qǐng)求消息由該組件的負(fù)載均衡器接收,作為響應(yīng),該負(fù)載均衡器根據(jù)該負(fù)載均衡器的負(fù)載均衡機(jī)制(例如,輪詢負(fù)載均衡機(jī)制、vm資源使用依賴負(fù)載均衡機(jī)制)從多個(gè)可能的虛擬機(jī)選擇該組件的虛擬機(jī),并且將該消息轉(zhuǎn)發(fā)給所選擇的虛擬機(jī)以便由該虛擬機(jī)上運(yùn)行的控制器實(shí)例處理;每個(gè)這種請(qǐng)求消息(通過相同的這種連接發(fā)送的或通過不同的這種連接發(fā)送的二者)可以被轉(zhuǎn)發(fā)給該組件的不同虛擬機(jī)—也就是,不假設(shè)(或確保)任意兩個(gè)這種請(qǐng)求消息將會(huì)被轉(zhuǎn)發(fā)到同一個(gè)虛擬機(jī)。對(duì)那些消息的響應(yīng)(以響應(yīng)消息的形式)被經(jīng)由相同的連接返回。響應(yīng)于該vm返回對(duì)該指令的響應(yīng)(也就是運(yùn)行在該vm上的控制器實(shí)例),如上所述的從所述指派釋放該vm(也就是,運(yùn)行在該vm上的控制器實(shí)例)。

除非另外聲明,在下文中,由服務(wù)邏輯響應(yīng)于指令所執(zhí)行的操作由如上所指派的并響應(yīng)該實(shí)例返回響應(yīng)而從該指派釋放的該服務(wù)邏輯的第一實(shí)例執(zhí)行;由該服務(wù)邏輯響應(yīng)于其它指令所執(zhí)行的操作由該服務(wù)邏輯的第一實(shí)例或獨(dú)立于上述第一實(shí)例的指派而指派的第二實(shí)例來執(zhí)行,所述第一實(shí)例或第二實(shí)例也響應(yīng)于該實(shí)例返回對(duì)所述其它指令的響應(yīng)而從該指派釋放。上述由第一實(shí)例執(zhí)行的操作可以涉及或不涉及生成狀態(tài)數(shù)據(jù)(例如,呼叫控制器實(shí)例生成呼叫狀態(tài)數(shù)據(jù);媒體模態(tài)控制器實(shí)例生成媒體狀態(tài)數(shù)據(jù)),該狀態(tài)數(shù)據(jù)在釋放該第一實(shí)例之后繼續(xù)保持以便由該第二實(shí)例使用。

除非另外聲明,在下文中,向特定類型的客戶端一側(cè)代理發(fā)送的所有請(qǐng)求消息(指令)通過到注冊(cè)和導(dǎo)入請(qǐng)求塊934的連接發(fā)送,該連接是使用云800的注冊(cè)和導(dǎo)出請(qǐng)求邏輯914所存儲(chǔ)的并從其轉(zhuǎn)發(fā)給目標(biāo)客戶端的關(guān)于該客戶端的信息建立的(通過該類型的相應(yīng)控制器)。當(dāng)服務(wù)發(fā)送服務(wù)到端點(diǎn)消息時(shí),該響應(yīng)并不沿著相同的連接;而是該端點(diǎn)/代理以restful消息的形式向該服務(wù)發(fā)起新的消息。

為了使alice能創(chuàng)建呼叫,alice的客戶端416a的客戶端用戶界面顯示可選擇的選項(xiàng),可以通過,例如觸摸或滑動(dòng)設(shè)備304a的觸摸屏和/或通過做出設(shè)備304a可檢測的適當(dāng)手勢(shì)或語音命令來選擇。響應(yīng)于這一選項(xiàng)的選擇,alice的客戶端416a的呼叫代理924a向業(yè)務(wù)管理器332發(fā)送(s1000a)對(duì)呼叫控制云邏輯的地址的請(qǐng)求。響應(yīng)于接收到這一請(qǐng)求,業(yè)務(wù)管理器332基于存儲(chǔ)器334中存儲(chǔ)的呼叫控制業(yè)務(wù)管理簡檔并基于多個(gè)可能的云控制服務(wù)邏輯運(yùn)行在的各自的數(shù)據(jù)中心所報(bào)告的那些邏輯各自的當(dāng)前資源使用,從所述多個(gè)可能的云控制服務(wù)邏輯中選擇呼叫控制云邏輯(如上所描述的),并向呼叫代理924a返回(s1000b)所選擇的呼叫控制服務(wù)邏輯904的地址。所選擇的呼叫服務(wù)邏輯904在該呼叫期間或直到該呼叫控制服務(wù)邏輯904發(fā)生故障都處理該呼叫(如下所討論的)。

呼叫代理924a使用返回的地址經(jīng)由接口905建立到該呼叫控制服務(wù)邏輯904的連接,通過該連接客戶端代理924向呼叫控制服務(wù)邏輯904發(fā)送(s1002)呼叫創(chuàng)建消息(包括alice的用戶標(biāo)識(shí)符和/或端點(diǎn)標(biāo)識(shí)符),請(qǐng)求創(chuàng)建新的呼叫。該用戶標(biāo)識(shí)符可以包括,例如alice的用戶名,該用戶名在通信系統(tǒng)中對(duì)于alice是唯一的;該端點(diǎn)標(biāo)識(shí)符可以包括她的用戶設(shè)備304a的標(biāo)識(shí)符(諸如媒體接入控制(mac)地址),這些先前已經(jīng)由注冊(cè)和導(dǎo)出請(qǐng)求邏輯914將其與客戶端416的地址相關(guān)聯(lián)地存儲(chǔ)起來(見上文)。

這一請(qǐng)求由呼叫控制服務(wù)邏輯904的呼叫控制組件954接收,作為響應(yīng),創(chuàng)建呼叫狀態(tài)953,其除了其它之外包括alice的端點(diǎn)標(biāo)識(shí)符(s1003a)。這涉及建立通過接口955到內(nèi)存存儲(chǔ)組件952的連接,通過該連接,呼叫控制組件954向內(nèi)存存儲(chǔ)組件952發(fā)送呼叫狀態(tài)創(chuàng)建消息。響應(yīng)于該消息的接收,該存儲(chǔ)組件952創(chuàng)建該呼叫的呼叫狀態(tài)953(其由該存儲(chǔ)組件952在該呼叫持續(xù)期間維護(hù))并向呼叫控制組件954返回響應(yīng)以將其通知該呼叫控制組件954。然后,呼叫控制組件954向呼叫代理924a發(fā)送(s1003b)消息,該消息指示該呼叫的呼叫狀態(tài)953的成功創(chuàng)建并且包括該新的呼叫狀態(tài)的至少一部分,該部分至少包含該呼叫狀態(tài)的呼叫標(biāo)識(shí)符,該標(biāo)識(shí)符在通信系統(tǒng)300中是唯一的并且因此能夠?qū)⒃摵艚信c通信系統(tǒng)300中的其它呼叫區(qū)分開。

該呼叫創(chuàng)建消息可以選擇性地指定應(yīng)該創(chuàng)建該呼叫狀態(tài)953的未來時(shí)間,該呼叫控制器904將該呼叫狀態(tài)的創(chuàng)建推遲到那個(gè)時(shí)間。這使得能夠在該呼叫之前提前指定呼叫創(chuàng)建。

在步驟s1004,呼叫代理924a通過向呼叫控制器904發(fā)送呼叫附著消息附著到該呼叫,該消息包括alice的呼叫標(biāo)識(shí)符和端點(diǎn)標(biāo)識(shí)符。作為響應(yīng)(s1005a),呼叫控制器904修改該呼叫狀態(tài)953的至少一部分(如上參照?qǐng)D9a所描述的)以指示alice已經(jīng)附著到該呼叫上并且向alice的呼叫代理924a發(fā)送(s1005b)至少包括該呼叫狀態(tài)的修改后的部分的消息。

附著是為了建立連接并且因此允許消息交換(信令)、狀態(tài)交換等等—不意味著“回答”或“加入”(其通過單獨(dú)的指令實(shí)現(xiàn)),但是它允許建立媒體路徑、確定能力、開始響鈴等等。

在步驟s1006處,alice的呼叫代理924a向呼叫控制器904發(fā)送加入消息指示該客戶端416a準(zhǔn)備好從其它呼叫參與者接收實(shí)時(shí)媒體,該消息包括呼叫標(biāo)識(shí)符和端點(diǎn)標(biāo)識(shí)符。作為響應(yīng),該呼叫控制器904修改(s1008)呼叫狀態(tài)的至少一部分以指示alice已經(jīng)加入該呼叫,并向alice的呼叫代理924a發(fā)送(s1010)至少包括該呼叫狀態(tài)的修改后部分的消息。

在步驟s1012處,alice的呼叫代理924a向呼叫控制器904發(fā)送邀請(qǐng)消息,該消息包括另一個(gè)用戶(bob)的標(biāo)識(shí)符(例如,包括用戶名的用戶標(biāo)識(shí)符)并指示該用戶應(yīng)該被邀請(qǐng)加入該呼叫。作為響應(yīng),該呼叫控制器修改(s1014)呼叫狀態(tài)的至少一部分以指示bob正在連接到該呼叫,向alice的呼叫代理924a發(fā)送(s1016)至少包括該呼叫狀態(tài)的修改后部分的消息,并且向bob的呼叫代理924b發(fā)送(s1018)推送通知指示bob已經(jīng)被邀請(qǐng)并包括該呼叫的標(biāo)識(shí)符。該推送通知與bob的標(biāo)識(shí)符(例如,用戶名)被首先一起發(fā)送給注冊(cè)和導(dǎo)出請(qǐng)求邏輯913,作為響應(yīng),該注冊(cè)和導(dǎo)出請(qǐng)求邏輯914將該通知發(fā)送給bob當(dāng)前登錄到的bob的用戶設(shè)備304b(或者如果bob在多于一個(gè)設(shè)備處登錄則發(fā)送給多個(gè)這樣的用戶設(shè)備)。該推送通知(通知指令)是通過bob的用戶設(shè)備304b訂閱的推送信道發(fā)送的(推送信道是本領(lǐng)域內(nèi)公知的),這一訂閱由注冊(cè)邏輯913注冊(cè)。

在實(shí)施例中,bob可能有多個(gè)與相同用戶標(biāo)識(shí)符(例如,用戶名)相關(guān)聯(lián)的用戶設(shè)備(用戶設(shè)備304b是其中一個(gè)),例如如果bob在所有那些用戶設(shè)備處都登錄了。那些設(shè)備的每一個(gè)訂閱一個(gè)推送信道,并且通過那些推送信道由呼叫控制器(并且根據(jù)要求由其它控制器—媒體、管道、傳輸控制器)發(fā)送各自的通知。

一旦接收到bob的用戶標(biāo)識(shí)符,呼叫控制器可操作用于選擇與該標(biāo)識(shí)符相關(guān)聯(lián)(即,與單個(gè)用戶bob相關(guān)聯(lián))的一個(gè)或多個(gè)端點(diǎn)(包括用戶設(shè)備304b),并向所選擇的端點(diǎn)發(fā)送上面提到的通知。針對(duì)端點(diǎn)304b的通知可以因此是發(fā)送到端點(diǎn)的多個(gè)指令中的一個(gè),每個(gè)指令都是響應(yīng)所述相同的接收到的指令(來自alice)而發(fā)送的。

響應(yīng)于接收到該推送通知,bob的呼叫代理通過向呼叫控制器904發(fā)送附著消息附著到該呼叫上,該消息包括bob的端點(diǎn)標(biāo)識(shí)符;bob的呼叫代理924b也輸出“響鈴”通知(例如,聽得見的鈴聲)并通過客戶端416b的用戶界面顯示加入該呼叫的可選擇的“加入”選項(xiàng)。該端點(diǎn)標(biāo)識(shí)符可以,例如包括他的用戶設(shè)備304b的標(biāo)識(shí)符,諸如媒體接入控制(mac)地址。響應(yīng)于接收到這一附著消息,該呼叫控制器904修改(s1022)呼叫狀態(tài)的至少一部分以指示bob的客戶端當(dāng)前處于“響鈴”狀態(tài),并分別向alice的呼叫代理924a和bob的呼叫代理二者發(fā)送(s1024、s1026)消息,那些消息至少包括該呼叫狀態(tài)的修改后的部分。

在步驟s1028處,響應(yīng)于bob的“加入”選項(xiàng)的選擇,bob的呼叫代理向呼叫控制器904發(fā)送包括bob的呼叫標(biāo)識(shí)符和端點(diǎn)標(biāo)識(shí)符的消息。響應(yīng)于接收到這一加入消息,呼叫控制器904修改(s1030)該呼叫狀態(tài)的至少一部分以指示bob已經(jīng)加入該呼叫,并分別向alice的呼叫代理924a和bob的呼叫代理二者發(fā)送(s1032、s1034)消息,那些消息至少包括該呼叫代理的修改后的部分。并且作為對(duì)其響應(yīng),呼叫控制器與其它服務(wù)邏輯通信(s1036);作為響應(yīng),這些其它服務(wù)邏輯與它們相應(yīng)的服務(wù)代理協(xié)商(并且在一定程度上相互協(xié)商)以決定如何在端點(diǎn)之間傳送實(shí)時(shí)媒體和如何以“管道”的形式創(chuàng)建這一傳送的機(jī)制。管道是由該管道控制器和有關(guān)端點(diǎn)上的管道代理中介/輔助的端點(diǎn)網(wǎng)絡(luò)庫棧之間的邏輯連接。下面將參考圖10b對(duì)此進(jìn)行描述。

針對(duì)發(fā)往該呼叫控制器的每個(gè)請(qǐng)求(即,s1002-來自alice的創(chuàng)建呼叫指令,s1004-來自alice的附著指令,s1006-來自alice的加入指令,s1012-來自alice的“邀請(qǐng)bob”指令,s1020-來自bob的附著指令,s1028-來自bob的加入指令),獨(dú)立地指派(由無狀態(tài)呼叫控制組件954的負(fù)載均衡器)該呼叫控制器的實(shí)施例以處理該請(qǐng)求,并且一旦完成該處理(即,響應(yīng)于創(chuàng)建該呼叫狀態(tài);響應(yīng)于將alice附著到該呼叫;響應(yīng)于將alice作為參與者添加到該呼叫;響應(yīng)于邀請(qǐng)bob;響應(yīng)于附著bob;以及響應(yīng)于s1044處的端點(diǎn)之間媒體流的發(fā)起(其發(fā)生在添加bob作為參與者并且完成各種協(xié)商和管道創(chuàng)建s1038之后))則從該指派釋放該實(shí)例。

在這一實(shí)施例中,只將識(shí)別特定端點(diǎn)的端點(diǎn)標(biāo)識(shí)符(與用戶標(biāo)識(shí)符正相反,該用戶標(biāo)識(shí)符可以與多個(gè)端點(diǎn)相關(guān)聯(lián),例如如果用戶同時(shí)在所有那些端點(diǎn)處都登錄)提供給除了該呼叫控制器之外的控制器。因此,只有該呼叫控制器“知道”用戶;其它控制器根據(jù)指令在特定設(shè)備之間創(chuàng)建會(huì)話并且“不知道”它們與特定用戶相關(guān)聯(lián)的事實(shí)。

如圖10b中所示,響應(yīng)于在步驟s1038處更新呼叫狀態(tài)953,呼叫控制器904向該業(yè)務(wù)管理器332發(fā)送針對(duì)該分布式平臺(tái)800的媒體控制器(也就是音頻控制器和視頻控制器)各自的地址的請(qǐng)求。響應(yīng)于接收到這一請(qǐng)求,業(yè)務(wù)管理器332基于存儲(chǔ)器334中存儲(chǔ)的音頻(或視頻)控制業(yè)務(wù)管理簡檔并基于多個(gè)可能的音頻(或視頻)控制器當(dāng)前運(yùn)行在的各自的數(shù)據(jù)中心所報(bào)告的那些音頻(或視頻)控制器各自的當(dāng)前資源使用,從所述多個(gè)可能的音頻(或視頻)控制器選擇音頻控制器906(或視頻控制器908)(如上所描述的),并且將所選擇的音頻控制器906和視頻控制器908各自的地址返回(s1059b)給呼叫控制器904。所選擇的音頻和視頻控制器在該呼叫持續(xù)期間或直到該組件發(fā)生故障一直支持該呼叫(如下所討論)。

作為響應(yīng),呼叫控制器904使用針對(duì)其返回的各自的地址向每個(gè)所述媒體控制器906、908發(fā)送相應(yīng)的會(huì)話創(chuàng)建消息(指令)。該會(huì)話消息包含從呼叫狀態(tài)953取回的關(guān)于該呼叫(alice和bob)的各種信息,諸如alice和bob的呼叫標(biāo)識(shí)符和端點(diǎn)標(biāo)識(shí)符。

每個(gè)媒體控制器906(音頻)、908(視頻)的指派的實(shí)例(如那些控制器的負(fù)載均衡器各自指派的)向端點(diǎn)的適當(dāng)代理傳送媒體模態(tài)控制信號(hào)。通過網(wǎng)絡(luò)接收到的指令包括一個(gè)或多個(gè)端點(diǎn)各自的標(biāo)識(shí)符,該媒體模態(tài)控制信號(hào)就是使用那些標(biāo)識(shí)符傳送的。在這一實(shí)施例中,這是針對(duì)該呼叫的媒體(音頻和視頻分別地)參數(shù)而與alice和bob二者的音頻代理926a、926b(或928a、928b)的協(xié)商的一部分。這包括建立到alice的客戶端416a和bob的客戶端416b二者的相應(yīng)媒體代理926(音頻)、928(視頻)的各自連接(使用注冊(cè)和導(dǎo)出請(qǐng)求邏輯914所存儲(chǔ)的信息),以及通過那些連接交換各自的數(shù)據(jù)。這些協(xié)商還可以包括alice和/或bob的媒體代理926(音頻)、928(視頻)建立通過各自的外部接口907(音頻)、909(視頻)到各自的相應(yīng)媒體控制器906(音頻)、908(視頻)的各自連接,并且通過那些連接交換各自的數(shù)據(jù)。一旦完成音頻(或視頻)協(xié)商,音頻控制器906(或視頻控制器908)向呼叫控制器904返回(s1064)響應(yīng)消息(“ok”),該消息是對(duì)在s1060處發(fā)送的音頻(或視頻)會(huì)話創(chuàng)建消息的響應(yīng)。

上面提到的每個(gè)媒體模態(tài)控制器實(shí)例還可以被配置為生成該媒體模態(tài)(例如,音頻、視頻)的媒體模態(tài)狀態(tài)數(shù)據(jù),所生成的媒體模態(tài)狀態(tài)數(shù)據(jù)被存儲(chǔ)在該通信系統(tǒng)的計(jì)算機(jī)存儲(chǔ)器中,并且存儲(chǔ)的媒體模態(tài)狀態(tài)數(shù)據(jù)在每個(gè)媒體模態(tài)控制器實(shí)例的釋放之后繼續(xù)保持,以便由該媒體模態(tài)控制器的另一個(gè)實(shí)例使用。在實(shí)施例中,該媒體模態(tài)狀態(tài)數(shù)據(jù)可以被發(fā)送給呼叫控制器,作為響應(yīng),該呼叫控制器被配置為存儲(chǔ)那些數(shù)據(jù)(例如,所述返回的包括該媒體模態(tài)狀態(tài)數(shù)據(jù)的響應(yīng))。該呼叫控制器可以被配置為將存儲(chǔ)的媒體模態(tài)狀態(tài)數(shù)據(jù)提供給該媒體模態(tài)控制器的其它實(shí)例。例如,該呼叫控制器的實(shí)例可以被配置為存儲(chǔ)從該媒體模態(tài)控制器實(shí)例接收到的媒體模態(tài)狀態(tài)數(shù)據(jù),并且該呼叫控制器的該實(shí)例或另一個(gè)實(shí)例可以被配置為將存儲(chǔ)的媒體模態(tài)狀態(tài)數(shù)據(jù)提供給其它媒體模態(tài)控制器實(shí)例。

作為替代或者另外,該媒體模態(tài)控制器實(shí)例可以被配置為將該媒體模態(tài)狀態(tài)數(shù)據(jù)作為該媒體模態(tài)狀態(tài)的一部分存儲(chǔ)(見上文1.2.4)。

在媒體協(xié)商(s1062)期間,指派至少一個(gè)媒體實(shí)例(響應(yīng)于指令s1064),并且釋放(一旦返回響應(yīng)s1064)至少一個(gè)媒體實(shí)例,同時(shí)該呼叫控制器繼續(xù)操作以(尤其是同時(shí)發(fā)起該指令s1060的呼叫控制器實(shí)例繼續(xù)工作)與呼叫代理924a、924b通信,例如通過如圖10a中所示的傳輸呼叫狀態(tài)更新s1040、s1042。那些實(shí)例可以是相同的,這樣只指派一個(gè)媒體控制器實(shí)例,并且然后從該指派被釋放?;蛘呖梢栽谠摵艚锌刂破骱兔襟w控制器之間有額外的請(qǐng)求(由該呼叫控制器)/響應(yīng)(由該媒體控制器)交換,其中針對(duì)每個(gè)呼叫控制器指派和釋放多個(gè)媒體控制器實(shí)例,同時(shí)該呼叫控制器繼續(xù)工作。

在步驟s1065a處,呼叫控制器904向業(yè)務(wù)管理器332發(fā)送針對(duì)分布式平臺(tái)800的傳輸控制器的地址的請(qǐng)求。響應(yīng)于接收到這一請(qǐng)求,業(yè)務(wù)管理器332基于存儲(chǔ)在存儲(chǔ)器334中的傳輸控制器業(yè)務(wù)管理簡檔并基于多個(gè)傳輸控制器運(yùn)行在的各自的數(shù)據(jù)中心所報(bào)告的那些傳輸控制器各自的當(dāng)前資源使用,從所述多個(gè)傳輸控制器選擇傳輸控制器910(如上所述),并且返回(s1065b)所選擇的傳輸控制器的地址。所選擇的傳輸控制器在該呼叫持續(xù)期間或直到該控制器發(fā)生故障一直支持該呼叫(如下面討論的)。

作為響應(yīng),呼叫控制器904使用針對(duì)其所返回的地址向所述傳輸控制器910發(fā)送會(huì)話創(chuàng)建消息。該會(huì)話消息包含從呼叫狀態(tài)953取回的關(guān)于該呼叫(alice和bob)的各種信息,諸如alice和bob的呼叫標(biāo)識(shí)符和端點(diǎn)標(biāo)識(shí)符。然后,該傳輸控制器910獲取關(guān)于用戶設(shè)備304a、304b的細(xì)節(jié)并與alice和bob的傳輸代理412a、412b二者協(xié)商該呼叫的傳輸參數(shù)(諸如分組協(xié)議)。這包括建立到alice的客戶端416a和bob的客戶端416b二者的相應(yīng)傳輸代理930的各自連接(使用注冊(cè)和導(dǎo)出請(qǐng)求邏輯914所存儲(chǔ)的信息),并通過傳輸那些連接交換數(shù)據(jù)。這些協(xié)商也可以包括alice和/或bob的傳輸代理930通過外部接口911建立到傳輸控制器910的各自連接,并且通過那些連接交換數(shù)據(jù)。該傳輸控制器還從呼叫控制器904請(qǐng)求媒體細(xì)節(jié)(s1068),諸如支持該呼叫的媒體服務(wù)的類型(在這里是音頻和視頻)(它是在步驟s1070處被返回的)并且還可以從音頻控制器906和/或視頻控制器908(未示出)請(qǐng)求其它細(xì)節(jié)。從這一點(diǎn)以及從alice和bob的傳輸代理930獲得的信息,傳輸控制器確定(除了其它之外)若干個(gè)管道用于該呼叫(一個(gè)管道針對(duì)每個(gè)類型的媒體—在這里是兩個(gè))并且確定針對(duì)那些管道從alice的用戶設(shè)備304a到bob的用戶設(shè)備304b的穿過該網(wǎng)絡(luò)的相應(yīng)路徑。一旦這樣確定,傳輸控制器向業(yè)務(wù)管理器發(fā)送(s1071a)針對(duì)分布式平臺(tái)800的管道控制器的地址的請(qǐng)求。響應(yīng)于接收到這一請(qǐng)求,業(yè)務(wù)管理器332基于存儲(chǔ)在存儲(chǔ)器334中的傳輸控制器業(yè)務(wù)管理簡檔并基于多個(gè)傳輸控制器運(yùn)行在的各自的數(shù)據(jù)中心所報(bào)告的那些傳輸控制器各自的當(dāng)前資源使用,從所述多個(gè)傳輸控制器選擇一個(gè)管道控制器912(如上所述),并且返回(s1071b)所選擇的管道控制器的地址。然后,這一管道控制器在該呼叫期間或直到該控制器發(fā)生故障一直支持該呼叫(如下面討論的)。

作為響應(yīng),傳輸控制器910向所選擇的管道控制器912發(fā)送(s1014)管道創(chuàng)建消息,其包括確定的要?jiǎng)?chuàng)建的管道數(shù)量(這里是兩個(gè))以及關(guān)于針對(duì)那些管道的每一個(gè)確定的穿過網(wǎng)絡(luò)310的路徑的各自細(xì)節(jié)。作為響應(yīng),管道控制器根據(jù)這些各自的細(xì)節(jié)創(chuàng)建(s1076)該數(shù)量的管道。管道的創(chuàng)建包括建立到alice的客戶端416a和bob的客戶端416b二者的相應(yīng)管道代理332的各自連接(使用注冊(cè)和導(dǎo)出請(qǐng)求邏輯914所存儲(chǔ)的信息),并且通過傳輸那些連接交換數(shù)據(jù)。這些協(xié)商還可以包括alice和/或bob的管道代理332通過外部接口913建立到管道控制器910的各自連接,并且通過那些連接交換數(shù)據(jù)。一旦完成,該管道控制器912向傳輸控制器910返回響應(yīng)消息(s1078)以指示管道已經(jīng)建立并且該消息包括音頻和視頻管道的各自管道標(biāo)識(shí)符。

作為響應(yīng),傳輸控制器向音頻控制器906(或視頻控制器908)發(fā)送(s1080)包括音頻(或視頻)管道標(biāo)識(shí)符的消息。作為響應(yīng),該音頻(或視頻)控制器將這些管道細(xì)節(jié)發(fā)送給alice和bob二者的音頻代理926(或視頻代理928),它們的每一個(gè)返回響應(yīng)(“ok”)消息(s1084)。在步驟s1086處,音頻(或視頻)控制器906(908)向傳輸控制器910返回響應(yīng)消息(對(duì)s1080的消息的響應(yīng)),指示該管道標(biāo)識(shí)符已經(jīng)被正確地傳送給適當(dāng)?shù)目蛻舳艘粋?cè)媒體代理(并且它們因此現(xiàn)在可操作用于利用討論中的管道來傳送實(shí)時(shí)媒體數(shù)據(jù))。作為響應(yīng),該傳輸控制器向呼叫控制器發(fā)送(s1088)響應(yīng)消息(是對(duì)s1066的會(huì)話創(chuàng)建消息的響應(yīng)),指示用于在alice和bob的用戶設(shè)備304a、304b之間傳送實(shí)時(shí)媒體的機(jī)制已經(jīng)被成功建立并可以投入使用。

返回圖10a,響應(yīng)于這些各個(gè)協(xié)商的完成和管道的創(chuàng)建(即,響應(yīng)于s1088的響應(yīng)),呼叫控制器904再次更新(s1038)該呼叫狀態(tài)的至少一部分以便指示該呼叫針對(duì)alice和bob二者是“進(jìn)行中的”(也就是,指示該實(shí)時(shí)媒體現(xiàn)在能夠在alice和bob各自的客戶端416a、416b之間流動(dòng)),并且向alice和bob的呼叫代理發(fā)送(s1040、s1042)各自的消息,該消息至少包括該呼叫狀態(tài)的更新后的部分。并且作為對(duì)其的響應(yīng),呼叫控制器904指令(s1044)媒體控制器906(音頻)、908(視頻)開始從alice向bob流動(dòng)媒體并且反之亦然(也就是,向其發(fā)起不同的各自的指令)。響應(yīng)于那些指令s1044,各個(gè)媒體控制器實(shí)例被獨(dú)立地指派發(fā)起所述流。

作為響應(yīng),音頻控制器906(或視頻控制器908)(尤其是指派的它的實(shí)例)指令alice和bob二者的音頻代理926a、926b(或視頻代理928a、928b)開始實(shí)時(shí)音頻(或視頻)的流動(dòng)。作為響應(yīng)(s1050、s1052),每個(gè)音頻(或視頻)代理926發(fā)起通過音頻(或視頻)管道(其細(xì)節(jié)已經(jīng)由音頻/視頻控制器在s1082處提供)的實(shí)時(shí)音頻數(shù)據(jù)(或視頻數(shù)據(jù))的流動(dòng)。

用戶設(shè)備(例如,304a、304b)上的呼叫代理間接控制該設(shè)備上的其它代理—間接在于該呼叫代理向該呼叫控制器發(fā)起指令,作為響應(yīng),該呼叫控制器向另一個(gè)控制器發(fā)起指令,作為響應(yīng),該另一個(gè)控制器向該設(shè)備上的相應(yīng)代理發(fā)起控制信號(hào)。

1.4呼叫建立期間傳輸和管道控制器的有狀態(tài)行為

該傳輸控制器和管道控制器二者存儲(chǔ)各自的傳輸和管道狀態(tài)信息。在上述呼叫建立期間,傳輸狀態(tài)信息由該傳輸控制器910的有狀態(tài)傳輸轉(zhuǎn)發(fā)器組件956維護(hù)—也就是,該轉(zhuǎn)發(fā)器組件956的每個(gè)vm在它自己各自單獨(dú)的存儲(chǔ)器資源而不是共享內(nèi)存資源中存儲(chǔ)關(guān)于完成的事務(wù)的信息,因?yàn)檫@些通常會(huì)被進(jìn)一步訪問。因此,要求訪問存儲(chǔ)在單獨(dú)vm處的這一信息的請(qǐng)求由傳輸服務(wù)器組件繞過負(fù)載均衡器957直接轉(zhuǎn)發(fā)給該vm以便處理。由于這個(gè)原因,通過接口911發(fā)送給傳輸控制器的任何請(qǐng)求,依賴于特定vm的先前請(qǐng)求的處理結(jié)果,該轉(zhuǎn)發(fā)器組件包括該vm的標(biāo)識(shí)符。在呼叫建立已經(jīng)完成之后,傳輸服務(wù)器不再維護(hù)關(guān)于該呼叫控制器為了幫助服務(wù)呼叫所創(chuàng)建的會(huì)話的任何信息(并且依賴其它服務(wù)邏輯,在例如在呼叫控制器904的呼叫狀態(tài)953和/或管道控制器912的管道狀態(tài)961中維護(hù)任何必要的信息)。

此外,在上述呼叫建立期間,管道狀態(tài)信息由管道控制器912的有狀態(tài)管道狀態(tài)組件962維護(hù)—也就是,管道狀態(tài)組件956的每個(gè)vm在它自己各自單獨(dú)的存儲(chǔ)器資源(而不是內(nèi)存組件960中)而不是共享內(nèi)存資源中存儲(chǔ)關(guān)于完成的事務(wù)的信息,因?yàn)檫@些通常會(huì)被進(jìn)一步訪問。因此,要求訪問這一存儲(chǔ)在單獨(dú)vm處的信息的請(qǐng)求由管道控制組件繞過負(fù)載均衡器963直接轉(zhuǎn)發(fā)給該vm以便處理。由于這個(gè)原因,在呼叫建立期間通過接口913發(fā)送給傳輸控制器的任何請(qǐng)求,依賴于特定vm的先前請(qǐng)求的處理結(jié)果,該轉(zhuǎn)發(fā)器組件包括該vm的標(biāo)識(shí)符。一旦呼叫已經(jīng)建立(在這一點(diǎn)上,通常管道控制器將接收更少的與該呼叫有關(guān)的請(qǐng)求),管道狀態(tài)信息被維護(hù)在管道狀態(tài)961中,而不再依賴于該管道控制器908的vm的有狀態(tài)行為(以類似于由呼叫控制器904對(duì)呼叫狀態(tài)953的維護(hù)的方式)。

因此,一旦管道控制器實(shí)例已經(jīng)在呼叫建立期間被指派(響應(yīng)于圖10b中的指令s1074),在常規(guī)操作中它將不會(huì)被從該指派釋放,直到管道已經(jīng)被創(chuàng)建(即,直到返回圖10b中的響應(yīng)s1078)。當(dāng)該管道控制器如此被釋放時(shí),該傳輸控制器(并且尤其是發(fā)起指令s1074的該傳輸控制器的實(shí)例)繼續(xù)與傳輸代理和/或與媒體代理(例如,通過向媒體控制器傳輸管道細(xì)節(jié),如圖10b中的s1080)和/或呼叫控制器(例如,通過向該傳輸控制器返回響應(yīng)s1088,如圖10b中的s1080)通信。

一旦傳輸控制器實(shí)例已經(jīng)在呼叫建立期間被指派(例如,響應(yīng)于指令s1066),在常規(guī)操作中它將不會(huì)被從該指派釋放,直到向該媒體控制器提供了管道細(xì)節(jié)(圖10b中的s1080)。因此,圖10b中由傳輸和管道控制器執(zhí)行的步驟在常規(guī)操作中將分別由單個(gè)傳輸控制器實(shí)例和單個(gè)管道控制器實(shí)例執(zhí)行。

在這個(gè)實(shí)施例中,該通信系統(tǒng)的一些代碼模塊(尤其是實(shí)現(xiàn)傳輸和管道控制器的那些)被配置為在建立通信事件的呼叫建立階段期間是有狀態(tài)的,而在通信事件建立之后是無狀態(tài)的。但是,在其它實(shí)施例中可能并非如此,一個(gè)或多個(gè)管道和傳輸控制器可以被配置為在呼叫建立期間是無狀態(tài)的,其中在呼叫建立期間多次指派和釋放傳輸和管道實(shí)例。

根據(jù)本公開內(nèi)容,用戶設(shè)備包括網(wǎng)絡(luò)接口424,該接口被配置為通過通信系統(tǒng)的通信網(wǎng)絡(luò)從該通信系統(tǒng)的呼叫和媒體模態(tài)控制器接收各自的指令,它們分別被配置為用于建立通信事件和管理已建立的通信事件的媒體模態(tài);以及處理單元402,被配置為執(zhí)行呼叫代理和媒體代理,該呼叫代理被配置為響應(yīng)于從呼叫控制器接收到的指令,并且媒體模態(tài)代理被配置為響應(yīng)于從該媒體模態(tài)控制器接收到的指令而不響應(yīng)于從呼叫控制器接收到的指令。

在實(shí)施例中,呼叫代理可以不響應(yīng)來自媒體模態(tài)控制器的指令。該呼叫代理可以被配置為通過網(wǎng)絡(luò)接口向呼叫控制器發(fā)送通信事件建立指令,作為響應(yīng)該呼叫控制器建立該通信事件。該呼叫代理可以被配置為響應(yīng)于從該呼叫控制器接收到的邀請(qǐng)而加入已建立的通信事件。該處理單元可以被配置為執(zhí)行音頻代理和視頻代理,該音頻代理和視頻代理是各自的媒體模態(tài)代理,該音頻代理響應(yīng)于從該通信系統(tǒng)的音頻控制器接收到的指令但是不響應(yīng)于從該通信系統(tǒng)的視頻控制器接收到的指令,并且該視頻代理響應(yīng)于從該視頻控制器接收到的指令而不響應(yīng)于從該音頻控制器接收到的指令。該網(wǎng)絡(luò)接口還可以被配置為從該通信系統(tǒng)的傳輸控制器接收指令,該傳輸控制器被配置為管理該通信事件的媒體的傳輸;并且該處理單元還可以被配置為執(zhí)行傳輸代理,該傳輸代理被配置為響應(yīng)于從該傳輸控制器接收到的指令而不響應(yīng)于從該呼叫控制器或媒體控制器接收到的指令。該網(wǎng)絡(luò)接口還可以被配置為從管道控制器接收指令,該管道控制器被配置為創(chuàng)建所述媒體的傳輸?shù)墓艿?,并且該處理單元還可以被配置為執(zhí)行管道代理,該管道代理被配置為響應(yīng)于從該管道控制器接收到的指令。響應(yīng)于來自該管道控制器的指令,該管道代理可以被配置為創(chuàng)建到另一個(gè)端點(diǎn)的管道代理的至少一個(gè)媒體管道。該媒體代理可以被配置為通過已創(chuàng)建的媒體管道發(fā)送該通信事件的媒體數(shù)據(jù)。該管道代理可以創(chuàng)建單獨(dú)的音頻和視頻管道。該處理單元可以被配置為執(zhí)行音頻代理和視頻代理,該音頻代理和視頻代理是各自的媒體模態(tài)代理,該音頻代理被配置為通過音頻管道發(fā)送音頻,并且該視頻代理被配置為通過已創(chuàng)建的管道發(fā)送視頻。

還根據(jù)本公開內(nèi)容,用戶設(shè)備包括:被配置為通過通信系統(tǒng)的通信網(wǎng)絡(luò)與該通信系統(tǒng)的呼叫和媒體模態(tài)控制器通信的網(wǎng)絡(luò)接口424,該媒體模態(tài)控制器響應(yīng)于來自通信控制器的指令,該呼叫和媒體控制器分別被配置為建立通信事件和管理已建立的通信事件的媒體模態(tài);以及處理單元402,被配置為執(zhí)行被配置為與媒體模態(tài)控制器通信而不與呼叫控制器通信的媒體模態(tài)代理和被配置為向呼叫控制器發(fā)起指令以間接控制該用戶設(shè)備的媒體模態(tài)代理的操作的呼叫代理。

在實(shí)施例中,該呼叫代理可以被配置為與呼叫控制器通信而不與媒體模態(tài)控制器通信。該呼叫代理可以被配置為通過網(wǎng)絡(luò)接口向呼叫控制器發(fā)送通信事件建立指令,作為響應(yīng),該呼叫控制器建立該通信事件。呼叫代理可以被配置為響應(yīng)于從該呼叫控制器接收到的邀請(qǐng)而加入已建立的通信事件。該處理單元可以被配置為執(zhí)行音頻代理和視頻代理,該音頻代理和視頻代理是各自的媒體模態(tài)代理,該音頻代理被配置為與該通信系統(tǒng)的音頻控制器通信而不與該通信系統(tǒng)的視頻控制器通信,并且該視頻代理與視頻控制器通信而不與該音頻控制器通信。該網(wǎng)絡(luò)接口還可以被配置為與通信系統(tǒng)的傳輸控制器通信,該傳輸控制器被配置為管理該通信事件的媒體的傳輸;并且該處理單元還可以被配置為執(zhí)行傳輸代理,該傳輸代理被配置與傳輸控制器通信而不與呼叫控制器或媒體控制器通信。該網(wǎng)絡(luò)接口還可以被配置為與管道控制器通信,該管道控制器被配置為創(chuàng)建所述媒體的傳輸?shù)墓艿溃⑶以撎幚韱卧€可以被配置為執(zhí)行管道代理,該管道代理被配置為與該管道控制器通信。

2.獨(dú)立的資源分配

本發(fā)明公開了用于實(shí)現(xiàn)通過通信網(wǎng)絡(luò)連接的端點(diǎn)之間的通信事件的通信系統(tǒng),該通信系統(tǒng)包括:多個(gè)處理單元,每個(gè)處理單元具有對(duì)保存用于管理通信事件的可執(zhí)行代碼模塊的計(jì)算機(jī)存儲(chǔ)器的訪問,所述代碼模塊被配置為實(shí)現(xiàn)被配置為管理已建立的通信事件的媒體模態(tài)的媒體模態(tài)控制器和被配置為建立該通信事件的呼叫控制器;以及資源分配器,被配置為將該處理單元和計(jì)算機(jī)存儲(chǔ)器的物理資源分配給呼叫控制器和媒體模態(tài)控制器中的每一個(gè);其中,對(duì)呼叫控制器的物理資源的授權(quán)是獨(dú)立于且不同于對(duì)媒體模態(tài)控制器的物理資源的授權(quán)的。

如上所討論的,在這一實(shí)施例中,代碼模塊被配置為實(shí)現(xiàn)單獨(dú)的音頻和視頻控制器,所述音頻和視頻控制器的每一個(gè)是各自的媒體模態(tài)控制器。對(duì)該音頻控制器的物理資源的授權(quán)可以獨(dú)立于且不同于對(duì)該視頻控制器的物理資源的授權(quán)。

物理資源可以遍布多個(gè)容錯(cuò)區(qū)域分布(如上所討論的;包括數(shù)據(jù)中心中的故障域),授權(quán)給該呼叫控制器的物理資源是在不同于授權(quán)給媒體模態(tài)控制器的物理資源的容錯(cuò)區(qū)域中的。授權(quán)給該呼叫控制器的物理資源可以具有不同于授權(quán)給媒體模態(tài)控制器的物理資源的地理定位。同樣,對(duì)音頻控制器的物理資源的授權(quán)可以在不同于授權(quán)給視頻控制器的物理資源的故障區(qū)域中(并且可能的地理定位)。該傳輸和管道控制器在這一實(shí)施例中具有類似的不同且獨(dú)立的物理資源的準(zhǔn)予(相互獨(dú)立且不同、獨(dú)立且不同于呼叫控制器和媒體控制器)。

在這個(gè)實(shí)施例中,通過控制那些控制器各自的虛擬機(jī)(即,那些控制器的實(shí)例各自運(yùn)行在的虛擬機(jī))來實(shí)現(xiàn)對(duì)各個(gè)控制器(呼叫、媒體(例如音頻和視頻)、傳輸、管道)的所有物理資源的授權(quán)。

此外,任何控制器的各個(gè)組件(例如,642、652)被獨(dú)立于相同控制器的其它組件分配物理資源。例如,呼叫控制器組件954、952具有不同的和獨(dú)立的物理資源的準(zhǔn)予;傳輸控制器組件958、956具有不同的和獨(dú)立的物理資源的準(zhǔn)予;管道控制器組件964、962和960具有不同的和獨(dú)立的物理資源的準(zhǔn)予;并且任何媒體(音頻/視頻)控制器組件具有不同的和獨(dú)立的物理資源的準(zhǔn)予。

在這一實(shí)施例中,資源分配器由各種(并且可能的地理上分散的)數(shù)據(jù)中心320的控制服務(wù)器544的處理單元546上執(zhí)行的代碼實(shí)現(xiàn)。

該通信系統(tǒng)300能夠擴(kuò)展以滿足特定的、謹(jǐn)慎的功能需求,例如在潛在的特定地理區(qū)域中(因?yàn)橥ㄐ畔到y(tǒng)300可以是全球通信系統(tǒng),即能夠在不同國家和/或大洲之間進(jìn)行呼叫)。

為此,nrt呼叫和rtm服務(wù)的設(shè)計(jì)不僅分離邏輯上的還分離謹(jǐn)慎服務(wù)部署的基礎(chǔ)設(shè)施,它向用戶提供總的服務(wù)遞送的特定部分—例如,視頻媒體、音頻媒體、呼叫控制。所述服務(wù)并不是部署為一組在系統(tǒng)的內(nèi)部邏輯上邏輯分離的耦合比特,而是實(shí)際上部署為完全分離的服務(wù)和處理。

傳統(tǒng)上隨著通信服務(wù)的需求的增長,例如在世界上一個(gè)特定部分中,以及對(duì)特定特征的需求的增長,諸如分組視頻呼叫,整個(gè)解決方案需要被向上擴(kuò)展以處理增長的需求。

但是,本公開內(nèi)容的呼叫控制系統(tǒng)900設(shè)計(jì)允許獨(dú)立于例如呼叫控制和信令基礎(chǔ)設(shè)施,作為對(duì)需求變化的響應(yīng)而例如擴(kuò)展視頻媒體基礎(chǔ)設(shè)施。當(dāng)然,響應(yīng)于該相同的變化的需求,也需要擴(kuò)展其它服務(wù),但這是一個(gè)解耦合的獨(dú)立決定。

如上所討論的,實(shí)時(shí)av呼叫的建立由多個(gè)解耦合的、獨(dú)立的控制器(云控制服務(wù)邏輯)執(zhí)行,所述控制器通過明確定義的接口和約定交互以提供實(shí)時(shí)av呼叫和附著的媒體服務(wù)。

這一解耦的服務(wù)設(shè)計(jì)允許每個(gè)服務(wù)在該服務(wù)的內(nèi)部工作方面是自治的,包括部署、擴(kuò)展和服務(wù)特定資源管理。

這一自治性允許每個(gè)服務(wù)獨(dú)立地做出反應(yīng)以加載和擴(kuò)展特定服務(wù)上的要求,而不會(huì)有一種設(shè)計(jì)由于單個(gè)服務(wù)的擴(kuò)展需要的直接結(jié)果引起所有其它服務(wù)擴(kuò)展或變化的需要。這意味著,如果特定國家中對(duì)所述視頻媒體的需求增加,只有該視頻媒體服務(wù)需要擴(kuò)展該特定國家中的服務(wù)基礎(chǔ)設(shè)施,同時(shí)不直接要求其它服務(wù)也一起擴(kuò)展。要注意的是,也可能需要其它服務(wù)也同時(shí)擴(kuò)展,但是這將會(huì)單純地由該類型的需求、每個(gè)服務(wù)的擴(kuò)展限制來驅(qū)動(dòng),而不需要聯(lián)動(dòng)式系統(tǒng)設(shè)計(jì)驅(qū)動(dòng)。

在一些實(shí)施例中,這種擴(kuò)展可以如下實(shí)現(xiàn)。

物理計(jì)算機(jī)資源(例如,物理存儲(chǔ)器資源、物理處理資源)可以被獨(dú)立于其它類型的服務(wù)地分配給每個(gè)類型的服務(wù)。例如,如果一個(gè)或多個(gè)第一類型的服務(wù)邏輯被配置為遞送第一類型的服務(wù),并且一個(gè)或多個(gè)第二類型的服務(wù)邏輯被配置為遞送第二類型的服務(wù),額外的資源可以被獨(dú)立于第二類型服務(wù)地分配給該第一服務(wù)。

針對(duì)第一類型服務(wù)的資源分配可以用下面一個(gè)或多個(gè)方式增加(或減少):

-通過部署額外的(或終止現(xiàn)有的)該類型的服務(wù)邏輯,即通過向第一類型的新的服務(wù)邏輯分配物理計(jì)算機(jī)資源(或收回針對(duì)該類型的現(xiàn)有服務(wù)邏輯的計(jì)算機(jī)資源)—這種方式的一個(gè)示例可以在windowsazuretm云平臺(tái)上部署新的網(wǎng)絡(luò)應(yīng)用;

-通過增加(或減少)第一類型的一個(gè)或多個(gè)現(xiàn)有服務(wù)邏輯的組件中的虛擬機(jī)數(shù)量,即增加(或減少)該組件的計(jì)算機(jī)資源分配—這種方式的一個(gè)示例可以是修改windowsazuretm云平臺(tái)上的網(wǎng)絡(luò)應(yīng)用的網(wǎng)絡(luò)角色或工作者角色中的實(shí)例數(shù)量;

-通過增加(或減少)第一類型的一個(gè)或多個(gè)現(xiàn)有服務(wù)邏輯的組件中的副本虛擬機(jī)的“尺寸”(也就是分配給它的各自的物理資源量),即增加(或減少)分配給特定組件的每個(gè)這樣的副本虛擬機(jī)各自的計(jì)算機(jī)資源—這種方式的一個(gè)示例可以是調(diào)整windowsazuretm云平臺(tái)上的網(wǎng)絡(luò)應(yīng)用的網(wǎng)絡(luò)角色或工作者角色的大小。

使用后兩種技術(shù),資源可以被分配給一個(gè)服務(wù)邏輯,獨(dú)立于相同類型和不同類型二者的其它服務(wù)邏輯。例如,更多的vm可以被添加到第一類型的第一服務(wù)邏輯的組件,和/或那些組件的vm可以被調(diào)整大小,而不需要修改該類型的其它服務(wù)邏輯的組件,也無需修改不同類型的其它服務(wù)邏輯的組件。

此外,使用后兩種技術(shù),資源可以被相互獨(dú)立地分配給相同服務(wù)邏輯的不同組件(例如,向一個(gè)添加vm或調(diào)整其vm的大小,而不修改其它的)。

每個(gè)數(shù)據(jù)中心320a、320b、320c等的dc控制塊構(gòu)成資源分配邏輯,可操作用于實(shí)現(xiàn)這些分配,因?yàn)槊總€(gè)控制塊具有對(duì)其自己的數(shù)據(jù)中心內(nèi)的物理資源使用的控制。如上所討論的,資源分配通過向數(shù)據(jù)中心的外部控制塊559提供配置信息而實(shí)現(xiàn)。

例如,呼叫控制器904、音頻控制器906、視頻控制器908、傳輸控制器910和管道控制器912中的任何一個(gè)可以被以這種方式相互獨(dú)立地(也就是,無需其它被修改)并且獨(dú)立于相同分布式平臺(tái)800上運(yùn)行的任何其它呼叫控制器、音頻控制器、視頻控制器、傳輸控制器和管道控制器地分配計(jì)算機(jī)資源。

例如,如果在特定國家中對(duì)所述視頻媒體的需求增加,則只有部署在該國家的視頻媒體服務(wù)邏輯需要擴(kuò)展(通過在該國家中部署新的視頻控制器服務(wù)邏輯或通過增加分配給該國家中運(yùn)行的現(xiàn)有視頻控制服務(wù)邏輯的資源),同時(shí)不在其它服務(wù)上放置系統(tǒng)設(shè)計(jì)驅(qū)動(dòng)需求以便一致地?cái)U(kuò)展。

此外,那些控制器的組件可以被獨(dú)立于那些組件的其它組件分配資源。例如,呼叫控制器904的呼叫控制組件954可以被獨(dú)立于內(nèi)存存儲(chǔ)組件分配資源,反之亦然,例如如果該呼叫控制組件954沒有足夠的已分配的處理資源來處理外部請(qǐng)求,但是內(nèi)存存儲(chǔ)組件有足夠的已分配的處理資源來處理內(nèi)部讀/寫請(qǐng)求,則無狀態(tài)呼叫控制組件可以被分配更多的處理資源(通過向其添加更多vm或增加其vm的尺寸)而無需修改分配給內(nèi)存存儲(chǔ)組件的處理資源。類似地,額外的共享存儲(chǔ)器資源可以被分配給內(nèi)存存儲(chǔ)組件以便使其能夠存儲(chǔ)更多的呼叫狀態(tài),而無需修改指派給該呼叫控制組件的每個(gè)vm的存儲(chǔ)器資源(這可以是不必要的,因?yàn)樵摵艚锌刂平M件的每個(gè)vm在任何事物期間只需要存儲(chǔ)最多單個(gè)呼叫狀態(tài)或者其一部分)。

其它控制器的組件的資源分配可以被類似地獨(dú)立地調(diào)整。

3.控制服務(wù)邏輯(控制器)故障和呼叫狀態(tài)復(fù)制

公開了用于實(shí)現(xiàn)通過通信網(wǎng)絡(luò)連接的端點(diǎn)之間的通信事件的通信系統(tǒng),該通信系統(tǒng)包括:多個(gè)處理單元,每個(gè)處理單元具有對(duì)保存用于管理通信事件的可執(zhí)行代碼模塊的計(jì)算機(jī)存儲(chǔ)器的訪問,所述代碼模塊被配置為實(shí)現(xiàn)用于建立通信事件和管理已建立的通信事件的一個(gè)或多個(gè)控制器;其中,該計(jì)算機(jī)存儲(chǔ)器被劃分為多個(gè)容錯(cuò)區(qū)域;其中,第一呼叫控制器實(shí)例被配置為訪問該計(jì)算機(jī)存儲(chǔ)器的第一容錯(cuò)區(qū)域以訪問呼叫狀態(tài),該第一呼叫控制器實(shí)例被指派如此訪問該呼叫狀態(tài)作為對(duì)通過該網(wǎng)絡(luò)接收到的第一指令的響應(yīng);并且其中,該呼叫狀態(tài)的至少一部分在計(jì)算機(jī)存儲(chǔ)器的第二容錯(cuò)區(qū)域中被復(fù)制,這樣第二呼叫控制實(shí)例可以訪問所述呼叫狀態(tài)的該至少一部分,該第二呼叫控制器實(shí)例被指派訪如此問該呼叫狀態(tài)的至少一部分作為對(duì)通過網(wǎng)絡(luò)接收到的第二指令的響應(yīng)。

還公開了用于管理通過通信系統(tǒng)的通信網(wǎng)絡(luò)連接的端點(diǎn)之間的通信事件的方法,該通信系統(tǒng)包括:多個(gè)處理單元,每個(gè)處理單元具有對(duì)保存用于管理通信事件的可執(zhí)行代碼模塊的計(jì)算機(jī)存儲(chǔ)器的訪問,所述代碼模塊被配置為實(shí)現(xiàn)用于建立通信事件和管理已建立的通信事件的呼叫控制器,該計(jì)算機(jī)存儲(chǔ)器被劃分為多個(gè)容錯(cuò)區(qū)域,該方法包括:指派該呼叫控制器的第一實(shí)例推進(jìn)通信事件的建立,作為響應(yīng),該第一呼叫控制器實(shí)例將該通信事件的呼叫狀態(tài)存儲(chǔ)在第一容錯(cuò)區(qū)域中;并且指派該呼叫控制器的第二實(shí)例進(jìn)一步推進(jìn)該通信事件的建立和/或管理已建立的通信事件,作為響應(yīng),該第二呼叫控制器實(shí)例訪問第二容錯(cuò)區(qū)域中的該呼叫狀態(tài)的至少一部分的復(fù)制品。

該第二容錯(cuò)區(qū)域不同于該第一容錯(cuò)區(qū)域。

在這一實(shí)施例中,該呼叫控制器的第二實(shí)例被指派訪問該呼叫狀態(tài)的至少一部分,作為對(duì)檢測到的該第一呼叫控制器實(shí)例的狀況的響應(yīng)。該檢測到的狀況是:第一呼叫控制器實(shí)例的故障;第一呼叫控制器實(shí)例的退役;和該第一呼叫控制器實(shí)例具有對(duì)不足夠處理該第二指令的處理單元的物理資源的訪問等等之一。

所述處理單元還可以遍布多個(gè)容錯(cuò)區(qū)域分布,該第一和第二呼叫控制器實(shí)例在第一和第二容錯(cuò)區(qū)域中的各自處理單元上執(zhí)行。該計(jì)算機(jī)存儲(chǔ)器的容錯(cuò)區(qū)域可以基本上與處理單元的容錯(cuò)區(qū)域?qū)?zhǔn)或不對(duì)準(zhǔn)(也就是,這樣處理單元集合和其可訪問的計(jì)算機(jī)存儲(chǔ)器集合與相同的故障源分離)。

在下面的示例中,第一實(shí)例是第一呼叫控制器的實(shí)例,而第二實(shí)例是不同數(shù)據(jù)中心處的第二呼叫控制器的實(shí)例(其可以具有與該第一呼叫控制器不同或相同的地理位置)。該計(jì)算機(jī)存儲(chǔ)器和處理單元的容錯(cuò)區(qū)域基本對(duì)齊,因?yàn)槎叨紝?duì)應(yīng)于處理單元集合和那些集合可訪問的計(jì)算機(jī)存儲(chǔ)器的部分所位于的數(shù)據(jù)中心。

根據(jù)本公開內(nèi)容,用戶設(shè)備包括:被配置為通過通信系統(tǒng)的通信網(wǎng)絡(luò)從該通信系統(tǒng)的呼叫控制器接收指令的網(wǎng)絡(luò)接口424,該呼叫控制器被配置為訪問已建立的通信事件的呼叫狀態(tài);被配置為存儲(chǔ)該呼叫狀態(tài)的本地版本的計(jì)算機(jī)存儲(chǔ)器426;以及被配置為執(zhí)行具有對(duì)該呼叫狀態(tài)的本地版本的訪問的呼叫代理并且被配置為響應(yīng)于從該通信控制器接收到的指令而更新該呼叫狀態(tài)的本地版本的處理單元402。

上述為通信系統(tǒng)300“供電”的云800的控制系統(tǒng)是高性能的并且對(duì)故障有很好的容錯(cuò)性:如上所討論的,特定服務(wù)邏輯的組件中的各個(gè)vm的故障由相關(guān)根vm522和/或dc控制塊556自動(dòng)改正(見圖5和所附文字)。

如上所指出的,服務(wù)邏輯的每個(gè)組件在dc控制塊556的控制下,由運(yùn)行在相同數(shù)據(jù)中心320處的多個(gè)各自的副本虛擬機(jī)(vm)上執(zhí)行的副本代碼實(shí)例實(shí)現(xiàn)。如果組件的那些vm之一發(fā)生故障(例如,由于該vm上執(zhí)行的應(yīng)用代碼的軟件故障、該vm自身的軟件故障、它運(yùn)行在其上的超管理器的軟件故障、該超管理器運(yùn)行在的服務(wù)器的硬件故障,該超管理器相對(duì)于該服務(wù)器本地運(yùn)行或穿過該服務(wù)器所位于的整個(gè)故障域地運(yùn)行所在的服務(wù)器的硬件故障),這在該組件外部是“不可見的”:響應(yīng)于該故障,負(fù)載均衡器停止向該vm轉(zhuǎn)發(fā)請(qǐng)求并簡單地將任何請(qǐng)求轉(zhuǎn)發(fā)給該組件的剩余vm中選擇的一個(gè)vm(所有vm都能夠處理這些請(qǐng)求)。

例如,呼叫的呼叫狀態(tài)953由控制該呼叫的呼叫控制服務(wù)邏輯904的內(nèi)存存儲(chǔ)組件952存儲(chǔ)在該呼叫控制服務(wù)邏輯在該內(nèi)存存儲(chǔ)組件的所有虛擬機(jī)共享的并且可訪問的物理存儲(chǔ)器資源中。如果那些虛擬機(jī)中的一個(gè)發(fā)生故障(例如,如上所述),該呼叫狀態(tài)953還是可以被通過任何其它虛擬機(jī)訪問(例如,由呼叫控制組件954),而該虛擬機(jī)在該呼叫控制器正在運(yùn)行在的dc控制塊556的控制下重新創(chuàng)建。

如果整個(gè)服務(wù)邏輯發(fā)生故障(例如,由于特定組件中的所有虛擬機(jī)因?yàn)闊o論什么原因的故障或由于整個(gè)數(shù)據(jù)中心的硬件或軟件故障),則業(yè)務(wù)管理器332可以根據(jù)請(qǐng)求選擇相同的另一個(gè)服務(wù)邏輯來接管(例如,運(yùn)行在不同數(shù)據(jù)中心處)。例如,如果媒體控制器906(音頻)、908(視頻)之一或者如果傳輸控制器(910)在各自的協(xié)商階段期間發(fā)生故障(s1062、s1072),則呼叫控制器904響應(yīng)于檢測到的這一故障,可以從業(yè)務(wù)管理器332請(qǐng)求該類型的替代服務(wù)邏輯的地址,并且可以指令該替代服務(wù)邏輯通過向其發(fā)送如s1060或1066中的會(huì)話創(chuàng)建消息重新開始討論中的協(xié)商。然后音頻、視頻或傳輸協(xié)商可以重新開始,而無需重復(fù)較早的呼叫建立步驟(因?yàn)樵撘纛l、視頻或傳輸控制器所需要的任何信息被維護(hù)在該呼叫控制器904的呼叫狀態(tài)953中)。

如下所討論的,也復(fù)制其它服務(wù)的狀態(tài)(例如,媒體模態(tài)控制器的媒體模態(tài)狀態(tài))有助于更快的恢復(fù)和更少的破壞可能是有益的。其它服務(wù)的狀態(tài)可以用類似于呼叫狀態(tài)復(fù)制的方式來復(fù)制,正如根據(jù)本公開內(nèi)容的考慮將會(huì)顯而易見的。

但是,根據(jù)呼叫控制器904的類似的故障,諸如該呼叫的呼叫狀態(tài)953之類的信息會(huì)被丟失(或者至少變?yōu)椴豢稍L問)。同時(shí)可以由業(yè)務(wù)管理器332以如上方式選擇新的呼叫控制器,如果該呼叫狀態(tài)953被丟失,則可能需要從頭創(chuàng)建新的呼叫,例如通過alice或bob的呼叫代理924之一從業(yè)務(wù)管理器332請(qǐng)求新的呼叫控制器的地址。

被處理的呼叫信號(hào)可以修改該呼叫的狀態(tài),其為了可靠性、擴(kuò)展和恢復(fù)力可以推遲。這一推遲的呼叫狀態(tài)通過呼叫信號(hào)處理組件從第一dc中的專用內(nèi)存(例如,緩存)層讀取該呼叫狀態(tài),處理與該呼叫有關(guān)的信令,以及將該呼叫狀態(tài)的任何變化寫入該緩存層來實(shí)現(xiàn)。在此,推遲呼叫狀態(tài)意味著每次處理修改該呼叫狀態(tài)的請(qǐng)求(而不是該呼叫狀態(tài)被保持或維持在處理該命令的虛擬機(jī)中),都從組件(例如,緩存層)的共享存儲(chǔ)器資源讀取/寫入。

下面描述的是故障轉(zhuǎn)移過程,借此控制呼叫的呼叫控制器的故障被改正而無需終止該呼叫。

呼叫狀態(tài)是在狀態(tài)變化時(shí)以基于事件的方式從第一容錯(cuò)區(qū)域(在此是第一數(shù)據(jù)中心(dc),例如圖3中的302a)復(fù)制到至少第二容錯(cuò)區(qū)域(在此至少是第二數(shù)據(jù)中心,例如圖3中的302b)的,以確保如果該第一dc發(fā)生故障,該呼叫能夠被恢復(fù)、繼續(xù)或者至少能夠用正確的參與者列表重新開始。

根據(jù)本發(fā)明主題,每個(gè)呼叫的呼叫狀態(tài)953或其至少一部分在多個(gè)呼叫控制器之間復(fù)制(也就是,遍布多個(gè)數(shù)據(jù)中心)。如果一個(gè)呼叫控制器發(fā)生故障,另一個(gè)呼叫控制器可以使用復(fù)制的呼叫狀態(tài)接管,而不需要從頭重新開始。

如上所討論的,特定呼叫控制器的每個(gè)虛擬機(jī)是無狀態(tài)的(無狀態(tài)呼叫控制組件954的那些和內(nèi)存存儲(chǔ)組件952的那些)—被超出特定事務(wù)維護(hù)的關(guān)于該呼叫的唯一有用的信息被維護(hù)在內(nèi)存存儲(chǔ)組件952的共享存儲(chǔ)器資源中存儲(chǔ)的呼叫狀態(tài)953中(而不是任何特定vm的單獨(dú)指派的存儲(chǔ)器資源中)。這些共享存儲(chǔ)器資源地理上位于該組件(以及該呼叫控制器)運(yùn)行在的數(shù)據(jù)中心處。因此,該呼叫狀態(tài)包含一個(gè)呼叫控制器能夠無縫地從另一個(gè)進(jìn)行接管(當(dāng)呼叫期間一個(gè)呼叫控制器發(fā)生故障時(shí))所要求的全部信息,初始發(fā)往該呼叫控制器的任何請(qǐng)求可以被重定向到存儲(chǔ)副本(復(fù)制品)呼叫狀態(tài)的另一個(gè)呼叫控制器,該副本呼叫狀態(tài)包含足夠所述其它呼叫控制器能夠處理那些請(qǐng)求的信息。

現(xiàn)在將參考圖11a、11b和11c描述呼叫狀態(tài)復(fù)制處理。

圖11a示出了第一呼叫控制器905a—運(yùn)行在第一數(shù)據(jù)中心920a處—包括具有外部接口905a的第一無狀態(tài)呼叫控制組件954a,以及具有內(nèi)部接口953a的內(nèi)存存儲(chǔ)組件952a。第一物理共享存儲(chǔ)器資源集合被分配(由該呼叫控制器運(yùn)行在的數(shù)據(jù)中心320a的dc控制塊)給第一呼叫控制器905a以便由該呼叫控制器905a的內(nèi)存952a存儲(chǔ)組件使用。這些物理存儲(chǔ)器資源地理上位于第一數(shù)據(jù)中心920a處。該第一呼叫控制器905a通過向呼叫代理924遞送呼叫控制服務(wù)來控制呼叫(該呼叫代理924已經(jīng)初始響應(yīng)于從業(yè)務(wù)管理器332接收到該呼叫控制器的地址而從該呼叫控制器請(qǐng)求了該服務(wù),已由業(yè)務(wù)管理器邏輯332至少部分基于存儲(chǔ)器334中存儲(chǔ)的呼叫控制器策略724[1]選擇該呼叫控制器)。為此目的,該第一呼叫控制服務(wù)邏輯還與其他服務(wù)邏輯通信,例如音頻控制器、視頻控制器、傳輸控制器。呼叫狀態(tài)953a由內(nèi)存存儲(chǔ)組件953a存儲(chǔ)。

第二呼叫控制器940b(運(yùn)行在第二數(shù)據(jù)中心920b處)包括具有外部接口905b的第二無狀態(tài)呼叫控制組件954b,以及具有內(nèi)部接口955b的內(nèi)存存儲(chǔ)組件952b。第二物理共享存儲(chǔ)器資源集合被分配(由該呼叫控制器運(yùn)行在的數(shù)據(jù)中心320b的dc控制器塊)給該第二呼叫控制器905b以便由該呼叫控制器905b的內(nèi)存存儲(chǔ)組件952b使用。這些物理存儲(chǔ)器資源地理上位于第一數(shù)據(jù)中心920a處。

該第一和第二物理存儲(chǔ)器資源集合位于不同地理位置(也就是每一個(gè)位于不同于另一個(gè)的地理位置),該第一和第二數(shù)據(jù)中心320a、320b位于不同地理位置。例如,它們可以位于一個(gè)國家的不同州或地區(qū)、在不同國家、在不同大洲上、在不同時(shí)區(qū)或者分開為使得對(duì)二者都產(chǎn)生影響(即影響其操作)的單個(gè)運(yùn)動(dòng)事件(例如,地震、戰(zhàn)爭)不太可能發(fā)生。

現(xiàn)在將參考圖11c描述呼叫狀態(tài)復(fù)制的處理。

如上所討論的,一旦接收到初始呼叫創(chuàng)建消息,該第一呼叫控制組件905a創(chuàng)建呼叫狀態(tài)952b(包括該呼叫在該通信系統(tǒng)300中唯一的標(biāo)識(shí)符),通過接口955a將創(chuàng)建的呼叫狀態(tài)發(fā)送給內(nèi)存存儲(chǔ)組件952a以便存儲(chǔ),并且發(fā)起向呼叫代理924的呼叫控制服務(wù)的遞送(s1102)。該呼叫控制組件905a還向第二呼叫控制器954b發(fā)送新創(chuàng)建的呼叫狀態(tài)的副本952b(例如,至少通過向其發(fā)出指令)—尤其是通過接口905b向第二呼叫控制組件954b發(fā)送;作為響應(yīng),該呼叫控制組件954b將接收到的呼叫狀態(tài)發(fā)送給第二內(nèi)存存儲(chǔ)組件,它將該呼叫狀態(tài)副本953b存儲(chǔ)在該第二內(nèi)存存儲(chǔ)組件952b的共享物理存儲(chǔ)器資源中。

在呼叫控制服務(wù)的遞送過程中,響應(yīng)于事件(例如,圖10a和10b中的s1006、s1012、s1020、s1088),該呼叫控制組件954a(尤其是指派給它的呼叫控制器實(shí)例)通過與內(nèi)存存儲(chǔ)組件952a通信來更新(s1104)該呼叫狀態(tài)953a(通過修改其至少一部分)。該呼叫控制組件還可操作用于通過第二呼叫控制組件954b的外部接口905b(例如,至少通過向其發(fā)送指令)向該第二呼叫控制器904b發(fā)送(s1108)更新后的呼叫狀態(tài)953a的至少一部分的副本。發(fā)送的這一部分更新后的呼叫狀態(tài)包括該呼叫的標(biāo)識(shí)符。響應(yīng)于接收到該呼叫狀態(tài),第二呼叫控制組件954b(尤其是,指派給它的呼叫控制器實(shí)例)將更新后的呼叫狀態(tài)轉(zhuǎn)發(fā)以便由此存儲(chǔ);該第二內(nèi)存存儲(chǔ)組件952b根據(jù)所述更新修改該呼叫狀態(tài)副本953b(使用該呼叫標(biāo)識(shí)符識(shí)別出的)。

該第一呼叫控制組件可以響應(yīng)于更新第一區(qū)域中的該呼叫狀態(tài)作為對(duì)多個(gè)這種指令和/或響應(yīng)的響應(yīng),但是更新第二區(qū)域中的該呼叫狀態(tài)的至少一部分作為只對(duì)所述多個(gè)指令和/或響應(yīng)的選擇(也就是至少一個(gè)但不是全部)的響應(yīng)。例如,只響應(yīng)于對(duì)示出的導(dǎo)致圖10a和10b中的呼叫狀態(tài)更新的一些指令才更新呼叫狀態(tài)副本953b(例如,僅被稱為如上標(biāo)題1.2.1呼叫控制器下的第一到第八指令的指令的選擇)。所述指令的選擇可以依賴于該呼叫的一個(gè)或多個(gè)參數(shù)(下面討論)。這一粒度在對(duì)控制器故障的恢復(fù)性(隨著該呼叫狀態(tài)的更多部分被復(fù)制(例如,在低端)能提供更好的可靠性,使得如果例如控制器發(fā)生故障,終止的呼叫能夠重新開始,并且在高端處用從發(fā)生故障的控制器向新控制器的或多或少的無縫“切換”徹底避免該呼叫被終止)和存儲(chǔ)器節(jié)省(越少的呼叫狀態(tài)復(fù)制要求越少的計(jì)算機(jī)存儲(chǔ))之間提供可調(diào)整的平衡。

如果該第一呼叫控制器發(fā)生故障(圖11b中以圖表描繪的),該呼叫控制服務(wù)的遞送由第二呼叫控制器904b如下所解釋地使用呼叫狀態(tài)副本953b繼續(xù)。

第一呼叫控制器的這一故障(即,其第一實(shí)例的故障)是可由呼叫代理924檢測到的,例如由于與第一呼叫控制器904的現(xiàn)有連接意外地終止和/或由于發(fā)往其的請(qǐng)求消息在大于超時(shí)周期后還沒有被響應(yīng)。第一呼叫控制器的這一故障還可由業(yè)務(wù)管理器332基于從該第一呼叫控制器運(yùn)行在的數(shù)據(jù)中心320的資源報(bào)告塊(例如,圖5b的558)的報(bào)告來檢測。響應(yīng)于檢測到這一故障,該業(yè)務(wù)管理器被配置為基于呼叫控制器策略722[1],用第二呼叫控制器的地址響應(yīng)于針對(duì)已經(jīng)導(dǎo)致該第一呼叫控制器可用時(shí)被選擇的呼叫控制器的地址的任何請(qǐng)求。

響應(yīng)于呼叫代理924的這一檢測,呼叫代理924再次從業(yè)務(wù)管理器332請(qǐng)求呼叫控制器的地址。該請(qǐng)求可以指示第一呼叫控制器是無反應(yīng)的并且指示應(yīng)該返回不同呼叫控制器的地址,或者該請(qǐng)求可以不指定這些(并且可以依賴于該業(yè)務(wù)管理332也檢測到該第一組件的故障)。無論哪種方式,作為響應(yīng),業(yè)務(wù)管理器332返回第二呼叫控制器904b的地址,其可以用于通過接口905與第二呼叫控制組件954b建立連接。

然后,該服務(wù)代理924可以發(fā)送包括該呼叫標(biāo)識(shí)符的任何請(qǐng)求,所述請(qǐng)求本來應(yīng)該被發(fā)送到第一呼叫控制器904a(如果其沒有失敗的話),替代地被發(fā)送到第二呼叫控制器904b。該第二呼叫控制器使用呼叫狀態(tài)副本953b處理這些請(qǐng)求,該呼叫狀態(tài)副本是使用這些請(qǐng)求的呼叫標(biāo)識(shí)符識(shí)別出來的。這可以包括繼續(xù)建立該通信事件(如果其還沒有被建立)和/或一旦已經(jīng)建立則管理該通信事件(通過第一和第二呼叫控制器之一)。

在一些實(shí)施例中,呼叫狀態(tài)副本953b可能不是呼叫狀態(tài)953a的完整副本,即初始呼叫狀態(tài)可能包含比該副本更多的信息,該副本只包含關(guān)于該呼叫的選擇性的信息。在這種情況中,呼叫狀態(tài)953a創(chuàng)建時(shí),由第一呼叫控制器向第二呼叫控制器發(fā)送初始副本只是該呼叫狀態(tài)的一部分的副本,其包含足夠使該呼叫即使第一呼叫控制器發(fā)生故障也能繼續(xù)進(jìn)行的信息,而不是包含該呼叫的每個(gè)單獨(dú)參數(shù)(一旦第一呼叫控制器發(fā)生故障,這些參數(shù)可以被重置)。作為替代或者另外,第一呼叫控制器可以只向第二呼叫控制器發(fā)送消息以更新該呼叫狀態(tài)副本953b,作為對(duì)一些事件而不是其它事件的響應(yīng)(這樣一些事件導(dǎo)致“主”呼叫狀態(tài)953a而不是副本953b的更新)。在這種情況中,副本953b包含足夠的信息使得一旦第一呼叫控制組件發(fā)生故障,即使一些最近的歷史被丟失該呼叫也能夠繼續(xù)進(jìn)行。相比完全呼叫狀態(tài)復(fù)制,前者要求更多存儲(chǔ)器資源而后者要求更多網(wǎng)絡(luò)資源,但是與完全復(fù)制相比,二者都易于造成第一呼叫控制器發(fā)生故障的話呼叫信息的一些丟失。

呼叫狀態(tài)中的多少要被復(fù)制可以取決于該呼叫的一個(gè)或多個(gè)參數(shù)。也就是,在一個(gè)實(shí)施例中,該呼叫控制器被配置為基于該通信事件的一個(gè)或多個(gè)參數(shù)為所述復(fù)制選擇該呼叫狀態(tài)的至少一部分。所述參數(shù)可以包括與參與該呼叫事件的一個(gè)或多個(gè)用戶相關(guān)聯(lián)的一個(gè)或多個(gè)優(yōu)先級(jí)參數(shù)(例如,具有較高優(yōu)先級(jí)的用戶是那些已為優(yōu)質(zhì)服務(wù)付費(fèi)的用戶,而較低優(yōu)先級(jí)用戶是那些沒有為優(yōu)質(zhì)服務(wù)付費(fèi)的用戶),所選擇的該呼叫狀態(tài)的至少一部分組成較高優(yōu)先級(jí)參數(shù)的呼叫狀態(tài)的主要部分和較低優(yōu)先級(jí)參數(shù)的呼叫狀態(tài)的一小部分。在這種情況中,由該通信系統(tǒng)300的運(yùn)營商向用戶指派質(zhì)量參數(shù)。

作為替代或者另外,所述參數(shù)可以包括該通信事件當(dāng)前過去的時(shí)間(也就是從該通信事件建立的時(shí)間量或從首次創(chuàng)建該呼叫狀態(tài)的時(shí)間量),該呼叫狀態(tài)的至少一部分組成針對(duì)較長的過去時(shí)間的呼叫狀態(tài)的主要部分和針對(duì)較短的過去時(shí)間的呼叫狀態(tài)一小部分。

所述參數(shù)構(gòu)成該呼叫狀態(tài)的一部分,這樣該呼叫狀態(tài)本身指示該呼叫狀態(tài)中的多少應(yīng)該被復(fù)制。

所復(fù)制的該呼叫狀態(tài)的至少一部分可以,例如包括參與該通信事件的一個(gè)或多個(gè)用戶的各自標(biāo)識(shí)符和/或一個(gè)或多個(gè)所述端點(diǎn)的各自標(biāo)識(shí)符。這至少使該呼叫能夠在原始呼叫狀態(tài)變得不可訪問的事件中重新開始。所述呼叫狀態(tài)的至少一部分定義了所述用戶之間的關(guān)系,例如將所述用戶之一識(shí)別為該呼叫的主持人(或擁有者)。

所復(fù)制的該呼叫狀態(tài)的至少一部分可以包括從媒體模態(tài)控制器接收到的(例如,在該呼叫的建立期間)該通信事件的媒體模態(tài)狀態(tài)數(shù)據(jù)(如上所描述的)。例如,該媒體模態(tài)(例如,音頻或視頻)狀態(tài)數(shù)據(jù)可以包括一個(gè)或多個(gè)媒體模態(tài)(例如,音頻或視頻)針對(duì)每個(gè)用戶是否活躍的各自指示(例如,各自的音頻對(duì)一個(gè)或多個(gè)參與用戶是否靜音、或各自的視頻對(duì)一個(gè)或多個(gè)參與用戶是否啟用的指示)。該呼叫控制器(例如,其第二實(shí)例)可以從第二區(qū)域中的呼叫狀態(tài)的至少一部分向該媒體控制器提供媒體模態(tài)狀態(tài)數(shù)據(jù),作為響應(yīng),該媒體模態(tài)控制器的實(shí)例被指派用于基于所提供的媒體模態(tài)狀態(tài)數(shù)據(jù)向端點(diǎn)傳送媒體模態(tài)控制信號(hào)(就像媒體模態(tài)狀態(tài)數(shù)據(jù)已經(jīng)從第一區(qū)域中的原始呼叫狀態(tài)提供(例如,由第一呼叫控制器實(shí)例)一樣)。

服務(wù)解耦意味著無論什么檢測出狀況造成了第一呼叫控制器的故障,該狀況都不會(huì)影響提供該媒體模態(tài)狀態(tài)數(shù)據(jù)的媒體模態(tài)控制器。因此,該媒體模態(tài)控制器可以繼續(xù)工作以便在檢測出的條件之后管理該通信事件的媒體模態(tài)。

所復(fù)制的該呼叫狀態(tài)的至少一部分可以基于參數(shù)被選擇為包括下面之一:通信事件的媒體模態(tài)狀態(tài)數(shù)據(jù)和參與該通信事件的一個(gè)或多個(gè)用戶的各自標(biāo)識(shí)符和/或一個(gè)或多個(gè)所述端點(diǎn)的各自標(biāo)識(shí)符(例如,針對(duì)較高優(yōu)先級(jí)用戶/較長的過去時(shí)間),或者所述標(biāo)識(shí)符而不是所述媒體模態(tài)狀態(tài)數(shù)據(jù)(例如,針對(duì)較低優(yōu)先級(jí)用戶/較短的過去時(shí)間)。

因此,復(fù)制可以被基于參數(shù)調(diào)節(jié)以根據(jù)需要提供不同水平的健壯性。例如,基于一個(gè)或多個(gè)參數(shù),所述呼叫狀態(tài)的至少一部分可以被選擇為組成下面之一:

-該呼叫狀態(tài)的第一部分,借此如果該第一容錯(cuò)區(qū)域變得不可訪問,則呼叫控制器能夠使用該第一部分繼續(xù)管理該通信事件而無需終止該通信事件,或者

-該呼叫狀態(tài)的第二部分,借此如果第一容錯(cuò)區(qū)域變得不可訪問且該通信被終止作為響應(yīng),則該呼叫控制器能夠使用該第二部分重新建立該通信事件。

該呼叫狀態(tài)的第一部分可以,例如組成該呼叫狀態(tài)的整體,從而該呼叫狀態(tài)的整體被復(fù)制在第二容錯(cuò)區(qū)域中。

3.1復(fù)制媒體模態(tài)狀態(tài)

在實(shí)施例中,第一媒體模態(tài)控制器實(shí)例被配置為訪問計(jì)算機(jī)存儲(chǔ)器的第三容錯(cuò)區(qū)域以訪問媒體模態(tài)狀態(tài),該第一媒體模態(tài)控制器實(shí)例被指派訪問該媒體模態(tài)狀態(tài)作為對(duì)通過網(wǎng)絡(luò)接收到的第三指令的響應(yīng);并且其中,在該計(jì)算機(jī)存儲(chǔ)器的第四容錯(cuò)區(qū)域中復(fù)制該媒體模態(tài)狀態(tài)的至少一部分,這樣第二媒體模態(tài)控制器實(shí)例能夠訪問該媒體模態(tài)狀態(tài)的至少一部分,該第二媒體模態(tài)控制器實(shí)例被指派為如此訪問該媒體模態(tài)狀態(tài)的至少一部分作為對(duì)通過網(wǎng)絡(luò)接收到的第四指令的響應(yīng)。

該媒體模態(tài)控制器可以被配置為向該呼叫控制器的第一實(shí)例提供媒體模態(tài)狀態(tài)數(shù)據(jù),作為響應(yīng),第一區(qū)域中的呼叫狀態(tài)和第二區(qū)域中的該呼叫狀態(tài)的至少一部分被基于該媒體模態(tài)狀態(tài)數(shù)據(jù)更新。該媒體模態(tài)控制器的第二實(shí)例可以被指派訪問該媒體模態(tài)狀態(tài)的至少一部分作為對(duì)檢測到的該第一媒體模態(tài)控制器實(shí)例的狀況的響應(yīng)。所檢測出的狀況可以是下面之一:第一媒體模態(tài)控制器實(shí)例的故障;該媒體模態(tài)呼叫控制器實(shí)例的退役;以及該媒體模態(tài)控制器的第一實(shí)例具有對(duì)不足夠處理該第二指令的處理單元的物理資源的訪問。該呼叫控制器可以接著檢測到的狀況繼續(xù)工作以建立該通信事件和/或管理已建立的通信事件。

媒體模態(tài)狀態(tài)可以用等效于上述呼叫狀態(tài)復(fù)制的方式來復(fù)制,正如將會(huì)顯而易見的(呼叫控制器替代媒體模態(tài)控制器,并且呼叫狀態(tài)替代媒體模態(tài)狀態(tài))。

第三容錯(cuò)區(qū)域不同于第四容錯(cuò)區(qū)域。該第三和第四容錯(cuò)區(qū)域可以與在其中維護(hù)該呼叫狀態(tài)及其復(fù)制品的第一和/或第二容錯(cuò)區(qū)域不同或相同。

3.2虛擬緩存實(shí)現(xiàn)

公開了一種在包括不同地理位置處的多個(gè)處理單元的通信系統(tǒng)中復(fù)制數(shù)據(jù)的方法,每個(gè)處理單元具有對(duì)在該地理位置處的計(jì)算機(jī)存儲(chǔ)器的訪問,該計(jì)算機(jī)存儲(chǔ)器保存用于實(shí)現(xiàn)虛擬緩存的各自代碼模塊,該方法包括:向所述處理單元的第一個(gè)發(fā)送第一存儲(chǔ)指令,作為響應(yīng),該處理單元上的該虛擬緩存的第一實(shí)例訪問第一處理單元的計(jì)算機(jī)存儲(chǔ)器以存儲(chǔ)數(shù)據(jù);并且作為對(duì)其響應(yīng),向不同于該第一個(gè)的地理位置處的所述處理單元的第二個(gè)發(fā)送第二存儲(chǔ)指令,作為響應(yīng),該處理單元上的第二虛擬緩存實(shí)例訪問該第二處理單元的計(jì)算機(jī)存儲(chǔ)器以復(fù)制所述數(shù)據(jù)。

所述數(shù)據(jù)可以包括在通信系統(tǒng)的兩個(gè)或多個(gè)端點(diǎn)之間進(jìn)行的通信事件的呼叫狀態(tài)的至少一部分。

4.獨(dú)立的可部署代理

上面已經(jīng)參考每個(gè)都具有完整代理“棧”(呼叫、媒體(例如音頻和視頻)、傳輸、管道)的端點(diǎn)進(jìn)行了描述,該通信系統(tǒng)架構(gòu)的解耦和特性將其自身提供給單獨(dú)不同設(shè)備上的代理的部署。例如,呼叫控制代理可以被部署在用戶的一個(gè)設(shè)備上,媒體代理部署在該用戶的另一個(gè)設(shè)備上;該呼叫控制器能夠簡單地向媒體控制器提供所述其它設(shè)備的標(biāo)識(shí)符并且它們將在該設(shè)備和所述其它呼叫端點(diǎn)之間創(chuàng)建合適的媒體會(huì)話,而該媒體控制器永遠(yuǎn)不需要知道該控制用戶設(shè)備的存在。此外,所述其它用戶設(shè)備可以具有最小化的或者沒有呼叫控制邏輯,并且能夠簡單地動(dòng)作以接收和捕捉視頻,所有呼叫控制通過該呼叫控制器和控制設(shè)備之間的交互來處理。

部署在不同設(shè)備上的代理與它們各自的控制器交互,并且實(shí)現(xiàn)對(duì)相互的間接控制,就像它們被部署在同一個(gè)設(shè)備上時(shí)所做的那樣(如上所描述的)。

公開了用于實(shí)現(xiàn)包括第一和第二計(jì)算機(jī)設(shè)備的計(jì)算機(jī)系統(tǒng)和通過通信網(wǎng)絡(luò)連接的一個(gè)或多個(gè)額外的端點(diǎn)之間的通信事件的通信系統(tǒng),該通信系統(tǒng)包括:多個(gè)處理單元,每個(gè)具有對(duì)保存用于管理通信事件的可執(zhí)行代碼模塊的計(jì)算機(jī)存儲(chǔ)器的訪問,該代碼模塊被配置為實(shí)現(xiàn)被配置為管理已建立的通信事件的媒體模態(tài)的媒體模態(tài)控制器和被配置為建立該通信事件的呼叫控制器;其中,響應(yīng)于由該呼叫控制器向媒體控制器發(fā)起的指令,媒體模態(tài)控制器的實(shí)例被指派,以便將該通信事件的媒體模態(tài)控制器信號(hào)傳輸給第一設(shè)備上的媒體代理,而無需訪問第二設(shè)備上的呼叫代理;并且其中,該呼叫控制器發(fā)起的指令是對(duì)通過網(wǎng)絡(luò)從第二設(shè)備上的呼叫代理接收到的指令的響應(yīng)的。

還公開了用于實(shí)現(xiàn)包括第一和第二計(jì)算機(jī)設(shè)備的計(jì)算機(jī)系統(tǒng)和通過通信系統(tǒng)的通信網(wǎng)絡(luò)連接的一個(gè)或多個(gè)額外的端點(diǎn)之間的通信事件的方法,該通信系統(tǒng)包括:多個(gè)處理單元,每個(gè)具有對(duì)保存用于管理通信事件的可執(zhí)行代碼模塊的計(jì)算機(jī)存儲(chǔ)器的訪問,該代碼模塊被配置為實(shí)現(xiàn)被配置為管理已建立的通信事件的媒體模態(tài)的媒體模態(tài)控制器和被配置為建立該通信事件的呼叫控制器,該方法包括:該呼叫控制器向媒體控制器發(fā)起指令,作為對(duì)通過網(wǎng)絡(luò)從該第二設(shè)備上的呼叫代理接收到的指令的響應(yīng);并且作為對(duì)該呼叫控制器發(fā)起的指令的響應(yīng),指派媒體模態(tài)控制器的實(shí)例將該通信事件的媒體模態(tài)控制信號(hào)傳送給第一設(shè)備上的媒體代理而無需訪問該第二設(shè)備上的呼叫代理。

該呼叫控制器可以被配置為將第一設(shè)備的標(biāo)識(shí)符發(fā)送給媒體模態(tài)控制器,作為對(duì)從第二設(shè)備上的呼叫代理接收到的指令的響應(yīng),由該媒體模態(tài)控制器實(shí)例進(jìn)行的所述媒體模態(tài)控制信號(hào)的傳送基于該標(biāo)識(shí)符。

還公開了包括第一和第二計(jì)算機(jī)設(shè)備的計(jì)算機(jī)系統(tǒng)。該第一計(jì)算機(jī)設(shè)備包括:被配置為通過通信系統(tǒng)的通信網(wǎng)絡(luò)與該通信系統(tǒng)的媒體模態(tài)控制器通信的網(wǎng)絡(luò)接口,該媒體模態(tài)控制器被配置為管理已建立的通信事件的媒體模態(tài),該媒體模態(tài)控制器響應(yīng)于來自該通信系統(tǒng)的通信控制器的指令;以及被配置為執(zhí)行媒體模態(tài)代理的處理單元,該媒體模態(tài)代理被配置為與該媒體模態(tài)控制器而不與通信控制器通信。該第二計(jì)算機(jī)設(shè)備包括:被配置為通過網(wǎng)絡(luò)與呼叫控制器通信的網(wǎng)絡(luò)接口,該呼叫控制器被配置為建立該通信事件;以及被配置為執(zhí)行呼叫代理的處理單元,該呼叫代理被配置為與呼叫控制器通信并通過與呼叫控制器的所述通信間接控制該第一用戶設(shè)備的媒體模態(tài)代理的操作。

因此該第二設(shè)備的呼叫代理以如上所描述的方式間接地控制第一設(shè)備上的媒體代理。

在現(xiàn)有通信系統(tǒng)中,為了用戶能夠同時(shí)使用多于一個(gè)設(shè)備(例如,智能手機(jī)和電視)參與呼叫(例如,該智能手機(jī)用于呼叫音頻,tv用于呼叫視頻),除非那些設(shè)備通過有線或無線網(wǎng)絡(luò)(包括藍(lán)牙及類似的)直接連接,否則在兩個(gè)設(shè)備處都需要完整的實(shí)時(shí)控制棧,包括呼叫控制、媒體控制、媒體和網(wǎng)絡(luò)棧以及用戶層面的認(rèn)證。這一完整棧包括需要被部署到端點(diǎn)的用戶和特征兩者服務(wù)遞送控制邏輯,由于處理和安全性約束使其成為更復(fù)雜和約束性的選擇。

本發(fā)明主題允許特定“模態(tài)”的用戶一側(cè)邏輯(也就是,媒體服務(wù)的類型,例如用于提供實(shí)時(shí)媒體通信事件的特定特征的用戶一側(cè)邏輯,諸如呼叫音頻、呼叫視頻和諸如屏幕分享或針對(duì)很大的高分辨率屏幕定制的呼叫視頻之類更豐富的特征)被單獨(dú)地安裝在不同設(shè)備處作為模態(tài)代理(也就是,該類型的服務(wù)代理),與任何必要的媒體和網(wǎng)絡(luò)棧一起安裝在設(shè)備或端點(diǎn)上,使得它能夠被媒體控制器發(fā)現(xiàn),并且從而在功能性服務(wù)遞送的上下文中(例如在呼叫中)被用作有效的模態(tài)端點(diǎn)。

在通信設(shè)置中考慮關(guān)于媒體的更多要求高的使用情況時(shí),關(guān)于音頻和視頻二者(以及例如屏幕分享和其它模態(tài))利用能夠提高和豐富特定模態(tài)的體驗(yàn)的專門設(shè)備和其它端點(diǎn)(諸如在大屏幕tv上而不是該呼叫控制運(yùn)行在的平板電腦上觀看接收到的視頻)是很有效的工具。

作為上述解耦合的服務(wù)邏輯設(shè)計(jì)的一部分,服務(wù)代理可以被部署到提供自動(dòng)可發(fā)現(xiàn)基礎(chǔ)設(shè)施點(diǎn)的端點(diǎn),以提高和擴(kuò)展該特定服務(wù)的能力(例如,音頻、視頻或諸如屏幕分享和高分辨率視頻之類的豐富的服務(wù))以及更廣的功能、端到端服務(wù)遞送和能力。

代理可以被配置為以獨(dú)立的方式部署在端點(diǎn)處(用戶設(shè)備)。部署可以是作為os層中的嵌入式代理,或者作為運(yùn)行在這一os之上(例如,也就是通過應(yīng)用商店類型模型“空中”遞送的)的應(yīng)用。所部屬的代理被配置為知道關(guān)于要向該模態(tài)類型的相應(yīng)云服務(wù)邏輯注冊(cè)的設(shè)備的足夠信息,反過來該設(shè)備能夠通知上下文服務(wù)或客戶端關(guān)于針對(duì)特定模態(tài)該端點(diǎn)用于呼叫或其它上下文服務(wù)中的可用性。

該媒體代理啟動(dòng)后連接到該類型相應(yīng)的控制服務(wù)邏輯(例如視頻)用關(guān)于如何被該服務(wù)邏輯聯(lián)系、其模態(tài)專用能力是什么的足夠的信息和其它相關(guān)信息注冊(cè)到所述端點(diǎn)。該代理需要用必要的媒體被部署在網(wǎng)絡(luò)棧上以便允許其執(zhí)行預(yù)期的模態(tài)功能。

這意味著“視頻輸出代理”可以被部署在例如電視機(jī)上,該電視機(jī)將它自己注冊(cè)在網(wǎng)絡(luò)上,并且如果客戶端(例如,用戶設(shè)備304a上的客戶端416a或用戶設(shè)備304b上的客戶端416b)正在使用同一個(gè)設(shè)備作為電視機(jī)(例如,如果二者都連接到公用無線路由器),該客戶端能夠?qū)⒒钴S呼叫的輸入視頻輸出并呈現(xiàn)在該電視機(jī)上。這不會(huì)要求電視機(jī)上有用戶一側(cè)呼叫控制邏輯(即,沒有呼叫代理)并且該電視機(jī)可以完全根據(jù)云800的視頻媒體服務(wù)邏輯控制(例如,作為對(duì)來自客戶端416的控制數(shù)據(jù)的響應(yīng))。這一關(guān)系可以通過其它途徑建立,諸如預(yù)先配置的關(guān)系。假設(shè)有路徑用于發(fā)送媒體,這可以遠(yuǎn)程使用。

現(xiàn)在參考圖12對(duì)其進(jìn)行描述。如圖12中所示,不同類型的代理(例如,呼叫代理、音頻代理、視頻代理、傳輸代理、管道代理)被相互獨(dú)立地部署在不同設(shè)備處。例如,圖12示出用戶302的(第二)用戶設(shè)備304實(shí)現(xiàn):第一類型的服務(wù)代理612[1]、第二類型的服務(wù)代理612[2],和注冊(cè)和導(dǎo)入請(qǐng)求塊934,所有這些構(gòu)成客戶端416的一部分;以及另一個(gè)(第一)用戶設(shè)備304’實(shí)現(xiàn)第一類型的另一個(gè)服務(wù)代理612’[1]而無需實(shí)現(xiàn)第二類型的另一個(gè)服務(wù)代理,和另一個(gè)注冊(cè)和導(dǎo)入請(qǐng)求塊934’,它們可以構(gòu)成在其它設(shè)備304’處執(zhí)行的另一個(gè)客戶端的一部分或者替代地嵌入其它設(shè)備304’處執(zhí)行的操作系統(tǒng)中。該設(shè)備304和其它設(shè)備304’二者都可以實(shí)現(xiàn)其它服務(wù)代理(雖然該其它服務(wù)不實(shí)現(xiàn)該第二類型的服務(wù)代理)。

注冊(cè)塊934、934’可以與分布式平臺(tái)808的注冊(cè)和導(dǎo)出請(qǐng)求邏輯914通信。每個(gè)可操作用于將用戶設(shè)備304和其它用戶設(shè)備304’的地址分別向注冊(cè)和導(dǎo)出請(qǐng)求邏輯914注冊(cè)。

如上所述,第一服務(wù)邏輯能夠使用云800的注冊(cè)和導(dǎo)出請(qǐng)求邏輯914所存儲(chǔ)的地址建立到第一類型的服務(wù)代理612[1]和到第一類型的其它服務(wù)代理612’[1]的數(shù)據(jù)連接,并且第二服務(wù)邏輯602[2]能夠建立到第二類型的服務(wù)代理612[2]的數(shù)據(jù)連接。類似地,服務(wù)代理612[1]和612’[1]能夠建立到第一服務(wù)邏輯602[1]的數(shù)據(jù)連接,并且該服務(wù)代理612[2]能夠建立到第二服務(wù)邏輯602[2]的數(shù)據(jù)連接。

該用戶設(shè)備304的注冊(cè)塊935如上所描述的工作(即,注冊(cè)用戶302的用戶名和設(shè)備304的可能的設(shè)備標(biāo)識(shí)符)。其它用戶設(shè)備304’的其它注冊(cè)塊934’可以用類似的方式工作,或者其可以將其它用戶設(shè)備的地址注冊(cè)為公開可訪問的(也就是,可由其它設(shè)備304的附近的任何用戶使用的),例如通過向注冊(cè)邏輯914(該邏輯存儲(chǔ)與設(shè)備304’的地址相關(guān)聯(lián)的標(biāo)識(shí)符)注冊(cè)該設(shè)備的標(biāo)識(shí)符。

例如,在這一實(shí)施例中,用戶設(shè)備304和其它用戶設(shè)備304’二者都連接到公共無線接入點(diǎn)1202(例如,二者都可以通過該接入點(diǎn)1202連接到網(wǎng)絡(luò)301)。用戶設(shè)備的注冊(cè)塊934和其它用戶設(shè)備的注冊(cè)塊943’二者可操作用于(例如,一旦啟動(dòng))向云注冊(cè)邏輯914注冊(cè)這一接入點(diǎn)的標(biāo)識(shí)符(例如,mac地址)。該客戶端注冊(cè)邏輯(或其它檢測邏輯)可操作用于檢測兩個(gè)設(shè)備都已經(jīng)注冊(cè)這一公共接入點(diǎn),并且作為對(duì)這一檢測的響應(yīng),通知該客戶端416,該客戶端在該事件中通知用戶設(shè)備302。

一旦創(chuàng)建或加入呼叫,用戶302然后可以指定不是將第一類型的控制服務(wù)(例如,音頻或視頻)擴(kuò)展到它們的用戶設(shè)備304處的相應(yīng)代理(例如,音頻代理或視頻代理),服務(wù)應(yīng)該被替代地?cái)U(kuò)展到其它用戶設(shè)備304’(并且不是在該用戶設(shè)備304處)處實(shí)現(xiàn)的相應(yīng)代理。作為替代或者另外,在呼叫期間,用戶102可以指定它們想要將已經(jīng)被擴(kuò)展到用戶設(shè)備304的代理的服務(wù)轉(zhuǎn)移到用戶設(shè)備304’的相應(yīng)代理。然后,該服務(wù)邏輯以上述方式與其它用戶設(shè)備的服務(wù)代理和其它服務(wù)邏輯通信以創(chuàng)建借此呼叫數(shù)據(jù)能夠在該代理和其它呼叫參與者之間流動(dòng)的機(jī)制。

用戶設(shè)備304的第一類型服務(wù)代理612[1]能夠通過與第一服務(wù)邏輯602[1]建立數(shù)據(jù)連接與其它用戶設(shè)備304’的第二類型服務(wù)代理612’[2]通信,作為響應(yīng),該第一服務(wù)邏輯602[1]與該第二服務(wù)邏輯602[2]建立數(shù)據(jù)連接,作為響應(yīng),該第二服務(wù)邏輯602[2]使用注冊(cè)邏輯914存儲(chǔ)的關(guān)于該用戶設(shè)備304’的信息與其它用戶設(shè)備304’的第二類型服務(wù)代理612’[2]建立連接。這在圖12a中描繪了。

例如,在一個(gè)實(shí)施例中,(第二)用戶設(shè)備304實(shí)現(xiàn)完整的代理集合,即第一呼叫代理、第一音頻代理、第一視頻代理、第一傳輸代理和第一管道代理;其它用戶設(shè)備304’不實(shí)現(xiàn)呼叫代理,而是只實(shí)現(xiàn)第二傳輸代理、第二管道代理和至少一個(gè)第二媒體代理(音頻代理和/或視頻代理)。

用戶302可以指定一旦創(chuàng)建或加入呼叫,他們期望至少一個(gè)媒體(例如,視頻)控制服務(wù)要被擴(kuò)展到其它(第一)用戶設(shè)備304’的相應(yīng)媒體代理而不是用戶設(shè)備304的相應(yīng)媒體代理。在這種情況中,用戶設(shè)備104的客戶端代理向呼叫控制器指定這一決定并向其提供其它設(shè)備304’的標(biāo)識(shí)符。然后,該呼叫控制器指令相應(yīng)媒體(例如,視頻)控制器與其它設(shè)備304’的媒體(視頻)代理(而不是與設(shè)備304的任何媒體代理)協(xié)商(使用注冊(cè)邏輯914存儲(chǔ)的與其它設(shè)備304’有關(guān)的信息)媒體(例如,視頻)參數(shù)。類似地,它指示該傳輸控制器創(chuàng)建用于與其它呼叫參與者交換該類型的實(shí)時(shí)媒體(例如,視頻)的傳輸機(jī)制;反過來該傳輸控制器指令管道控制器為該類型的媒體(例如,視頻)創(chuàng)建其它用戶設(shè)備304’的相應(yīng)媒體(例如,視頻)代理(而不是,例如設(shè)備304的視頻代理)之間的管道。

用于建立媒體(音頻、視頻)管道的處理與上面參考圖10a和10b描述的相同,差別在于參與該處理的媒體代理926、928之一或二者被實(shí)現(xiàn)在設(shè)備304’處,并且那些管道是通過與在其它設(shè)備304’處實(shí)現(xiàn)的傳輸代理和管道代理的控制數(shù)據(jù)的傳輸建立的。也就是,在實(shí)施例中,代理924、926、928的任何一個(gè)都可以運(yùn)行在不同設(shè)備上(即,總共3個(gè)設(shè)備),或者任何兩個(gè)代理可以運(yùn)行在同一個(gè)設(shè)備上而剩余的第三個(gè)代理運(yùn)行在一個(gè)不同設(shè)備上(即,總共2個(gè)設(shè)備)。具有媒體代理(例如,926、928)的任何設(shè)備將還需要運(yùn)行傳輸和管道代理以便實(shí)現(xiàn)媒體的傳輸。只有一個(gè)設(shè)備需要以呼叫代理的形式運(yùn)行呼叫控制邏輯,并且整個(gè)呼叫可以是使用該設(shè)備的控制器(其它設(shè)備僅僅用作媒體“從屬”)—其它設(shè)備不需要運(yùn)行呼叫代理(或任何其它形式的呼叫控制邏輯)。在設(shè)備只運(yùn)行呼叫代理(所有媒體代理運(yùn)行在其它設(shè)備上)時(shí),該設(shè)備不需要運(yùn)行管道或傳輸代理(因?yàn)椴粫?huì)有媒體向/從該設(shè)備發(fā)送,只有控制信號(hào)向/從該呼叫控制器發(fā)送)。

第二設(shè)備可以因此運(yùn)行呼叫代理(但是可能不運(yùn)行媒體代理),同時(shí)第一設(shè)備運(yùn)行媒體代理(音頻/視頻)而不運(yùn)行呼叫代理。該第二設(shè)備可以運(yùn)行另一個(gè)類型的另一個(gè)媒體代理(視頻/音頻)并且該第一設(shè)備可以運(yùn)行或不運(yùn)行該類型的另一個(gè)媒體代理;或者第三設(shè)備可以運(yùn)行其它媒體代理(視頻/音頻)并且第一和/或第二設(shè)備可以不運(yùn)行該類型的媒體代理(視頻/音頻)。例如,tv可以接收呼叫視頻并運(yùn)行視頻代理而不是呼叫代理,并且由智能手機(jī)上的呼叫代理控制。該智能手機(jī)可以接收呼叫音頻并運(yùn)行音頻代理,或者它可以不接收,并且例如連接到該網(wǎng)絡(luò)的揚(yáng)聲器系統(tǒng)可以接收呼叫音頻并運(yùn)行呼叫代理(而不是呼叫代理或視頻代理)。

媒體被遞送給除了控制該呼叫的設(shè)備之外的設(shè)備這個(gè)事實(shí)是對(duì)媒體和傳輸控制器不可見的。對(duì)前面提到的呼叫建立的唯一修改是呼叫控制器向媒體/傳輸控制器提供其它設(shè)備的端點(diǎn)標(biāo)識(shí)符。

例如,用于傳輸呼叫的實(shí)時(shí)音頻數(shù)據(jù)的音頻管道可以通過傳輸控制器和管道控制器分別與如圖10a和10b中的用戶設(shè)備304處實(shí)現(xiàn)的客戶端416的傳輸代理和管道代理傳輸控制數(shù)據(jù)來建立,而用于傳輸該呼叫的實(shí)時(shí)視頻數(shù)據(jù)的視頻管道可以通過傳輸控制器和管道控制器分別與如圖10a和10b中的其它設(shè)備304’處實(shí)現(xiàn)的傳輸代理和管道代理傳輸控制數(shù)據(jù)來建立。

呼叫控制通過呼叫控制器與設(shè)備304的呼叫代理交互而實(shí)現(xiàn),并且該呼叫代理能夠通過該呼叫控制器與其它設(shè)備304’上的代理通信,反過來所述呼叫控制器能夠通過相應(yīng)云控制器與那些代理通信。因此,不需要其它用戶設(shè)備304’實(shí)現(xiàn)任何形式的呼叫控制代理或任何其它形式的呼叫控制邏輯。

該通信系統(tǒng)可以包括任何形式的檢測邏輯,其被配置為檢測第一和第二設(shè)備的關(guān)聯(lián)性,作為響應(yīng),該檢測邏輯致使向第二設(shè)備上的呼叫代理發(fā)送通知。例如,這一檢測邏輯可以被實(shí)現(xiàn)在傳輸層面(例如,由于第一和第二設(shè)備連接到公共接入點(diǎn)1020而在傳輸層面出現(xiàn)所述關(guān)聯(lián)性),例如作為傳輸控制器的一部分或可由該傳輸控制器訪問,該傳輸控制器通知呼叫控制器(或者其通知媒體控制器,媒體控制器通知傳輸控制器)關(guān)于所檢測到的關(guān)聯(lián)性—然后該呼叫控制器通知用戶設(shè)備上的呼叫代理。也就是,在實(shí)施例中,通信系統(tǒng)的檢測邏輯執(zhí)行下面之一:通知呼叫控制器,作為響應(yīng),該呼叫控制器發(fā)送所述通知;或者通知媒體模態(tài)控制器,作為響應(yīng),該媒體模態(tài)控制器通知呼叫控制器,并且作為響應(yīng),該呼叫控制器發(fā)送所述通知。在這種情況中該檢測邏輯可以是傳輸控制器的一部分。

作為替代,呼叫控制器可以檢測較高層級(jí)的關(guān)聯(lián)性。例如,用戶可以通過共享的秘密創(chuàng)建第一和第二設(shè)備之間的關(guān)聯(lián)性,例如共享的秘密是從第一設(shè)備輸出的(例如,顯示的)并且在第二設(shè)備處輸入的配對(duì)代碼,或者每個(gè)設(shè)備可以與公共用戶302相關(guān)聯(lián)(例如,如果該用戶在兩個(gè)設(shè)備處都登錄了)。該檢測邏輯在這種情況中可以是呼叫控制器的一部分。

為了提供隱私性和安全性,呼叫控制器可以只基于指示何時(shí)第一設(shè)備可以和不可以用如上所述方式使用的策略(例如,該策略包括允許的用戶(例如,302)的標(biāo)識(shí)符和/或允許的用戶設(shè)備的標(biāo)識(shí)符(例如,第一設(shè)備304的標(biāo)識(shí)符)),有條件地允許第一設(shè)備這樣的使用。該呼叫控制器被配置為訪問計(jì)算機(jī)存儲(chǔ)器以訪問該策略,由呼叫控制器向所述媒體模態(tài)控制器發(fā)起指令依賴于該策略。該策略可以指示第二設(shè)備304和/或第二設(shè)備的用戶402被(或不被)允許使用該第一設(shè)備。

當(dāng)通信系統(tǒng)包括分別被配置為管理不同媒體模態(tài)的所述媒體模態(tài)控制器和另一個(gè)媒體模態(tài)控制器(例如,音頻和視頻)時(shí),第一設(shè)備上的第一媒體代理(例如,視頻)可以被用于使得例如該呼叫的視頻被發(fā)送給第二設(shè)備,并且第二設(shè)備上的第二媒體代理(例如,音頻)可以被用于使得例如音頻(和呼叫控制器)被保留在第二設(shè)備上。

作為替代,例如,第一設(shè)備304’上的音頻和視頻代理可以只用呼叫控制部署,該呼叫控制通過第二設(shè)備304(執(zhí)行呼叫代理)而實(shí)現(xiàn)。

作為替代,第三用戶設(shè)備(未示出)可以運(yùn)行,例如視頻,而第二設(shè)備運(yùn)行,例如音頻。

通信系統(tǒng)包括第一和第二媒體模態(tài)控制器(例如,音頻和視頻),它們被配置為管理已建立的通信事件的各自的第一和第二媒體模態(tài)而無需訪問第二設(shè)備上的呼叫代理的情形。該第一媒體模態(tài)控制器的實(shí)例可以被配置為將該通信事件的第一媒體模態(tài)控制信號(hào)傳送給第一設(shè)備上的第一媒體代理而無需訪問該計(jì)算機(jī)系統(tǒng)的第二或第三計(jì)算機(jī)設(shè)備上的第二媒體代理;并且該第二媒體模態(tài)控制器的實(shí)例被配置為將該通信事件的第二媒體模態(tài)控制信號(hào)傳送給第二媒體代理而無需訪問該第一媒體代理。第一和第二媒體模態(tài)控制器的各自實(shí)例可以分別被指派用于傳送該第一和第二媒體模態(tài)控制信號(hào),作為對(duì)呼叫控制器向第一和第二媒體模態(tài)控制器發(fā)起的各自指令的響應(yīng)。針對(duì)該第一媒體模態(tài)控制器的指令是由呼叫控制器響應(yīng)于從第二設(shè)備上的呼叫代理接收到的第一指令而發(fā)起的,并且其中,針對(duì)第二媒體模態(tài)控制器的指令是由呼叫控制器響應(yīng)于從第二設(shè)備上的呼叫代理接收到的第一或第二指令而發(fā)起的。作為對(duì)第一媒體模態(tài)控制器實(shí)例對(duì)向它發(fā)起的指令返回響應(yīng)的響應(yīng),該第一媒體模態(tài)控制器實(shí)例可以從所述指派釋放,而該第二媒體模態(tài)控制器實(shí)例繼續(xù)工作以與該第二媒體代理通信。

在實(shí)施例中,呼叫控制器可以被配置為將第一設(shè)備的標(biāo)識(shí)符發(fā)送給媒體模態(tài)控制器作為對(duì)從第二設(shè)備上的呼叫代理接收到的指令的響應(yīng),由所述媒體模態(tài)控制器實(shí)例進(jìn)行的所述媒體模態(tài)控制信號(hào)的傳送基于該標(biāo)識(shí)符。

作為對(duì)該媒體模態(tài)控制器實(shí)例返回對(duì)呼叫控制器發(fā)起的指令的響應(yīng)的響應(yīng),該媒體模態(tài)控制器實(shí)例可以從所述指派釋放,而該呼叫控制器繼續(xù)工作以與第二設(shè)備上的呼叫代理通信。呼叫控制器的實(shí)例可以向該媒體控制器發(fā)起指令并且該呼叫控制器的實(shí)例可以在該媒體控制器的實(shí)例釋放之后繼續(xù)工作以與該第二設(shè)備上的呼叫代理通信。

對(duì)比在上文中,在其上實(shí)例化控制器的通信系統(tǒng)的處理單元距離呼叫端點(diǎn)很遠(yuǎn)(也就是所述處理單元是除了所述端點(diǎn)之外的處理單元),在替代實(shí)施例中,一些控制還是可能通過端點(diǎn)而實(shí)現(xiàn)(也就是通過端點(diǎn)上的控制器代碼而實(shí)現(xiàn))。例如,在一個(gè)實(shí)施例中,呼叫控制、音頻控制、媒體控制、傳輸控制和管道控制而以如上所述的集中實(shí)現(xiàn)在云800中,而例如即時(shí)消息控制被實(shí)現(xiàn)在端點(diǎn)本身上(并且不是由云控制服務(wù)邏輯實(shí)現(xiàn))。

此外,對(duì)比在上文中,各種不同配置的代理(呼叫、媒體、傳輸、管道)由用戶設(shè)備實(shí)現(xiàn),在其它實(shí)施例中,除了用戶設(shè)備之外的端點(diǎn)(例如,服務(wù)器、橋接等)可以實(shí)現(xiàn)一個(gè)或多個(gè)上述代理。

一般來講,本申請(qǐng)中描述的任何功能可以使用軟件、固件、硬件(例如,固定的邏輯電路)或這些實(shí)現(xiàn)的組合來實(shí)現(xiàn)。本申請(qǐng)中使用的術(shù)語“模塊”、“功能單元”、“組件”和“邏輯”一般代表軟件、固件、硬件或它們的組合。在軟件實(shí)現(xiàn)的情況中,模塊、功能單元或邏輯代表在處理器(例如,一個(gè)或多個(gè)cpu)上執(zhí)行時(shí)執(zhí)行指定任務(wù)的程序代碼。所述程序代碼可以存儲(chǔ)在一個(gè)或多個(gè)計(jì)算機(jī)可讀存儲(chǔ)器設(shè)備中。下面描述的技術(shù)的特征是平臺(tái)無關(guān)的,意味著所述技術(shù)可以實(shí)現(xiàn)在具有各種處理器的各種商業(yè)計(jì)算平臺(tái)上。

例如,所述用戶設(shè)備還可以包括使得用戶設(shè)備的硬件執(zhí)行操作(例如處理器功能塊等等)的實(shí)體(例如,軟件)。例如,所述用戶設(shè)備可以包括計(jì)算機(jī)可讀介質(zhì),其可以被配置為保存使得用戶設(shè)備,更具體地是使得操作系統(tǒng)和該用戶設(shè)備相關(guān)聯(lián)的硬件執(zhí)行操作的指令。因此,所述指令的功能是配置操作系統(tǒng)和相關(guān)聯(lián)的硬件以執(zhí)行操作并且以此方式致使操作系統(tǒng)和相關(guān)聯(lián)的硬件轉(zhuǎn)換到執(zhí)行功能。所述指令可以由計(jì)算機(jī)可讀介質(zhì)通過各種不同配置向用戶設(shè)備提供。

計(jì)算機(jī)可讀介質(zhì)的一個(gè)這種配置是信號(hào)承載介質(zhì)并且因此被配置為向計(jì)算設(shè)備發(fā)送指令(例如,作為載波波形),諸如通過網(wǎng)絡(luò)。該計(jì)算機(jī)可讀介質(zhì)還可以被配置為計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)并且因此不是信號(hào)承載介質(zhì)。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)的示例包括隨機(jī)訪問存儲(chǔ)器(ram)、只讀存儲(chǔ)器(rom)、光盤、閃存、硬盤存儲(chǔ)器和可以使用電磁、光學(xué)和其它技術(shù)來存儲(chǔ)指令和其它數(shù)據(jù)的其它存儲(chǔ)器設(shè)備。

雖然已經(jīng)用特定于結(jié)構(gòu)化特征和/或方法化動(dòng)作的語言描述了本發(fā)明主題,但是應(yīng)該理解的是,所附權(quán)利要求中定義的本發(fā)明主題不必要僅限于上面描述的特定特征或動(dòng)作。而是,上面所描述的特定特征和動(dòng)作是作為實(shí)現(xiàn)權(quán)利要求的示例形式公開的。

當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
东方市| 象山县| 怀集县| 贵阳市| 尚义县| 韩城市| 湖南省| 噶尔县| 醴陵市| 秦安县| 高唐县| 苗栗县| 友谊县| 仙居县| 琼结县| 和田县| 威宁| 钦州市| 万盛区| 巫溪县| 即墨市| 建湖县| 莆田市| 大名县| 揭东县| 南通市| 加查县| 彩票| 鹤峰县| 环江| 泰顺县| 溧水县| 襄城县| 类乌齐县| 肥西县| 南澳县| 荆门市| 巩义市| 房产| 仁布县| 富顺县|