两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

基于云計(jì)算架構(gòu)的網(wǎng)絡(luò)服務(wù)聚合系統(tǒng)及其聚合方法

文檔序號(hào):7715785閱讀:161來源:國(guó)知局
專利名稱:基于云計(jì)算架構(gòu)的網(wǎng)絡(luò)服務(wù)聚合系統(tǒng)及其聚合方法
技術(shù)領(lǐng)域
本發(fā)明屬于網(wǎng)絡(luò)通訊技術(shù)領(lǐng)域,涉及一種網(wǎng)絡(luò)通訊系統(tǒng),尤其涉及一種基于云計(jì)算架構(gòu)的網(wǎng)絡(luò)服務(wù)聚合系統(tǒng);同時(shí),本發(fā)明還涉及上述基于云計(jì)算架構(gòu)的網(wǎng)絡(luò)服務(wù)聚合系統(tǒng)的聚合方法。
背景技術(shù)
自上個(gè)世紀(jì)逐漸流行起電子郵箱和即時(shí)聊天工具后,當(dāng)今已經(jīng)涌現(xiàn)出多種新興的網(wǎng)絡(luò)服務(wù),如IM、微博、SNS和論壇等等。人們?yōu)榱私涣髋c聯(lián)系,有時(shí)需要同時(shí)安裝這些軟件并涉足多個(gè)類型網(wǎng)絡(luò)服務(wù),而一個(gè)聯(lián)系人又可能有多種聯(lián)系方式,人們總希望使用最為便捷的方法聯(lián)系對(duì)方。比如甲通常用QQ與好友交流,乙是他剛結(jié)識(shí)朋友,而乙習(xí)慣用MSN與人網(wǎng)上通訊,為和乙保持聯(lián)系,甲得注冊(cè)一個(gè)MSN,但是額外的注冊(cè)就意味著需要下載額外的軟件并且消耗額外的資源來維護(hù)MSN的運(yùn)行。用戶也時(shí)常會(huì)為了登入和切換服務(wù)而耗費(fèi)大量時(shí)間,而管理自己的網(wǎng)絡(luò)賬戶和聯(lián)系人也成了麻煩的事情。當(dāng)我們各自使用著不同的通信軟件,卻因?yàn)樾枰ハ嘟涣?,而不得不再去下載各種其他軟件,讓一臺(tái)電腦運(yùn)行著好幾種通信軟件,這時(shí)我們迫切需要一個(gè)平臺(tái)它能將所有通信軟件整合——只是將它們彼此良性地聚合,而不會(huì)阻礙各自的發(fā)展。現(xiàn)代人十分需要一個(gè)能支持所有網(wǎng)絡(luò)服務(wù)的無縫交流平臺(tái)。對(duì)此,目前互聯(lián)網(wǎng)有了一些服務(wù),但僅僅是聚合了特定類型的網(wǎng)絡(luò)服務(wù)。比如 eBuddy,這個(gè)服務(wù)整合了全球互聯(lián)網(wǎng)大部分主流的即時(shí)聊天工具;Gwibber (硅博),整合了主流的微博;Outlook聚合了電子郵箱,等等。盡管這些服務(wù)做到了把同類而不同的服務(wù)商提供的服務(wù)放在一起,省去了用戶在自己的電腦上安裝多款通信軟件,但是不能達(dá)成各類服務(wù)之間的整合。用戶需要分別管理不同的賬戶。人們使用著不同種類的服務(wù)進(jìn)行聯(lián)系與交流,然而用戶并不清楚究竟采用什么方式才能順暢地聯(lián)系到對(duì)方。對(duì)于用戶來說,發(fā)送自己的消息到聯(lián)系人并且讓對(duì)方收到就成,而目前的這些軟件不能讓用戶在無需顧慮采用什么服務(wù)的情況下發(fā)送自己的消息。 eBuddy,Gwibber和Outlook等不同的軟件相互獨(dú)立而無法彼此照應(yīng),它們使用獨(dú)立的聯(lián)系人列表,獨(dú)立的消息處理方式,獨(dú)立的軟件使用方法,因而無法滿足互聯(lián)互通的需求,用戶依然需要選擇通過何種方式來取得聯(lián)系。由此可見,現(xiàn)有的種類繁多的網(wǎng)絡(luò)通信服務(wù)(如微博、SNS、論壇、電子郵箱和即時(shí)聊天工具等)相互間難以融合交流。

發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問題是提供一種基于云計(jì)算架構(gòu)的網(wǎng)絡(luò)服務(wù)聚合系統(tǒng), 可支持各類網(wǎng)絡(luò)服務(wù),讓處于不同平臺(tái)的各個(gè)用戶進(jìn)行無障礙交流的環(huán)境。此外,本發(fā)明還提供一種上述基于云計(jì)算架構(gòu)的網(wǎng)絡(luò)服務(wù)聚合系統(tǒng)的聚合方法,可支持各類網(wǎng)絡(luò)服務(wù),讓處于不同平臺(tái)的各個(gè)用戶進(jìn)行無障礙交流的環(huán)境。為解決上述技術(shù)問題,本發(fā)明采用如下技術(shù)方案一種基于云計(jì)算架構(gòu)的網(wǎng)絡(luò)服務(wù)聚合系統(tǒng),所述系統(tǒng)包括客戶端,按照運(yùn)行的設(shè)備和Web接口進(jìn)行通訊;Web接口服務(wù)器,用以給客戶端提供信息,并且處理和消息無關(guān)的數(shù)據(jù);在用戶登入時(shí),向任務(wù)調(diào)度服務(wù)器索取相對(duì)空閑的消息處理服務(wù)器地址,操控和監(jiān)視消息處理服務(wù)器,并即時(shí)將狀況反饋給客戶端;任務(wù)調(diào)度服務(wù)器,負(fù)責(zé)監(jiān)視消息處理服務(wù)器的資源消耗狀態(tài),并在Web接口服務(wù)器為登入用戶索取相對(duì)空閑的消息處理服務(wù)器地址時(shí)返回,讓W(xué)eb接口服務(wù)器自行調(diào)用; 在運(yùn)行后,任務(wù)調(diào)度服務(wù)器定時(shí)對(duì)消息處理服務(wù)器更新資源使用情況;消息處理服務(wù)器,通過Web接口服務(wù)器與客戶端連接,用戶的網(wǎng)絡(luò)服務(wù)在消息處理服務(wù)器進(jìn)行登入、登出、狀態(tài)管理、消息收發(fā)處理;消息處理服務(wù)器啟動(dòng)后自動(dòng)向任務(wù)調(diào)度服務(wù)器注冊(cè),讓任務(wù)調(diào)度服務(wù)器能監(jiān)視其狀態(tài),同時(shí)等待Web接口服務(wù)器的調(diào)用;發(fā)生需要提醒用戶的情況時(shí),消息處理服務(wù)器會(huì)推送到Web接口服務(wù)器處理;數(shù)據(jù)庫(kù)服務(wù)器,同時(shí)被Web接口服務(wù)器和消息處理服務(wù)器調(diào)用來記錄各類信息。一種上述基于云計(jì)算架構(gòu)的網(wǎng)絡(luò)服務(wù)聚合系統(tǒng)的聚合方法,所述聚合方法包括如下步驟客戶端按照運(yùn)行的設(shè)備和Web接口進(jìn)行通訊;Web接口服務(wù)器給客戶端提供信息,并且處理和消息無關(guān)的數(shù)據(jù);在用戶登入時(shí), 向任務(wù)調(diào)度服務(wù)器索取相對(duì)空閑的消息處理服務(wù)器地址,操控和監(jiān)視消息處理服務(wù)器,并即時(shí)將狀況反饋給客戶端;任務(wù)調(diào)度服務(wù)器負(fù)責(zé)監(jiān)視消息處理服務(wù)器的資源消耗狀態(tài),并在Web接口服務(wù)器為登入用戶索取相對(duì)空閑的消息處理服務(wù)器地址時(shí)返回,讓W(xué)eb接口服務(wù)器自行調(diào)用;在運(yùn)行后,任務(wù)調(diào)度服務(wù)器定時(shí)對(duì)消息處理服務(wù)器更新資源使用情況;消息處理服務(wù)器通過Web接口服務(wù)器與客戶端連接,用戶的網(wǎng)絡(luò)服務(wù)在消息處理服務(wù)器進(jìn)行登入、登出、狀態(tài)管理、消息收發(fā)處理;消息處理服務(wù)器啟動(dòng)后自動(dòng)向任務(wù)調(diào)度服務(wù)器注冊(cè),讓任務(wù)調(diào)度服務(wù)器能監(jiān)視其狀態(tài),同時(shí)等待Web接口服務(wù)器的調(diào)用;發(fā)生需要提醒用戶的情況時(shí),消息處理服務(wù)器會(huì)推送到Web接口服務(wù)器處理;數(shù)據(jù)庫(kù)服務(wù)器同時(shí)被Web接口服務(wù)器和消息處理服務(wù)器調(diào)用來記錄各類信息。本發(fā)明的有益效果在于本發(fā)明提出的基于云計(jì)算架構(gòu)的網(wǎng)絡(luò)服務(wù)聚合系統(tǒng)及其聚合方法,將所有通信軟件和網(wǎng)絡(luò)服務(wù)整合在一起,開發(fā)一種無縫交流的平臺(tái),發(fā)明基于云計(jì)算架構(gòu)的網(wǎng)絡(luò)服務(wù)聚合系統(tǒng),建立了能夠支持各類網(wǎng)絡(luò)服務(wù),讓處于不同平臺(tái)的各個(gè)用戶進(jìn)行無障礙交流的環(huán)境。本發(fā)明面向“人”,以人作為通訊的基礎(chǔ)單位,采用用戶聯(lián)系人列表,能讓處在不同通訊場(chǎng)合(使用不同的網(wǎng)絡(luò)服務(wù)、不同的通訊設(shè)備)的多個(gè)聯(lián)系人互通、 交流與辦公,能及時(shí)反饋眾聯(lián)系人的狀態(tài)和特性,具有可靠的消息收發(fā)機(jī)制和高效的消息管理方式。對(duì)所有用戶而言,無論用戶身在何處,無論用戶或者用戶的聯(lián)系對(duì)象喜歡或擅長(zhǎng)使用何種網(wǎng)絡(luò)服務(wù),也無論用戶對(duì)如何使用自己的網(wǎng)絡(luò)服務(wù)是否熟悉,只要用戶雙方的網(wǎng)絡(luò)服務(wù)有交集,用戶都能利用本發(fā)明便捷地與對(duì)方進(jìn)行順暢的交流;即使對(duì)方不在線,也能
15將此消息保存到數(shù)據(jù)庫(kù),被聯(lián)系人在下次上線的時(shí)候會(huì)收到消息。本用戶通過新鮮事功能保留了各類服務(wù)原有的基本特性,因此用戶無需再登入自己的網(wǎng)絡(luò)服務(wù),用戶通過一個(gè)平臺(tái)就能實(shí)現(xiàn)操控自己所擁有的社交網(wǎng)絡(luò)服務(wù)的愿望。而且本系統(tǒng)的設(shè)計(jì)為今后功能的拓展夯實(shí)了良好的基礎(chǔ),對(duì)目前流行甚至是未來可能出現(xiàn)的網(wǎng)絡(luò)服務(wù)類型都能兼收并蓄和融通,能方便地為其他通信設(shè)備開發(fā)客戶端。本軟件可應(yīng)用到廣泛的社會(huì)活動(dòng)中去,可產(chǎn)生良好的社會(huì)效益,具有無限的市場(chǎng)開發(fā)前景。


圖1為本發(fā)明網(wǎng)絡(luò)服務(wù)聚合系統(tǒng)的組成示意圖。
具體實(shí)施例方式下面結(jié)合附圖詳細(xì)說明本發(fā)明的優(yōu)選實(shí)施例。實(shí)施例一請(qǐng)參閱圖1,本發(fā)明揭示了一種基于云計(jì)算架構(gòu)的網(wǎng)絡(luò)服務(wù)聚合系統(tǒng),所述系統(tǒng)包括客戶端、Web接口服務(wù)器、任務(wù)調(diào)度服務(wù)器、消息處理服務(wù)器、數(shù)據(jù)庫(kù)服務(wù)器??蛻舳税凑者\(yùn)行的設(shè)備和Web接口進(jìn)行通訊。Web接口服務(wù)器用以給客戶端提供信息,并且處理和消息無關(guān)的數(shù)據(jù);在用戶登入時(shí),向任務(wù)調(diào)度服務(wù)器索取相對(duì)空閑的消息處理服務(wù)器地址,操控和監(jiān)視消息處理服務(wù)器,并即時(shí)將狀況反饋給客戶端。任務(wù)調(diào)度服務(wù)器負(fù)責(zé)監(jiān)視消息處理服務(wù)器的資源消耗狀態(tài),并在Web接口服務(wù)器為登入用戶索取相對(duì)空閑的消息處理服務(wù)器地址時(shí)返回,讓W(xué)eb接口服務(wù)器自行調(diào)用;在運(yùn)行后,任務(wù)調(diào)度服務(wù)器定時(shí)對(duì)消息處理服務(wù)器更新資源使用情況。消息處理服務(wù)器通過Web接口服務(wù)器與客戶端連接,用戶的網(wǎng)絡(luò)服務(wù)在消息處理服務(wù)器進(jìn)行登入、登出、狀態(tài)管理、消息收發(fā)處理;消息處理服務(wù)器啟動(dòng)后自動(dòng)向任務(wù)調(diào)度服務(wù)器注冊(cè),讓任務(wù)調(diào)度服務(wù)器能監(jiān)視其狀態(tài),同時(shí)等待Web接口服務(wù)器的調(diào)用;發(fā)生需要提醒用戶的情況時(shí),消息處理服務(wù)器會(huì)推送到Web接口服務(wù)器處理。數(shù)據(jù)庫(kù)服務(wù)器同時(shí)被Web接口服務(wù)器和消息處理服務(wù)器調(diào)用來記錄各類信息。所述聚合系統(tǒng)包括保留服務(wù)基本特性的模塊,包括獲得用戶狀態(tài)單元、廣播用戶狀態(tài)單元、搜索單元、新鮮事獲取定時(shí)器、執(zhí)行服務(wù)命令單元。獲得用戶狀態(tài)單元由Web接口服務(wù)器調(diào)用,通常用戶狀態(tài)不保存在數(shù)據(jù)庫(kù)中, 而是直接從用戶服務(wù)讀??;消息處理服務(wù)器只讀取第一個(gè)有狀態(tài)的服務(wù)的狀態(tài)發(fā)送返回給 Web接口服務(wù)器;廣播用戶狀態(tài)單元一些服務(wù)具有顯示用戶狀態(tài)的特性;所述廣播用戶狀態(tài)單元由Web接口服務(wù)器調(diào)用,消息處理服務(wù)器將為用戶所有服務(wù)都設(shè)定狀態(tài);如果用戶的某些服務(wù)不支持,狀態(tài)設(shè)定的行為將不被處理;搜索單元對(duì)于具有或者需要搜索特性才能完全操控的網(wǎng)絡(luò)服務(wù),使用所述搜索單元對(duì)服務(wù)進(jìn)行搜索;搜索過程和結(jié)果由服務(wù)插件實(shí)例完成和生成,對(duì)于用戶對(duì)結(jié)果的響應(yīng)由服務(wù)插件實(shí)例識(shí)別并執(zhí)行相關(guān)操作;新鮮事獲取定時(shí)器服務(wù)新鮮事由Web接口服務(wù)器獲??;Web接口服務(wù)器獲取服務(wù)新鮮事時(shí),用戶新鮮事已經(jīng)收集好并放在一個(gè)變量中;收集工作由新鮮事獲取定時(shí)器完成,新鮮事獲取定時(shí)器獲取設(shè)定的頻率將用戶服務(wù)的新鮮事放入變量中,等待Web接口服務(wù)器獲?。?b>執(zhí)行服務(wù)命令單元執(zhí)行服務(wù)命令由服務(wù)插件實(shí)例在服務(wù)新鮮事的時(shí)候生成,由服務(wù)插件實(shí)例識(shí)別并執(zhí)行相關(guān)操作。以上揭示了本發(fā)明基于云計(jì)算架構(gòu)的網(wǎng)絡(luò)服務(wù)聚合系統(tǒng),本發(fā)明在揭示上述系統(tǒng)的同時(shí),還揭示上述基于云計(jì)算架構(gòu)的網(wǎng)絡(luò)服務(wù)聚合系統(tǒng)的聚合方法;所述聚合方法包括如下步驟步驟Si客戶端按照運(yùn)行的設(shè)備和Web接口進(jìn)行通訊;步驟S2Web接口服務(wù)器給客戶端提供信息,并且處理和消息無關(guān)的數(shù)據(jù);在用戶登入時(shí),向任務(wù)調(diào)度服務(wù)器索取相對(duì)空閑的消息處理服務(wù)器地址,操控和監(jiān)視消息處理服務(wù)器,并即時(shí)將狀況反饋給客戶端;步驟S3任務(wù)調(diào)度服務(wù)器負(fù)責(zé)監(jiān)視消息處理服務(wù)器的資源消耗狀態(tài),并在Web接口服務(wù)器為登入用戶索取相對(duì)空閑的消息處理服務(wù)器地址時(shí)返回,讓W(xué)eb接口服務(wù)器自行調(diào)用;在運(yùn)行后,任務(wù)調(diào)度服務(wù)器定時(shí)對(duì)消息處理服務(wù)器更新資源使用情況;步驟S4消息處理服務(wù)器通過Web接口服務(wù)器與客戶端連接,用戶的網(wǎng)絡(luò)服務(wù)在消息處理服務(wù)器進(jìn)行登入、登出、狀態(tài)管理、消息收發(fā)處理;消息處理服務(wù)器啟動(dòng)后自動(dòng)向任務(wù)調(diào)度服務(wù)器注冊(cè),讓任務(wù)調(diào)度服務(wù)器能監(jiān)視其狀態(tài),同時(shí)等待Web接口服務(wù)器的調(diào)用; 發(fā)生需要提醒用戶的情況時(shí),消息處理服務(wù)器會(huì)推送到Web接口服務(wù)器處理;步驟S5數(shù)據(jù)庫(kù)服務(wù)器同時(shí)被Web接口服務(wù)器和消息處理服務(wù)器調(diào)用來記錄各類fe息。實(shí)施例二系統(tǒng)的組成本發(fā)明的整個(gè)網(wǎng)絡(luò)信息聚合系統(tǒng)被劃分為5個(gè)部分1、客戶端按照運(yùn)行的設(shè)備和Web接口進(jìn)行通訊,和最終用戶交互??蛻舳丝梢员辉O(shè)計(jì)成運(yùn)行在多個(gè)平臺(tái)下,目前已實(shí)現(xiàn)了 HTML、Windows Phone 7手機(jī)和Android客戶端的設(shè)計(jì),還將繼續(xù)開發(fā)其他平臺(tái)的客戶端,以滿足不同用戶的使用需求。2、Web接口服務(wù)器提供給客戶端信息并且處理和消息無關(guān)的數(shù)據(jù)(比如維護(hù)聯(lián)系人列表)。在用戶登入時(shí),向“任務(wù)調(diào)度服務(wù)器”索取相對(duì)空閑的“消息處理服務(wù)器”地址,操控和監(jiān)視“消息處理服務(wù)器”并即時(shí)將狀況反饋給客戶端。Web接口服務(wù)器可以有多個(gè),以應(yīng)對(duì)不同地域網(wǎng)絡(luò)訪問的需要。3、任務(wù)調(diào)度服務(wù)器或稱“任務(wù)分配服務(wù)器”。此服務(wù)器僅僅負(fù)責(zé)監(jiān)視“消息處理服務(wù)器”的資源消耗狀態(tài),并在“Web接口服務(wù)器”為登入用戶索取相對(duì)空閑的“消息處理服務(wù)器”地址時(shí)候返回,讓“Web接口服務(wù)器”自行調(diào)用。在運(yùn)行后,“任務(wù)調(diào)度服務(wù)器”會(huì)定時(shí)對(duì)“消息處理服務(wù)器”更新資源使用情況?!叭蝿?wù)調(diào)度服務(wù)器”理論上有一臺(tái)(在資源共享的情況下可以作為集群),負(fù)責(zé)整個(gè)云計(jì)算的負(fù)載均衡工作。
4、消息處理服務(wù)器用戶的網(wǎng)絡(luò)服務(wù)就在“消息處理服務(wù)器”進(jìn)行登入、登出、狀態(tài)管理、消息收發(fā)等等處理。此服務(wù)器啟動(dòng)后自動(dòng)向“任務(wù)調(diào)度服務(wù)器”注冊(cè),讓“任務(wù)調(diào)度服務(wù)器”能監(jiān)視其狀態(tài),同時(shí)等待“Web接口服務(wù)器”的調(diào)用。在有新消息或者其他需要提醒用戶的情況,“消息處理服務(wù)器”會(huì)推送到“Web接口服務(wù)器”處理。此服務(wù)器需要多臺(tái)才能保證在大用戶的狀況下還能及時(shí)響應(yīng)。5、數(shù)據(jù)庫(kù)服務(wù)器數(shù)據(jù)庫(kù)服務(wù)器可以同時(shí)被“Web接口服務(wù)器,,和“消息處理服務(wù)器,,調(diào)用來記錄聯(lián)系人、服務(wù)帳號(hào)、話題等等信息。本系統(tǒng)使用postgresql作為數(shù)據(jù)庫(kù),在負(fù)荷量龐大的時(shí)候可以利用數(shù)據(jù)庫(kù)軟件自身功能進(jìn)行集群處理。數(shù)據(jù)庫(kù)設(shè)計(jì)數(shù)據(jù)庫(kù)用來保存用戶的登入信息、用戶服務(wù)、用戶聯(lián)系人列表、話題、回復(fù)等等信息。數(shù)據(jù)庫(kù)服務(wù)器可以被Web接口服務(wù)器和信息處理服務(wù)器調(diào)用。(一)存儲(chǔ)用戶聯(lián)系人有兩個(gè)表存儲(chǔ)與用戶聯(lián)系人有關(guān)的信息。其中一個(gè)表儲(chǔ)存聯(lián)系人名稱和一個(gè)自動(dòng)增加的編號(hào),另一個(gè)表儲(chǔ)存聯(lián)系方式和這個(gè)聯(lián)系方式所對(duì)應(yīng)的聯(lián)系人的編號(hào)。這樣設(shè)計(jì)可以形成一個(gè)聯(lián)系人有多個(gè)聯(lián)系方式的結(jié)構(gòu)。(二)存儲(chǔ)用戶服務(wù)本表用于存儲(chǔ)用戶服務(wù)的相關(guān)信息,其中包含了服務(wù)名稱,服務(wù)訪問的方式(含用戶名和密碼)以及服務(wù)所屬于的用戶。(三)存儲(chǔ)話題和帖子由于話題和帖子具備相同特性,它們共用一個(gè)數(shù)據(jù)表。表包含了標(biāo)題、內(nèi)容、作者、 發(fā)布時(shí)間、父級(jí)帖子編號(hào)、根帖子編號(hào)、帖子內(nèi)容代號(hào)、回復(fù)數(shù)量、查看數(shù)量、最后回復(fù)時(shí)間、 最后回復(fù)聯(lián)系人、隱私設(shè)置信息和帖子編號(hào)。帖子為樹形結(jié)構(gòu),一個(gè)話題中,話題帖子為根帖子,話題下面的回復(fù)的父級(jí)帖子和根帖子的編號(hào)都是話題帖子的編號(hào)。而表中帖子的編號(hào)都是自動(dòng)增長(zhǎng)的。帖子理論上可以無限嵌套。帖子內(nèi)容代號(hào)和帖子編號(hào)性質(zhì)一樣,它是帖子的唯一代號(hào),其作用是用帖子的來源作為帖子標(biāo)記。例如用戶收到的每封電子郵件都有一個(gè)唯一編號(hào)(UID),系統(tǒng)在第一次接收這封郵件的時(shí)候會(huì)將這個(gè)編號(hào)重新組合成帖子內(nèi)容代號(hào)并和郵件內(nèi)容一起保存到數(shù)據(jù)庫(kù)中。下次再次接受到這封郵件時(shí),系統(tǒng)能識(shí)別出這個(gè)在數(shù)據(jù)庫(kù)中已經(jīng)有記錄,就不會(huì)重復(fù)操作。隱私設(shè)置僅僅在此帖子為話題的時(shí)候才有值,用來指定帖子是否允許其他用戶查看并發(fā)表話題(四)存儲(chǔ)話題聯(lián)系人存儲(chǔ)話題聯(lián)系人的表主要字段有聯(lián)系地址、聯(lián)系方式、來源用戶和話題編號(hào)。這個(gè)表的作用是存儲(chǔ)用戶對(duì)話題發(fā)帖或者這個(gè)表里的聯(lián)系人對(duì)這個(gè)話題發(fā)消息時(shí)轉(zhuǎn)發(fā)的地址列表。帖子聯(lián)系人中有記錄的地址,能及時(shí)收到和話題相關(guān)的消息。(五)存儲(chǔ)話題標(biāo)簽該表的作用是讓用戶能及時(shí)搜索到相關(guān)的關(guān)鍵字,起到關(guān)鍵字索引的作用,在搜
18索時(shí)分詞后就能直接SELECT出結(jié)果。這個(gè)表的字段只有關(guān)鍵字和帖子編號(hào)。(六)存儲(chǔ)延遲消息由于并不能保證用戶的消息一定能及時(shí)發(fā)送到聯(lián)系人那邊。因?yàn)?,如果?lián)系人的聯(lián)系方式都無法用于傳遞,就必須將消息延遲到下次聯(lián)系人的聯(lián)系方式在線的時(shí)候。這個(gè)表緩存了用戶即將通過消息處理服務(wù)器使用服務(wù)發(fā)送的所有信息,其中還記錄重試次數(shù), 如果一直都無法成功,這個(gè)消息將不得不放棄發(fā)送。服務(wù)器端設(shè)計(jì)考慮到服務(wù)器軟件的跨平臺(tái)和技術(shù)支持上的問題,系統(tǒng)最終使用Java做為整個(gè)服務(wù)器端所使用的技術(shù)。因?yàn)榉?wù)總是需要拓展的,可能會(huì)需要安裝多臺(tái)服務(wù)器來維持。所以使用開源軟件能節(jié)約軟件授權(quán)的成本,使運(yùn)營(yíng)過程中只需要集中投入人力和硬件設(shè)施即可維持系統(tǒng)的運(yùn)行。在實(shí)驗(yàn)階段,在3臺(tái)裝有Wxmtu Server 10. 4、JDK 1.6,并安裝設(shè)置了 Postgresql數(shù)據(jù)庫(kù)和GlassFishv3的服務(wù)器上測(cè)試,獲得成功。(一 )連接系統(tǒng)的各個(gè)部分本系統(tǒng)為分布式。在架構(gòu)設(shè)計(jì)的時(shí)候,系統(tǒng)被劃分成了 5個(gè)部分,其中4個(gè)部分和服務(wù)器端有關(guān)。決定使用hibernate的JDBC連接數(shù)據(jù)庫(kù)后,還有Web接口服務(wù)器、任務(wù)調(diào)度服務(wù)器和消息處理服務(wù)器這3個(gè)部分之間的連接。使用效率相對(duì)較高的Java遠(yuǎn)程接口, 調(diào)用JavaRemote Method Evocation連接這3個(gè)后端部分,讓后端能有效的協(xié)調(diào)運(yùn)作。1、連接Web接口服務(wù)器和客戶端在架構(gòu)設(shè)計(jì)的時(shí)候,為了兼容不同平臺(tái),決定使用基于HTTP協(xié)議和客戶端進(jìn)行交互。(1)序列化在傳輸過程中,服務(wù)器在內(nèi)存中的對(duì)象要序列化才能發(fā)送到客戶端。目的是將服務(wù)器的二進(jìn)制數(shù)據(jù)轉(zhuǎn)換為能給客戶端解析的明文,使客戶端能順利地將服務(wù)器的內(nèi)容呈現(xiàn)給用戶。目前在HTTP協(xié)議傳輸中流行的序列化方法主要是XML和JS0N。在比較了這兩種序列化的方法后,本實(shí)施例決定采用JSON作為序列化的方式,原因有①JSON更加簡(jiǎn)單。JSON不需要像XML —樣,規(guī)定數(shù)據(jù)的格式就能直接傳輸,使用 JSON交互可以直接傳輸數(shù)據(jù)而不需要參考服務(wù)器的數(shù)據(jù)結(jié)構(gòu)。②JSON靈活。JSON可以隨意規(guī)定參數(shù)并且任意傳輸,同時(shí)JSON也具有和XML — 樣元素嵌套的結(jié)構(gòu),支持?jǐn)?shù)組和數(shù)組對(duì)象等等。③JSON節(jié)約帶寬。XML為了保持嚴(yán)謹(jǐn)?shù)母袷蕉鴰胍恍┎槐匾臉?biāo)簽。這些標(biāo)簽通常是留給開發(fā)人員使用。而一般我們只需要傳遞數(shù)據(jù),并不希望驗(yàn)證合法性,XML的驗(yàn)證作用標(biāo)簽對(duì)我們沒有用處。在帶寬上,XML還存在一點(diǎn)天生的缺陷每個(gè)值都需要被類似于 <Tag>Hello</Tag>的包圍,而相同的效果JSON只需要{Tag ‘Hello,}即可。JSON在HTTP協(xié)議網(wǎng)絡(luò)傳輸中的應(yīng)用越來越多,也印證了上述判斷。(2)設(shè)計(jì)調(diào)用的接口因?yàn)橄到y(tǒng)使用接口調(diào)用的方式和客戶端互動(dòng),所以Web接口調(diào)用服務(wù)器里沒有一個(gè)JSP動(dòng)態(tài)頁(yè)面。所有行為全部單獨(dú)使用Servlet設(shè)計(jì),接收和輸出JS0N。本實(shí)施例單獨(dú)設(shè)計(jì)了一個(gè)抽象類讓每個(gè)Servlet繼承,完成判斷請(qǐng)求合法性、解析和序列化JSON等任務(wù), 而每個(gè)Servlet類只負(fù)責(zé)直接讀取并使用父類的函數(shù)進(jìn)行響應(yīng),將處理結(jié)果返回給客戶端即可。(3)設(shè)計(jì)在HTTP協(xié)議中最為經(jīng)濟(jì)、和客戶端保持狀態(tài)同步的方法客戶端需要監(jiān)聽服務(wù)器端的狀態(tài)更新。如果是傳統(tǒng)的TCP/IP協(xié)議,我們可以讓服務(wù)器端直接發(fā)送狀態(tài)到客戶端。而系統(tǒng)使用的是HTTP協(xié)議,HTTP不能直接對(duì)客戶端發(fā)送消息,每個(gè)連接都是獨(dú)立的。初始的想法是客戶端定時(shí)向服務(wù)器索取更新信息,測(cè)試后發(fā)現(xiàn)這種方法無法達(dá)到實(shí)時(shí)更新的效果,而且非常浪費(fèi)資源。經(jīng)過分析一些其他公司的網(wǎng)頁(yè)版即時(shí)通訊的消息接收原理,發(fā)現(xiàn)目前大部分網(wǎng)站使用長(zhǎng)連接來解決這類問題。具體方案是,客戶端在連接服務(wù)器時(shí)服務(wù)器會(huì)延時(shí)(這個(gè)時(shí)間通常為幾十秒)給客戶端回應(yīng),這樣客戶端會(huì)和服務(wù)端保持一段時(shí)間的連接。一旦有可以反饋的信息,服務(wù)器就中斷延時(shí),將信息返回給客戶端。如果長(zhǎng)時(shí)間沒有可以發(fā)送的消息,服務(wù)器也會(huì)中斷延時(shí),但是不返回任何信息。 客戶端一旦接受到可以處理的信息,就可以及時(shí)反饋給用戶。在一次長(zhǎng)連接結(jié)束后將再次和服務(wù)器建立長(zhǎng)連接,繼續(xù)監(jiān)聽狀態(tài)。2、連接數(shù)據(jù)庫(kù)Web接口服務(wù)器和消息處理服務(wù)器都需要連接數(shù)據(jù)庫(kù)。在研究Web接口服務(wù)器和消息處理服務(wù)器與數(shù)據(jù)庫(kù)傳輸問題時(shí),本實(shí)施例使用Hibernate作為連接數(shù)據(jù)庫(kù)的中間件。使用Hibernate讀取出的實(shí)體類能方便地序列化并進(jìn)行數(shù)據(jù)傳輸,Hibernate幫助完成了為即將傳輸數(shù)據(jù)的打包工作,極大地提高了開發(fā)效率。3、Web接口服務(wù)器、任務(wù)調(diào)度服務(wù)器、消息處理服務(wù)器之間的連接任務(wù)調(diào)度服務(wù)器、消息處理服務(wù)器都不運(yùn)行在容器中,所以不能使用hessian。因此,RMI是首選。在一切就緒后使用RMI就像直接調(diào)用本地的類一樣,而且可以直接傳輸 Hibernate的實(shí)體類,在使用的時(shí)候非常方便。(二)WEB 接口服務(wù)器作為夾在客戶端和消息處理服務(wù)器之間的Web接口服務(wù)器,主要負(fù)責(zé)用戶登入, 分配服務(wù)器資源,將客戶端的命令傳給消息處理服務(wù)器,再將消息處理服務(wù)器的命令反饋給客戶端,同時(shí)處理一些不需要消息處理服務(wù)器介入的事務(wù),比如管理聯(lián)系人列表,查看話題等等。1、加載處于容器中的Web接口服務(wù)器通過ServletContextListener的 contextlnitialized監(jiān)聽整個(gè)站點(diǎn)的啟動(dòng)。這個(gè)不像非容器的可以直接在Main函數(shù)里編碼。加載過程中除了加載容器所必要的組件外,Web接口服務(wù)器還要加載配置文件,讀取任務(wù)調(diào)度服務(wù)器的相關(guān)信息,與任務(wù)調(diào)度服務(wù)器建立連接,獲取消息處理服務(wù)器集群的信息, 再加載可被消息處理服務(wù)器集群支持的網(wǎng)絡(luò)服務(wù)列表,以便在用戶需要的時(shí)候及時(shí)反饋給用戶。2、銷毀此過程通知讀取任務(wù)調(diào)度服務(wù)器和消息處理服務(wù)器集群,該Web接口服務(wù)器已經(jīng)銷毀,這些服務(wù)器將不會(huì)再與銷毀的Web接口服務(wù)器進(jìn)行連接。3、用戶注冊(cè)和任何網(wǎng)絡(luò)服務(wù)一樣,用戶需要注冊(cè)一個(gè)具有個(gè)人特征的帳號(hào),讓系統(tǒng)可以對(duì)特定的用戶進(jìn)行回應(yīng)。用戶選擇一個(gè)唯一的用戶名和一個(gè)具有一定復(fù)雜度的密碼。同時(shí)用戶還需要輸入自己的名字,這個(gè)名字被用來給自己的聯(lián)系人表明身份,系統(tǒng)沒有強(qiáng)行要求用戶輸入自己的真實(shí)姓名。注冊(cè)用戶的密碼將進(jìn)行2次SHAl加密,再放入數(shù)據(jù)庫(kù)。4、用戶登入用戶需要登入后才能管理個(gè)人信息,收發(fā)消息,管理聯(lián)系人等,使用和他人隔離的甚至和隱私相關(guān)的事務(wù)。用戶登入后,服務(wù)器將相互處理一系列用戶信息,讀取用戶服務(wù)列表,從任務(wù)調(diào)度服務(wù)器獲得合適的消息處理服務(wù)器地址,使用獲取到的服務(wù)器登入用戶的服務(wù),加載聯(lián)系人列表,并監(jiān)聽從消息處理服務(wù)器反饋的信息。(1)用戶登入過程這個(gè)過程有2種情況發(fā)生。用戶自行輸入用戶名和密碼以登入,用戶名和密碼在用戶上次登入后就已經(jīng)保存在客戶端里。對(duì)此,在登入前,每次接收連接時(shí),都要檢查是否包含了有效的用戶登入信息,如果有效就自動(dòng)登入。(2)用戶登入后服務(wù)器的處理用戶登入后,服務(wù)器將新建線程,進(jìn)行登入后的操作。也就是說,用戶在登入和進(jìn)入自己的個(gè)人主頁(yè)之時(shí),服務(wù)器只檢查用戶名和密碼的合法性。新建的線程完成以下幾個(gè)步驟1)從數(shù)據(jù)庫(kù)服務(wù)器讀取用戶的聯(lián)系人列表;2)從數(shù)據(jù)庫(kù)服務(wù)器讀取用戶的服務(wù)列表;3)向任務(wù)調(diào)度服務(wù)器索取當(dāng)前用戶將要使用的消息處理服務(wù)器地址;4)連接獲取的消息處理服務(wù)器地址;5)將獲取的服務(wù)列表發(fā)送給消息處理服務(wù)器,讓消息處理服務(wù)器登入這些服務(wù);6)監(jiān)聽來自消息處理服務(wù)器的回推。完成這些步驟后,服務(wù)列表、聯(lián)系人列表連接后的消息處理服務(wù)器接口都將保存在Web接口服務(wù)器的一個(gè)處理用戶系統(tǒng)信息的內(nèi)存單元內(nèi)。因?yàn)橛脩粼诘侨牒髸?huì)產(chǎn)生非常多的信息,為每個(gè)用戶專門分配內(nèi)存單元有助于管理。5、監(jiān)聽用戶狀態(tài)用戶在登入后,Web接口服務(wù)器將監(jiān)聽來自消息處理服務(wù)器的回推。回推的主要內(nèi)容是消息處理服務(wù)器收到新的用戶消息、用戶的服務(wù)狀態(tài)變更(比如是否已經(jīng)登入、是否有新的新聞、聯(lián)系人的聯(lián)系方式是否有變化等等)。Web消息處理服務(wù)器在接收到消息處理服務(wù)器的回推后,將進(jìn)行處理,如果需要,打斷和客戶端更新狀態(tài)的長(zhǎng)連接,把更新的消息在一個(gè)請(qǐng)求中返回給客戶端。6、用戶登出兩種情況會(huì)使用戶登出。一種是用戶主動(dòng)登出,客戶端會(huì)按照用戶的意愿聯(lián)系 Web接口服務(wù)器登出用戶。另一種是用戶長(zhǎng)時(shí)間沒有進(jìn)行長(zhǎng)連接,對(duì)此,本實(shí)施例設(shè)定 SessionTimeout 并監(jiān)聽 kssionListener 的 sessionDestroyed 事件來實(shí)現(xiàn)用戶登出。在用戶登出后,Web接口服務(wù)器將通知消息處理服務(wù)器和任務(wù)調(diào)度服務(wù)器銷毀與用戶有關(guān)的資源,同時(shí)銷毀Web接口服務(wù)器和用戶有關(guān)的資源。其中和此用戶有關(guān)的回推將不被監(jiān)聽。7、管理用戶信息Web接口服務(wù)器負(fù)責(zé)管理被用戶所要求管理的用戶信息,這些信息就是用戶聯(lián)系人列表、聯(lián)系人聯(lián)系方式優(yōu)先級(jí)、用戶服務(wù)等等信息。為了給客戶端的人機(jī)交互帶來方便,管理用戶信息的接口需要進(jìn)行合適的設(shè)計(jì)。(1)管理聯(lián)系人列表用戶可以管理自己的聯(lián)系人列表,除了添加和刪除聯(lián)系人以外,還可以對(duì)聯(lián)系人的聯(lián)系方式進(jìn)行排序。用戶在管理聯(lián)系人列表的時(shí)候,Web接口服務(wù)器還會(huì)和信息處理服務(wù)器進(jìn)行交互。例如,用戶給自己的聯(lián)系人添加了 MSN地址作為一種聯(lián)系方式,Web接口服務(wù)器就會(huì)聯(lián)系消息處理服務(wù)器,在用戶的MSN賬戶上進(jìn)行添加聯(lián)系人的操作。這樣可以保證聯(lián)系人列表和用戶服務(wù)的聯(lián)系人列表同步。(2)管理服務(wù)列表用戶需要添加自己所使用的網(wǎng)絡(luò)服務(wù)才能讓系統(tǒng)發(fā)揮效用。用戶可以添加和刪除網(wǎng)絡(luò)服務(wù),添加網(wǎng)絡(luò)服務(wù)時(shí),Web接口服務(wù)器會(huì)通知消息處理服務(wù)器嘗試以用戶提供的信息登入。如果登入成功,就將用戶提供的信息保存到數(shù)據(jù)庫(kù),以便下次用戶使用。通常用戶需要提供自己的帳號(hào)和密碼,對(duì)于某些不特定的帳號(hào)(比如郵箱)還需要提供服務(wù)器地址和端口等信息。(3)管理帳號(hào)用戶在此管理自己在注冊(cè)的時(shí)候提供的信息,除了用戶名以外,其他任何信息都可以修改,包括密碼和名字。(4)查詢?cè)掝}用戶需要分類檢索自己的話題,就像電子郵箱里被分成了收件箱、發(fā)件箱、垃圾郵件和回收站等等。在系統(tǒng)中,話題被分為我的話題、加入的話題和我回復(fù)的話題。用戶在知道自己檢索的目的時(shí),可以方便地從中尋找并查看話題。由于查詢到的話題可能數(shù)量非常多,Web接口服務(wù)器支持分頁(yè)查詢,舊的話題置于末端。(5)查詢帖子內(nèi)容Web接口服務(wù)器可以直接查詢數(shù)據(jù)庫(kù)中的帖子,列出話題并列出話題的回復(fù)與回復(fù)的回復(fù)。帖子的內(nèi)容就是用戶和其聯(lián)系人交流的內(nèi)容。在提供父級(jí)帖子編號(hào)和根帖子編號(hào)的情況下,客戶端可以非常容易地組合成樹形結(jié)構(gòu)并呈現(xiàn)給用戶。(6)發(fā)布話題與回復(fù)Web接口服務(wù)器接收在客戶端用戶的要求下發(fā)布話題或者回復(fù)。用戶需要提供帖子的相關(guān)信息,Web接口服務(wù)器不直接處理這些信息,而是轉(zhuǎn)發(fā)到用戶的消息處理服務(wù)器, 讓消息處理服務(wù)器進(jìn)行寫數(shù)據(jù)庫(kù)和消息發(fā)送的工作。(7)將狀態(tài)推送到客戶端系統(tǒng)會(huì)在一次長(zhǎng)連接中推送多條信息給客戶端,一次推送可能同時(shí)包含用戶在線狀態(tài)和服務(wù)狀態(tài)、是否有新的消息等信息。Web接口服務(wù)器在收到消息處理服務(wù)器的推送后,會(huì)將其緩存在用戶內(nèi)存單元的一個(gè)變量中,在Web接口服務(wù)器的長(zhǎng)連接的循環(huán)中, 一旦監(jiān)測(cè)到變量變化,就會(huì)打斷并返回給客戶端。因?yàn)橛脩艨赡茉诓煌胤降侨?,在Java Servlet里會(huì)擁有多個(gè)kssion ID,所以,在推送前需要給每個(gè)不同ksssion ID保留一個(gè)副本,將推送消息發(fā)送到用戶所有的客戶端上。(8)服務(wù)新鮮事此特性將用戶服務(wù)中帶有社交網(wǎng)站元素的信息搬到客戶端通常是主頁(yè)的位置,讓用戶知道自己的聯(lián)系人或者此服務(wù)的其他人在做什么而主動(dòng)進(jìn)行交流。這些信息由消息處理服務(wù)器定時(shí)從用戶登入的服務(wù)中獲取,Web接口服務(wù)器再定時(shí)從消息處理服務(wù)器獲取并放入用戶內(nèi)存單元中。這個(gè)特性沒有使用推送機(jī)制,因?yàn)槁?lián)系人狀態(tài)的信息可能變化非???。客戶端需要主動(dòng)向Web接口服務(wù)器索取這些信息。這些信息是由消息處理服務(wù)器的服務(wù)插件生成,包含狀態(tài)標(biāo)題、內(nèi)容、聯(lián)系人和反饋方式。反饋方式的作用是告訴客戶端用戶在點(diǎn)擊這條狀態(tài)后該如反饋。反饋方式有①直接給狀態(tài)的聯(lián)系人產(chǎn)生新話題;②復(fù)制狀態(tài)內(nèi)容作為新話題,再對(duì)其進(jìn)行回帖;③將聯(lián)系人和狀態(tài)標(biāo)題及內(nèi)容返回給Web接口服務(wù)器,再轉(zhuǎn)發(fā)消息處理服務(wù)器, 由消息處理服務(wù)器的服務(wù)插件處理行為。(三)消息處理服務(wù)器1、消息處理工作過程消息處理服務(wù)器是處理系統(tǒng)用戶消息的主要部分,是真正實(shí)現(xiàn)消息收發(fā)的部分。 消息處理服務(wù)器可以集群部署,只要能和任務(wù)調(diào)度服務(wù)器注冊(cè),就能被分配到任務(wù)。Web接口調(diào)用指定的消息處理服務(wù)器,消息處理服務(wù)器會(huì)將任務(wù)進(jìn)行處理,調(diào)用服務(wù)插件,讓服務(wù)插件實(shí)現(xiàn)消息最后的接收、發(fā)送和其他服務(wù)相關(guān)的功能。2、加載服務(wù)插件啟動(dòng)后,從配置文件讀取任務(wù)調(diào)度服務(wù)器地址,建立Hibernate和數(shù)據(jù)庫(kù)的連接,并加載加RMI服務(wù)到注冊(cè)表。一開始啟動(dòng)的時(shí)候,只加載通用RMI服務(wù)。然后將此服務(wù)器在任務(wù)調(diào)度服務(wù)器上進(jìn)行注冊(cè)。結(jié)束后根據(jù)配置文件中插件的信息加載服務(wù)插件。(1)加載服務(wù)插件本實(shí)施例在Java中動(dòng)態(tài)加載Jar文件的插件來實(shí)現(xiàn)插件的特性。插件都按照一定的接口和模式進(jìn)行設(shè)計(jì)。插件加載模塊在加載之前讀取配置文件,配置文件包含了插件的系統(tǒng)名稱、類名稱、是否依賴聯(lián)系人列表發(fā)送消息、默認(rèn)優(yōu)先級(jí)、插件的Jar所依賴的包和登入服務(wù)時(shí)所需要提供的信息模版。插件系統(tǒng)名稱可以在系統(tǒng)內(nèi)部識(shí)別此服務(wù),是否依賴聯(lián)系人決定了能否在聯(lián)系人不在聯(lián)系列表的情況下也能通過地址發(fā)送消息,默認(rèn)優(yōu)先級(jí)決定了用戶在添加此服務(wù)作為聯(lián)系人的聯(lián)系方式的時(shí)候所賦予的優(yōu)先級(jí)(用戶可以自行進(jìn)行調(diào)整),插件依賴的Jar包就是插件運(yùn)行所需要的其他Jar文件。在加載插件Jar的時(shí)候,依賴項(xiàng)將和插件一起加載到消息處理服務(wù)器中。(2)在任務(wù)調(diào)度服務(wù)器上進(jìn)行注冊(cè)因?yàn)閃eb接口服務(wù)器需要通過任務(wù)調(diào)度服務(wù)器來為用戶分配消息處理服務(wù)器的分布式服務(wù)器資源,而且為了使整個(gè)分布式網(wǎng)絡(luò)更加靈活,每臺(tái)消息處理服務(wù)器上線后都要自動(dòng)向任務(wù)調(diào)度服務(wù)器注冊(cè),使任務(wù)調(diào)度服務(wù)器知道自身(消息處理服務(wù)器)的存在,以便在Web接口服務(wù)器索取用戶資源時(shí)將自己的資源給Web接口服務(wù)器使用。3、通用RMI服務(wù)通用RMI服務(wù)針對(duì)的是整個(gè)消息處理服務(wù)器。Web消息服務(wù)器可以從通用RMI服務(wù)獲取可用服務(wù)列表、生成用戶RMI服務(wù)。任務(wù)調(diào)度服務(wù)器可以從通用RMI獲取此消息處理服務(wù)器的硬件資源消耗情況。因?yàn)椴煌挠脩艨赡芊稚⒃诓煌?wù)器里,消息處理服務(wù)器之間也能在需要的時(shí)候互相通訊。
23
(1)可用服務(wù)列表可用服務(wù)列表由加載的配置文件而來,消息處理服務(wù)器直接將列表返回至詢問的 Web接口服務(wù)器,讓W(xué)eb接口服務(wù)器自行處理。(2)生成用戶RMI服務(wù)Web接口服務(wù)器被指令用戶登入后,消息處理服務(wù)器會(huì)被要求為用戶生成一個(gè)用戶專有的RMI遠(yuǎn)程對(duì)象。消息處理服務(wù)器將此對(duì)象的RMI地址返回Web接口服務(wù)器,讓W(xué)eb 接口服務(wù)器自行連接剛才生成的RMI遠(yuǎn)程對(duì)象。連接該用戶的遠(yuǎn)程對(duì)象后Web接口服務(wù)器就可以控制用戶的服務(wù)資源(比如發(fā)送帖子,添加聯(lián)系人等等)。(3)獲取硬件資源消耗情況任務(wù)調(diào)度服務(wù)器分配用戶資源的方式就是根據(jù)信息處理服務(wù)器的資源消耗情況。任務(wù)調(diào)度服務(wù)器會(huì)每隔一段時(shí)間更新消息處理服務(wù)器的硬件資源使用狀況。提供給任務(wù)調(diào)度服務(wù)器的是一個(gè)性能指數(shù),此信息通過Java虛擬機(jī)從系統(tǒng)獲取,本實(shí)施例使用 T com. sun. management 的 OperatingSystemMXBean : 1 ¢( # 胃■的 ft ;I、,if 胃 & ζ 為.getRuntime (). freeMemory () /. getSystemLoadAverage ()。這樣數(shù)值越大就代表系統(tǒng)資源越豐富。(4)相互通訊考慮到系統(tǒng)用戶之間相互交流信息時(shí),如果兩個(gè)用戶不在同一臺(tái)消息處理服務(wù)器,就無法回推消息,因?yàn)閃eb接口服務(wù)器也是不確定的,回推時(shí)一定要把消息回推到正確的Web接口服務(wù)器。這樣用戶只能自己手動(dòng)檢查是否有新消息。相互通訊的功能是當(dāng)系統(tǒng)在發(fā)帖的時(shí)候發(fā)現(xiàn)聯(lián)系人有其他用戶,就在用戶內(nèi)存單元尋找本機(jī)是否存在此用戶,存在就說明用戶和聯(lián)系人中的用戶在同一臺(tái)服務(wù)器,可以直接以相應(yīng)回推,不存在就要詢問任務(wù)調(diào)度服務(wù)器此用戶的消息處理服務(wù)器,將回推的消息轉(zhuǎn)發(fā)到聯(lián)系人用戶的消息處理服務(wù)器,被轉(zhuǎn)發(fā)的消息的服務(wù)器將按照不同流程將消息回推到Web接口服務(wù)器。如果在任務(wù)調(diào)度服務(wù)器找不到,將把這個(gè)帖子放入延遲發(fā)送的數(shù)據(jù)表中,在下次合適的時(shí)候發(fā)送。4、用戶 RMI用戶在登入以后,Web接口服務(wù)器就會(huì)從被指定的消息處理服務(wù)器中獲得用戶 RMI。所有和該用戶有關(guān)的遠(yuǎn)程調(diào)用都通過這個(gè)接口實(shí)現(xiàn)。(1)制定函數(shù)1)指定此用戶RMI的所有人;2)測(cè)試服務(wù)是否可通過用戶提供的信息登入(在用戶添加新服務(wù)帳號(hào)的時(shí)候使用);3)加載并登入用戶服務(wù)。此操作由Web接口服務(wù)器在用戶登入后調(diào)用;4)銷毀。此操作在用戶登出帳號(hào)時(shí)由Web接口服務(wù)器調(diào)用;5)獲取聯(lián)系人優(yōu)先聯(lián)系服務(wù);6)獲取所有服務(wù)在線情況;7)設(shè)定用戶狀態(tài);8)獲取用戶狀態(tài);9)獲取用戶服務(wù)新鮮事;10)發(fā)帖;
11)轉(zhuǎn)發(fā)消息;12)執(zhí)行服務(wù)命令;為了加快每次RMI調(diào)用的響應(yīng)速度,所有不返回值的函數(shù)的過程全部使用單獨(dú)的線程處理(異步)。比如加載并登入用戶服務(wù)這個(gè)步驟,如果等待所有服務(wù)上線,將讓用戶等待很長(zhǎng)的時(shí)間,而給不返回值的情況下使用單獨(dú)的線程可以讓過程變得更加高效。對(duì)于需要返回值的調(diào)用,要求這個(gè)過程能夠盡快完成。(2)上述函數(shù)實(shí)現(xiàn)的方法1)指定此用戶RMI的所有人這個(gè)過程由Web接口服務(wù)器調(diào)用,檢查消息處理服務(wù)器是否已經(jīng)存在關(guān)于此用戶的用戶內(nèi)存單元。如果有,就使用已經(jīng)存在的資源,如果沒有,就為該用戶創(chuàng)建資源。同時(shí)開啟定時(shí)器定時(shí)從用戶服務(wù)更新新鮮事,并且記錄此Web接口服務(wù)器。2)測(cè)試服務(wù) 該函數(shù)只有在用戶嘗試添加新服務(wù)或者修改服務(wù)時(shí)由Web接口服務(wù)器調(diào)用,確認(rèn)用戶提供的信息是否能登入。這個(gè)函數(shù)將返回一個(gè)值,所以不是異步的,用戶則需要等待此服務(wù)登入成功或者失敗。3)測(cè)試服務(wù)是否可通過用戶提供的信息登入Web接口服務(wù)器會(huì)把用戶的服務(wù)和服務(wù)登入信息發(fā)送給用戶的消息處理服務(wù)器。 消息處理服務(wù)器將在加載好的服務(wù)插件上創(chuàng)建服務(wù)實(shí)例,每個(gè)用戶的每個(gè)服務(wù)都有這樣一個(gè)實(shí)例,只不過因?yàn)椴煌姆?wù)和帳號(hào)而不相同。加載完畢后,消息處理服務(wù)器會(huì)讓每個(gè)加載好的服務(wù)插件實(shí)例登入服務(wù)。登入過程由服務(wù)插件對(duì)象控制,返回是否登入結(jié)果到Web 接口服務(wù)器。4)加載并登入用戶服務(wù)Web接口服務(wù)器將發(fā)送用戶服務(wù)列表和相關(guān)登入信息給指定的消息處理服務(wù)器列表,由消息處理服務(wù)器登入服務(wù)。Web消息處理服務(wù)器將異步為每個(gè)服務(wù)調(diào)用“測(cè)試服務(wù)是否可通過用戶提供的信息登入”函數(shù),而登入服務(wù)的函數(shù)到此結(jié)束,登入是否成功的消息由服務(wù)插件實(shí)例回推到Web接口服務(wù)器中。所以這個(gè)過程對(duì)于用戶來說是一瞬間的事情,而無需等待服務(wù)加載并登入完畢。5)銷毀這個(gè)過程是在Web接口服務(wù)器的用戶注銷后所發(fā)生。因?yàn)榭紤]到用戶在多個(gè)地方登入的可能,所以必須要在確認(rèn)用戶完全登出后才能銷毀用戶相關(guān)的資源。銷毀資源的過程中,所有服務(wù)將離線,所有定時(shí)器關(guān)閉,最后從內(nèi)存銷毀所有此用戶所使用的資源。6)獲取聯(lián)系人優(yōu)先聯(lián)系服務(wù)該函數(shù)可以直接被Web消息處理服務(wù)器調(diào)用、在回推聯(lián)系人可使用服務(wù)和發(fā)帖的時(shí)候調(diào)用。這個(gè)過程中,消息處理服務(wù)器將從聯(lián)系人列表中讀取聯(lián)系人的聯(lián)系方式;按照聯(lián)系方式的優(yōu)先級(jí)在每個(gè)已經(jīng)登入的用戶服務(wù)中判斷聯(lián)系方式是否可用;將找到的第一個(gè)聯(lián)系方式返回。7)獲取所有服務(wù)在線情況Web接口服務(wù)器調(diào)用此函數(shù)來獲取目前服務(wù)的在線情況。消息處理服務(wù)器將直接查詢用戶服務(wù)的在線狀態(tài)并返回。
8)廣播用戶狀態(tài)一些服務(wù)具有廣播用戶狀態(tài)的特性。如一些即時(shí)通訊工具,可以顯示聯(lián)系人目前在做什么,這些內(nèi)容可以被用戶的任何聯(lián)系人看到,發(fā)送一條微博也屬于廣播范疇。用戶也可以廣播自己的狀態(tài)。此函數(shù)由Web接口服務(wù)器調(diào)用,消息處理服務(wù)器將為用戶所有服務(wù)都設(shè)定狀態(tài)。如果用戶的某些服務(wù)不支持,狀態(tài)廣播的行為將不被處理。還可以通過用戶狀態(tài)實(shí)現(xiàn)分享之類廣播的特性。9)獲取用戶狀態(tài)此函數(shù)是由Web接口服務(wù)器調(diào)用。通常用戶狀態(tài)不保存在數(shù)據(jù)庫(kù)中,而是直接從用戶服務(wù)讀取。消息處理服務(wù)器只讀取第一個(gè)有狀態(tài)的服務(wù)的狀態(tài)發(fā)送返回給Web接口服務(wù)器。10)獲取用戶服務(wù)新鮮事服務(wù)新鮮事由Web接口服務(wù)器獲取。Web接口服務(wù)器獲取的時(shí)候,用戶新鮮事已經(jīng)收集好并放在一個(gè)變量中。收集工作由新鮮事獲取定時(shí)器完成。因?yàn)槊總€(gè)服務(wù)獲取新鮮事的時(shí)間和方式不同,所以使用定時(shí)器是安全穩(wěn)定的。新鮮事獲取定時(shí)器以固定的頻率將用戶服務(wù)的新鮮事放入變量中,等待Web接口服務(wù)器獲取。11)發(fā)帖作為整個(gè)系統(tǒng)的核心之一,發(fā)帖可以被消息處理服務(wù)器內(nèi)部調(diào)用,也可以被Web 接口服務(wù)器調(diào)用。發(fā)帖可以是用戶,也可以是用戶的服務(wù)中收到的消息。發(fā)帖需要提供數(shù)據(jù)庫(kù)表的所有信息,作為話題帖子,還需要提供話題的聯(lián)系人列表。以下是發(fā)帖時(shí)系統(tǒng)處理步驟A.檢查唯一編號(hào)是否已經(jīng)在數(shù)據(jù)庫(kù)存在。如果不存在進(jìn)行下一步,如果存在直接退出函數(shù);B.將信息格式化;C.如果為話題帖子,檢查是否缺少用戶為其中之一的聯(lián)系人,如果是,將其補(bǔ)上;D.檢查聯(lián)系人列表的聯(lián)系人和作者。有些時(shí)候用戶或者聯(lián)系人會(huì)直接使用服務(wù)的地址作為聯(lián)系人字符串,而這個(gè)地址剛好是某個(gè)聯(lián)系人的聯(lián)系方式。這個(gè)過程將把使用服務(wù)地址聯(lián)系人字符串改變?yōu)橛脩舻穆?lián)系人的聯(lián)系人字符串。一般當(dāng)用戶的聯(lián)系人發(fā)帖時(shí)可以將地址轉(zhuǎn)換成聯(lián)系人,讓用戶能直接識(shí)別;E.將帖子插入數(shù)據(jù)庫(kù);F.如果這個(gè)帖子為回復(fù),更新父帖和根帖的數(shù)據(jù)庫(kù)紀(jì)錄中“回復(fù)人”和“最后回復(fù)時(shí)間”字段;G.讀取已經(jīng)插入數(shù)據(jù)庫(kù)的帖子的編號(hào);H.如果為話題帖子,將帖子聯(lián)系人列表插入帖子聯(lián)系人表;I.如果是回復(fù),獲取根帖的編號(hào)。如果是話題帖子,根帖編號(hào)為已經(jīng)插入數(shù)據(jù)庫(kù)的帖子的編號(hào);J.通過獲取的根帖子的編號(hào)從數(shù)據(jù)庫(kù)獲取根帖子的聯(lián)系人列表;K.根據(jù)讀取的帖子聯(lián)系人列表,將消息轉(zhuǎn)發(fā)給聯(lián)系人。12)轉(zhuǎn)發(fā)消息此函數(shù)不被Web接口服務(wù)器調(diào)用,是發(fā)帖時(shí)用來為指定聯(lián)系人或用戶轉(zhuǎn)發(fā)消息時(shí)使用。因?yàn)橐粋€(gè)話題可能有不同的用戶參與其中,而不同的用戶可能在不同的消息處理服務(wù)器,所以轉(zhuǎn)發(fā)消息需要作為遠(yuǎn)程方法調(diào)用來執(zhí)行。轉(zhuǎn)發(fā)過程中,系統(tǒng)將A.檢查轉(zhuǎn)發(fā)的聯(lián)系人和作者是否為同一人,如果是,此消息將不被轉(zhuǎn)發(fā)到這個(gè)聯(lián)系人;B.檢查轉(zhuǎn)發(fā)的聯(lián)系人是否為系統(tǒng)的另一個(gè)用戶,并且此用戶不在本地的消息處理服務(wù)器中。如果是,將從任務(wù)調(diào)度服務(wù)器讀取此用戶位置,并把此消息轉(zhuǎn)發(fā)到用戶位置進(jìn)行處理。整個(gè)本服務(wù)器的轉(zhuǎn)發(fā)過程結(jié)束;C.檢查轉(zhuǎn)發(fā)消息的聯(lián)系人字符串的格式;D.如果為用戶聯(lián)系人字符串,將通過獲取聯(lián)系人優(yōu)先聯(lián)系服務(wù)方法獲取最合適用戶聯(lián)系人聯(lián)系方式,通過這個(gè)聯(lián)系方式所對(duì)應(yīng)的服務(wù)插件實(shí)例發(fā)送消息;E.如果為用戶的某個(gè)服務(wù)插件的實(shí)例地址,直接通過這個(gè)實(shí)例發(fā)送;F.如果為系統(tǒng)用戶,將消息回推到用戶的Web接口服務(wù)器。整個(gè)過程是否成功將被監(jiān)視,如果不成功,這個(gè)消息將保存到數(shù)據(jù)庫(kù),在下次合適的時(shí)候發(fā)送。13)執(zhí)行服務(wù)命令命令由服務(wù)插件實(shí)例在服務(wù)新鮮事的時(shí)候生成,由服務(wù)插件實(shí)例識(shí)別并執(zhí)行相關(guān)操作。(四)任務(wù)調(diào)度服務(wù)器任務(wù)調(diào)度服務(wù)器是為用戶分配消息處理服務(wù)器資源的服務(wù)器,也是索引用戶消息處理服務(wù)器的服務(wù)器。任務(wù)處理服務(wù)器啟動(dòng)的時(shí)候注冊(cè)自己的RMI,就等待其他服務(wù)器的連接。1、消息處理服務(wù)器的注冊(cè)注冊(cè)過程將把此消息處理服務(wù)器的IP地址紀(jì)錄在案,并且打開一個(gè)定時(shí)器定期從消息處理服務(wù)器獲取性能指數(shù),找出資源剩余最大的服務(wù)器并記錄。期間將為每個(gè)服務(wù)器打開定時(shí)器檢測(cè)消息處理服務(wù)器是否離線來更新消息處理服務(wù)器列表。2、獲取用戶消息處理服務(wù)器每次Web接口服務(wù)器獲取用戶消息處理服務(wù)器的時(shí)候,任務(wù)調(diào)度服務(wù)器將記錄的服務(wù)器返回即可。服務(wù)插件設(shè)計(jì)(一 )服務(wù)插件定義及其函數(shù)服務(wù)插件是用戶服務(wù)收發(fā)的最終端,運(yùn)行于消息處理服務(wù)器中。我需要為每個(gè)用戶可能會(huì)用到的服務(wù)編寫服務(wù)插件。服務(wù)插件所提供的服務(wù)可以是任何具有消息交流特性的互聯(lián)網(wǎng)服務(wù),但是每個(gè)服務(wù)插件都要按照特定的接口編寫,以便消息處理服務(wù)器支持。目前服務(wù)插件接口的函數(shù)有1.加載;
2.登入;
3.登出(斷開連接)
4.發(fā)送消息;
5.獲取服務(wù)在線情況
27
6.獲得用戶狀態(tài);7.廣播用戶狀態(tài);8.搜索9.重新加載。此函數(shù)為消息處理服務(wù)器為每個(gè)插件實(shí)例的一個(gè)定時(shí)器調(diào)用,提醒其更新自己的狀態(tài);10.添加聯(lián)系人(和用戶聯(lián)系人列表中的聯(lián)系方式綁定);11.刪除聯(lián)系人(和用戶聯(lián)系人列表中的聯(lián)系方式綁定);12.判斷地址是否可以發(fā)送,消息處理服務(wù)器據(jù)此判斷是否通過此聯(lián)系方式轉(zhuǎn)發(fā)用戶消息;13.獲取新鮮事;14.執(zhí)行服務(wù)命令。( 二 )服務(wù)處理方式雖然每個(gè)服務(wù)并不相同,但是我可以針對(duì)同一類型的服務(wù)使用同一套處理方式。 例如即時(shí)通訊,我為這種類型的服務(wù)開發(fā)了自動(dòng)判斷話題和讓聯(lián)系人選擇話題的部分。由于即時(shí)通訊工具的消息不攜帶其他信息,因而需要人工確定第一條消息的話題。如微博,本實(shí)施例將用戶狀態(tài)設(shè)定為發(fā)送一條微博,獲取用戶最后發(fā)送的微博作為用戶狀態(tài),而用戶向指定微博為聯(lián)系方式的聯(lián)系人發(fā)送消息時(shí),將其視為私信處理,微博的用戶評(píng)論了用戶狀態(tài),系統(tǒng)就復(fù)制用戶的這條狀態(tài)作為話題,將評(píng)論作為回復(fù)。服務(wù)插件可以自主搭配使用任何消息處理服務(wù)的函數(shù)來實(shí)現(xiàn)具有服務(wù)特色的插件。服務(wù)插件可以自主處理服務(wù)命令, 這樣可以讓新鮮事的功能變得更加靈活,服務(wù)插件自己訂制新鮮事的指令,讓用戶選擇后還將自行處理這些指令。(三)服務(wù)消息的處理服務(wù)插件在接收到服務(wù)消息后,將其托管到消息處理服務(wù)器中處理消息。使用的方法和用戶發(fā)帖時(shí)Web接口服務(wù)器所調(diào)用的是同一個(gè)函數(shù)。當(dāng)服務(wù)插件以話題形式發(fā)布話題時(shí),聯(lián)系人則是接收此消息的系統(tǒng)用戶。(四)開發(fā)與維護(hù)本實(shí)施例使用開源的由社區(qū)或者志愿者維護(hù)的服務(wù)類庫(kù),以此為基礎(chǔ)進(jìn)行開發(fā)。 這些類庫(kù)在許可證范圍內(nèi)可以隨意使用,節(jié)約了開發(fā)時(shí)間與成本。但并不是所有的服務(wù)都有開源社區(qū)或者志愿者的維護(hù),有些服務(wù)需要自己開發(fā)。而有些服務(wù)是無法開發(fā)插件的,例如,無法為騰訊QQ開發(fā)服務(wù)插件,因?yàn)镼Q使用了封閉的信息傳輸方法,并且協(xié)議每隔一段時(shí)間就會(huì)發(fā)生改變。以前有不少Q(mào)Q協(xié)議的類庫(kù),但是最終都因?yàn)镼Q協(xié)議頻繁變動(dòng)而放棄維護(hù)了。實(shí)施例三MSN插件的開發(fā)為了制作MSN插件,本實(shí)施例在網(wǎng)上找到了 Java MSN Messenger 1 ibrary (http //sourceforge. net/pro jects/ java-jml/)。i亥類庫(kù)由 jadestorm 開發(fā)并維護(hù),使用Apache License V2. 0協(xié)議,可以在保留協(xié)議的情況下使用這個(gè)類庫(kù)于商業(yè)和非商業(yè)的用途。這個(gè)類庫(kù)提供了 MSN基本的協(xié)議架構(gòu),如果要應(yīng)用在消息處理服務(wù)器中,還需要按照服務(wù)插件接口進(jìn)行封裝。
以下假設(shè)您已經(jīng)理解JML的開發(fā)文檔。1、加載這個(gè)過程為插件指定了服務(wù)的系統(tǒng)用戶,在以后和消息處理服務(wù)器交互的時(shí)候會(huì)用到。2、登入本過程將解析提供給插件的登入信息,使用這些登入信息調(diào)用JML的messenger =MsnMessengerFactory. createMsnMessenger,創(chuàng)建一個(gè) MSN 協(xié)議的實(shí)例,為監(jiān)控狀態(tài)添加Listener,然后調(diào)用messenger. IoginO進(jìn)行登入。由于JML使用異步的登入方式,因此必須在主線程等待JML的登入異步線程完成登入后,再結(jié)束主線程的登入過程,返回是否登入的結(jié)果。如果MSN成功登入,將回推用戶的Web接口服務(wù)器,說明用戶的這個(gè)MSN已經(jīng)登入。3、加載MSN服務(wù)聯(lián)系人在登入過程中設(shè)定的Listener,其中一個(gè)用途就是監(jiān)聽MSN的服務(wù)器是否發(fā)送了 MSN服務(wù)聯(lián)系人到我的消息處理服務(wù)器,或者聯(lián)系人列表是否出現(xiàn)改變。在接收到MSN服務(wù)的聯(lián)系人列表后,將把聯(lián)系人列表的聯(lián)系人地址,和系統(tǒng)用戶的聯(lián)系人聯(lián)系方式的地址進(jìn)行比較,如果不存在這個(gè)地址,就把這個(gè)地址導(dǎo)入聯(lián)系人列表。服務(wù)在第一次登入的時(shí)候, 會(huì)將所有服務(wù)聯(lián)系人地址導(dǎo)入系統(tǒng)用戶的聯(lián)系人列表。同時(shí)這個(gè)過程將回推用戶的Web接口服務(wù)器聯(lián)系人列表,告知其已經(jīng)改變。4、登出在這里,直接調(diào)用messenger, logout ()登出用戶MSN。5、接收消息在登入時(shí)添加的其中一個(gè)Listener作用就是監(jiān)聽服務(wù)的聯(lián)系人發(fā)送的消息。由于即時(shí)通訊工具的消息無法保存額外信息,也就是說光從單個(gè)消息,我們并不知道其內(nèi)容說的是什么話題。這個(gè)問題存在于所有即時(shí)通訊工具中,所以為即時(shí)通訊工具開發(fā)了一個(gè)公共類庫(kù),讓公共類庫(kù)來托管即時(shí)通訊消息的收發(fā)工作。而即時(shí)通訊的服務(wù)插件只需要按照要求提供參數(shù),就可以實(shí)現(xiàn)兼容系統(tǒng)的話題消息機(jī)制。6、發(fā)送消息發(fā)送消息對(duì)系統(tǒng)來說實(shí)際上是一個(gè)給用戶的聯(lián)系人指定話題的過程。因?yàn)榘l(fā)送消息時(shí),服務(wù)插件能得知發(fā)送消息所指向的話題。這個(gè)過程也交給即時(shí)通訊工具的公共類庫(kù)處理,最終發(fā)送的消息不光包含內(nèi)容本身,還有消息的發(fā)送者和標(biāo)題。7、獲取服務(wù)在線情況直接返回最后登入的狀態(tài)8、獲得用戶狀態(tài)直接返回 messenger. getOwner (). getPersonalMessage ()。9、廣播用戶狀態(tài)使用 messenger. getOwner (). setPersonalMessage (Status)設(shè)置用戶 MSN 的個(gè)人消息。10、搜索MSN的類庫(kù)沒有搜索特性,所以搜索在此返回空。
11、重新加載MSN的類庫(kù)具有自動(dòng)維持登入狀態(tài)的特性,所以什么都不需要做。12、添加聯(lián)系人使用 messenger. addFriend(Email. parseStr (Address),Address)。13、刪除聯(lián)系人使用 messenger. removeFriend (Email. parseStr (Address),false)。14、判斷地址是否可以發(fā)送這里,先判斷MSN服務(wù)是否在線;接著判斷用戶MSN是否包含這個(gè)聯(lián)系人。如果條件都滿足,返回messenger. getContactList () . getContactByEmai 1 (Email. parseStr(Address)). getStatus() ! = MsnUserStatus. OFFLINE。15、獲取新鮮事MSN的新鮮事在加載服務(wù)聯(lián)系人列表的時(shí)候,就從服務(wù)聯(lián)系人列表中的聯(lián)系人個(gè)人信息上提取,并保存在一個(gè)數(shù)組變量中,等待消息處理服務(wù)器獲取。這里的所有新鮮事的服務(wù)命令全部都是為此聯(lián)系人創(chuàng)建新話題,此命令可以直接由客戶端處理,不需要在執(zhí)行服務(wù)命令的時(shí)候處理。16、執(zhí)行服務(wù)命令因?yàn)樾迈r事里沒有需要讓服務(wù)插件執(zhí)行的命令,所以這里什么都不需要做。實(shí)施例四新浪微博插件的開發(fā)盡管國(guó)內(nèi)有不少封閉的網(wǎng)絡(luò)服務(wù)提供商,不過也不缺少一些開放的網(wǎng)絡(luò)服務(wù)。新浪微博有自己維護(hù)的,從原本用來支持Twitter的twitter4j (作者為Yusuke Yamamoto) 改編而來的weibo4j類庫(kù),可以直接用于開發(fā)支持新浪微博的軟件。這個(gè)類庫(kù)同樣需要封裝后才能被消息處理服務(wù)器接受。1、加載該過程和MSN —樣,指定了服務(wù)的系統(tǒng)用戶。2、登入新浪微博使用了 OAuth認(rèn)證方式,和本系統(tǒng)的Web接口服務(wù)器一樣,基于HTTP協(xié)議。登入的過程實(shí)際就是初始化微博接口實(shí)例的過程,以解析后的用戶名和密碼初始化微博接口(weibo = Iiew Wieib0(uSer,paSS)),使用此接口就可以訪問用戶微博的任何授權(quán)資源。登入后,系統(tǒng)會(huì)嘗試性地加載聯(lián)系人(從weibo. getFriendsStatusesO獲取),成功就說明此用戶的用戶名和密碼是正確的。全部過程完成后返回用戶驗(yàn)證結(jié)果,同時(shí)回推給用戶的Web驗(yàn)證結(jié)果。3、加載服務(wù)聯(lián)系人此過程已經(jīng)在登入的時(shí)候完成。4、登出weibo4j沒有登出的接口,實(shí)際上也不需要,因?yàn)閣eibo4j最終使用HTTP協(xié)議,所以不用再訪問即可達(dá)到相同效果。因消息處理服務(wù)器在服務(wù)登出后將直接對(duì)其進(jìn)行銷毀, 故這里不需要做任何事情。
5、接收消息由于使用HTTP協(xié)議,新浪微博的服務(wù)器并不會(huì)主動(dòng)在有評(píng)論或者私信時(shí),發(fā)送消息給消息處理服務(wù)器。因此,需要定時(shí)從新浪微博的服務(wù)器讀取來接收消息,這個(gè)過程在 “重新加載”里處理。6、發(fā)送消息在微博,發(fā)送消息有兩種模式,即私信和微博回復(fù)。服務(wù)插件為確定這兩種模式, 必須對(duì)消息對(duì)應(yīng)的話題進(jìn)行判斷。服務(wù)插件會(huì)依據(jù)從數(shù)據(jù)庫(kù)讀取發(fā)送的消息的話題的“帖子內(nèi)容代號(hào)”來判斷消息是否為微博。在重新加載的過程中,作為新話題的,微博都將使用唯一的開頭,如果在發(fā)送消息的時(shí)候判斷到這個(gè)唯一的開頭,就將其以此微博的評(píng)論發(fā)送。 如果沒有判斷到這個(gè)開頭,就以私信的形式發(fā)送。7、獲取服務(wù)在線情況一旦成功登入,在線情況就一直為在線。如果在登入的時(shí)候就沒有成功,就一直顯示不在線,直到登入成功。8、獲得用戶狀態(tài)本函數(shù)返回最后一條微博作為用戶狀態(tài)。9、廣播用戶狀態(tài)發(fā)布一條以用戶狀態(tài)為內(nèi)容的微博,來實(shí)現(xiàn)微博的廣播用戶狀態(tài)功能。10、搜索新浪微博的API提供了搜索微博的方法。在此,系統(tǒng)將使用和新鮮事類似的方法處理搜索到的微博。11、重新加載這個(gè)過程將主要處理新的微博評(píng)論、新的私信和新鮮事這些內(nèi)容。前面解釋了微博服務(wù)器不會(huì)即時(shí)回應(yīng)消息,因而需要定時(shí)從服務(wù)器獲取。由于新浪的API規(guī)定不能以非常高的頻率訪問他們的服務(wù)器,所以本實(shí)施例以2分鐘為周期,同步微博的信息。(1)處理微博評(píng)論首先,使用weibo. getCommentsI^MeO獲得他人對(duì)用戶的評(píng)論。系統(tǒng)會(huì)獲得這個(gè)評(píng)論的內(nèi)容和評(píng)論對(duì)應(yīng)的微博狀態(tài)。先把這個(gè)微博狀態(tài)的編號(hào)組合成唯一的帖子內(nèi)容代號(hào),在數(shù)據(jù)庫(kù)進(jìn)行查找,如果找不到就將這個(gè)微博狀態(tài)以話題的方式插入。接著處理評(píng)論內(nèi)容,將其以微博狀態(tài)對(duì)應(yīng)的話題的回復(fù)進(jìn)行發(fā)帖。(2)處理私信然后,使用weibo. getDirectMessagesO。這個(gè)處理過程,和即時(shí)通訊工具的處理
方式一樣。(3)處理新鮮事最后,調(diào)用weibo. getHomeTimelineO,獲得用戶微博中原本顯示在首頁(yè)的微博狀態(tài),作為微博服務(wù)的新鮮事顯示在用戶客戶端的主頁(yè)上。使用特殊的服務(wù)命令作為新鮮事的服務(wù)命令,這是因?yàn)?,用戶在點(diǎn)擊他人的微博狀態(tài)后,系統(tǒng)需要將這條微博狀態(tài)復(fù)制為話題后才能回復(fù),這個(gè)任務(wù)客戶端無法完成,所以返回服務(wù)插件完成后,再移交Web接口服務(wù)器處理。微博還具有轉(zhuǎn)發(fā)微博的主要功能,我們針對(duì)微博增加了額外特殊服務(wù)命令,交由服務(wù)器處理并在用戶的微博服務(wù)中進(jìn)行轉(zhuǎn)發(fā)。
12、添加聯(lián)系人直接使用 weibo. createFriendship(Address)添加服務(wù)聯(lián)系人。13、刪除聯(lián)系人直接使用weibo. destroyFriendship (Address)刪除服務(wù)聯(lián)系人。14、判斷地址是否可以發(fā)送這里狀況過于復(fù)雜,直接返回“是”。15、獲取新鮮事直接返回“重新加載”步驟里生成的新鮮事。16、執(zhí)行服務(wù)命令新鮮事使用了需要服務(wù)插件處理后才能繼續(xù)的服務(wù)命令。在這里,服務(wù)插件需要把用戶點(diǎn)擊的微博內(nèi)容作為話題復(fù)制后,再讓用戶對(duì)其進(jìn)行回復(fù)。執(zhí)行服務(wù)命令將處理這個(gè)過程。完成后,將返回話題的帖子編號(hào),以便客戶端讓用戶對(duì)其進(jìn)行回復(fù)。綜上所述,本發(fā)明提出的基于云計(jì)算架構(gòu)的網(wǎng)絡(luò)服務(wù)聚合系統(tǒng)及其聚合方法,將所有通信軟件和網(wǎng)絡(luò)服務(wù)整合在一起,開發(fā)一種無縫交流的平臺(tái),發(fā)明基于云計(jì)算架構(gòu)的網(wǎng)絡(luò)服務(wù)聚合系統(tǒng),建立了能夠支持各類網(wǎng)絡(luò)服務(wù),讓處于不同平臺(tái)的各個(gè)用戶進(jìn)行無障礙交流的環(huán)境。本發(fā)明面向“人”,以人作為通訊的基礎(chǔ)單位,采用用戶聯(lián)系人列表,能讓處在不同通訊場(chǎng)合(使用不同的網(wǎng)絡(luò)服務(wù)、不同的通訊設(shè)備)的多個(gè)聯(lián)系人互通、交流與辦公,能及時(shí)反饋眾聯(lián)系人的狀態(tài)和特性,具有可靠的消息收發(fā)機(jī)制和高效的消息管理方式。對(duì)所有用戶而言,無論用戶身在何處,無論用戶或者用戶的聯(lián)系對(duì)象喜歡或擅長(zhǎng)使用何種網(wǎng)絡(luò)服務(wù),也無論用戶對(duì)如何使用自己的網(wǎng)絡(luò)服務(wù)是否熟悉,只要用戶雙方的網(wǎng)絡(luò)服務(wù)有交集,用戶都能利用本發(fā)明便捷地與對(duì)方進(jìn)行順暢的交流;即使對(duì)方不在線,也能將此消息保存到數(shù)據(jù)庫(kù),被聯(lián)系人在下次上線的時(shí)候會(huì)收到消息。本用戶通過新鮮事功能保留了各類服務(wù)原有的基本特性,因此用戶無需再登入自己的網(wǎng)絡(luò)服務(wù),用戶通過一個(gè)平臺(tái)就能實(shí)現(xiàn)操控自己所擁有的社交網(wǎng)絡(luò)服務(wù)的愿望。而且本系統(tǒng)的設(shè)計(jì)為今后功能的拓展夯實(shí)了良好的基礎(chǔ),對(duì)目前流行甚至是未來可能出現(xiàn)的網(wǎng)絡(luò)服務(wù)類型都能兼收并蓄和融通,能方便地為其他通信設(shè)備開發(fā)客戶端。本軟件可應(yīng)用到廣泛的社會(huì)活動(dòng)中去,可產(chǎn)生良好的社會(huì)效益,具有無限的市場(chǎng)開發(fā)前景。這里本發(fā)明的描述和應(yīng)用是說明性的,并非想將本發(fā)明的范圍限制在上述實(shí)施例中。這里所披露的實(shí)施例的變形和改變是可能的,對(duì)于那些本領(lǐng)域的普通技術(shù)人員來說實(shí)施例的替換和等效的各種部件是公知的。本領(lǐng)域技術(shù)人員應(yīng)該清楚的是,在不脫離本發(fā)明的精神或本質(zhì)特征的情況下,本發(fā)明可以以其它形式、結(jié)構(gòu)、布置、比例,以及用其它組件、 材料和部件來實(shí)現(xiàn)。在不脫離本發(fā)明范圍和精神的情況下,可以對(duì)這里所披露的實(shí)施例進(jìn)行其它變形和改變。
權(quán)利要求
1.一種基于云計(jì)算架構(gòu)的網(wǎng)絡(luò)服務(wù)聚合系統(tǒng),其特征在于,所述系統(tǒng)包括 客戶端;Web接口服務(wù)器,用以給客戶端提供信息,并且處理和消息無關(guān)的數(shù)據(jù);在用戶登入時(shí),向任務(wù)調(diào)度服務(wù)器索取相對(duì)空閑的消息處理服務(wù)器地址,操控和監(jiān)視消息處理服務(wù)器, 并即時(shí)將狀況反饋給客戶端;任務(wù)調(diào)度服務(wù)器,負(fù)責(zé)監(jiān)視消息處理服務(wù)器的資源消耗狀態(tài),并在Web接口服務(wù)器為登入用戶索取相對(duì)空閑的消息處理服務(wù)器地址時(shí)返回,讓W(xué)eb接口服務(wù)器自行調(diào)用;在運(yùn)行后,任務(wù)調(diào)度服務(wù)器定時(shí)對(duì)消息處理服務(wù)器更新資源使用情況;消息處理服務(wù)器,通過Web接口服務(wù)器與客戶端連接,用戶的網(wǎng)絡(luò)服務(wù)在消息處理服務(wù)器進(jìn)行登入、登出、狀態(tài)管理、消息收發(fā)處理;消息處理服務(wù)器啟動(dòng)后自動(dòng)向任務(wù)調(diào)度服務(wù)器注冊(cè),讓任務(wù)調(diào)度服務(wù)器能監(jiān)視其狀態(tài),同時(shí)等待Web接口服務(wù)器的調(diào)用;發(fā)生需要提醒用戶的情況時(shí),消息處理服務(wù)器會(huì)推送到Web接口服務(wù)器處理;數(shù)據(jù)庫(kù)服務(wù)器,同時(shí)被Web接口服務(wù)器和消息處理服務(wù)器調(diào)用來記錄各類信息。
2.根據(jù)權(quán)利要求1所述的基于云計(jì)算架構(gòu)的網(wǎng)絡(luò)服務(wù)聚合系統(tǒng),其特征在于設(shè)置于客戶端和消息處理服務(wù)器之間的Web接口服務(wù)器主要負(fù)責(zé)用戶登入、分配服務(wù)器資源,將客戶端的命令傳給消息處理服務(wù)器,再將消息處理服務(wù)器的命令反饋給客戶端, 同時(shí)處理一些不需要消息處理服務(wù)器介入的事務(wù);加載過程中除了加載容器所必要的組件外,Web接口服務(wù)器還要加載配置文件,讀取任務(wù)調(diào)度服務(wù)器的相關(guān)信息,與任務(wù)調(diào)度服務(wù)器建立連接,獲取消息處理服務(wù)器集群的信息, 再加載可被消息處理服務(wù)器集群支持的網(wǎng)絡(luò)服務(wù)列表,以便在用戶需要的時(shí)候及時(shí)反饋給用戶;用戶需要登入后才能管理設(shè)定信息;用戶登入后,服務(wù)器將相互處理一系列用戶信息, 讀取用戶服務(wù)列表,從任務(wù)調(diào)度服務(wù)器獲得合適的消息處理服務(wù)器地址,使用獲取到的服務(wù)器登入用戶的服務(wù),加載聯(lián)系人列表,并監(jiān)聽從消息處理服務(wù)器反饋的信息;用戶自行輸入用戶名和密碼以登入,用戶名和密碼在用戶上次登入后就已經(jīng)保存在客戶端里;對(duì)此,在登入前,每次接收連接時(shí),都要檢查是否包含了有效的用戶登入信息,如果有效就自動(dòng)登入;用戶登入后,服務(wù)器將新建線程,進(jìn)行登入后的操作;即用戶在登入和進(jìn)入自己的個(gè)人主頁(yè)之時(shí),服務(wù)器只檢查用戶名和密碼的合法性;新建的線程完成以下六個(gè)步驟(1)從數(shù)據(jù)庫(kù)服務(wù)器讀取用戶的聯(lián)系人列表;(2)從數(shù)據(jù)庫(kù)服務(wù)器讀取用戶的服務(wù)列表;(3)向任務(wù)調(diào)度服務(wù)器索取當(dāng)前用戶將要使用的消息處理服務(wù)器地址;(4)連接獲取的消息處理服務(wù)器地址;(5)將獲取的服務(wù)列表發(fā)送給消息處理服務(wù)器,讓消息處理服務(wù)器登入這些服務(wù);(6)監(jiān)聽來自消息處理服務(wù)器的回推;完成上述六個(gè)步驟后,服務(wù)列表、聯(lián)系人列表連接后的消息處理服務(wù)器接口都將保存在Web接口服務(wù)器的一個(gè)處理用戶系統(tǒng)信息的內(nèi)存單元內(nèi);用戶在登入后會(huì)產(chǎn)生大量信息,為每個(gè)用戶專門分配內(nèi)存單元,以便于管理;用戶在登入后,Web接口服務(wù)器將監(jiān)聽來自消息處理服務(wù)器的回推;回推的主要內(nèi)容是消息處理服務(wù)器收到新的用戶消息、用戶的服務(wù)狀態(tài)變更;Web消息處理服務(wù)器在接收到消息處理服務(wù)器的回推后,將進(jìn)行處理,如果需要,打斷和客戶端更新狀態(tài)的長(zhǎng)連接,把更新的消息在一個(gè)請(qǐng)求中返回給客戶端;兩種情況會(huì)使用戶登出;一種是用戶主動(dòng)登出,客戶端會(huì)按照用戶的意愿聯(lián)系Web接口服務(wù)器登出用戶;另一種是用戶長(zhǎng)時(shí)間沒有進(jìn)行長(zhǎng)連接;在用戶登出后,Web接口服務(wù)器將通知消息處理服務(wù)器和任務(wù)調(diào)度服務(wù)器銷毀與用戶有關(guān)的資源,同時(shí)銷毀Web接口服務(wù)器和用戶有關(guān)的資源;其中和此用戶有關(guān)的回推將不被監(jiān)聽。
3.根據(jù)權(quán)利要求2所述的基于云計(jì)算架構(gòu)的網(wǎng)絡(luò)服務(wù)聚合系統(tǒng),其特征在于所述Web接口服務(wù)器負(fù)責(zé)管理被用戶所要求管理的用戶信息;(1)管理聯(lián)系人列表用戶管理自己的聯(lián)系人列表,除了添加和刪除聯(lián)系人以外,還可對(duì)聯(lián)系人的聯(lián)系方式進(jìn)行排序;用戶在管理聯(lián)系人列表的時(shí)候,Web接口服務(wù)器還會(huì)和信息處理服務(wù)器進(jìn)行交互;保證聯(lián)系人列表和用戶服務(wù)的聯(lián)系人列表同步;(2)管理服務(wù)列表用戶需要添加自己所使用的網(wǎng)絡(luò)服務(wù)才能讓系統(tǒng)發(fā)揮效用;用戶添加和刪除網(wǎng)絡(luò)服務(wù)、添加網(wǎng)絡(luò)服務(wù)時(shí),Web接口服務(wù)器會(huì)通知消息處理服務(wù)器嘗試以用戶提供的信息登入; 如果登入成功,就將用戶提供的信息保存到數(shù)據(jù)庫(kù),以便下次用戶使用,用戶需要提供自己的帳號(hào)和密碼信息;(3)管理帳號(hào)用戶在此管理自己在注冊(cè)的時(shí)候提供的信息,除了用戶名以外,其他任何信息都可修改,包括密碼和名字;(4)查詢?cè)掝}用戶需要分類檢索自己的話題;在系統(tǒng)中,話題被分為我的話題、加入的話題和我回復(fù)的話題;用戶在知道自己檢索的目的時(shí),可方便地從中尋找并查看話題;由于查詢到的話題可能數(shù)量非常多,Web接口服務(wù)器支持分頁(yè)查詢,按照時(shí)間的先后順序排列,新的信息排列在前面;(5)查詢帖子內(nèi)容通過Web接口服務(wù)器可直接查詢數(shù)據(jù)庫(kù)中的帖子,列出話題并列出話題的回復(fù)與回復(fù)的回復(fù);帖子的內(nèi)容即為用戶和其聯(lián)系人交流的內(nèi)容;在提供父級(jí)帖子編號(hào)和根帖子編號(hào)的情況下,客戶端非常容易地組合成樹形結(jié)構(gòu)并呈現(xiàn)給用戶;(6)發(fā)布話題與回復(fù)Web接口服務(wù)器接收在客戶端用戶的要求下發(fā)布話題或者回復(fù);用戶需要提供帖子的相關(guān)信息,Web接口服務(wù)器不直接處理這些信息,而是轉(zhuǎn)發(fā)到用戶的消息處理服務(wù)器,讓消息處理服務(wù)器進(jìn)行寫數(shù)據(jù)庫(kù)和消息發(fā)送的工作;(7)將狀態(tài)推送到客戶端系統(tǒng)在一次長(zhǎng)連接中推送多條信息給客戶端,一次推送同時(shí)包含用戶在線狀態(tài)和服務(wù)狀態(tài)、是否有新的消息;Web接口服務(wù)器在收到消息處理服務(wù)器的推送后,會(huì)將其緩存在用戶內(nèi)存單元的一個(gè)變量中,在Web接口服務(wù)器的長(zhǎng)連接的循環(huán)中,一旦監(jiān)測(cè)到變量變化,就會(huì)打斷并返回給客戶端;因?yàn)橛脩艨赡茉诓煌胤降侨?,?huì)擁有多個(gè)kssion ID,所以,在推送前需要給每個(gè)不同ksssion ID保留一個(gè)副本,將推送消息發(fā)送到用戶所有的客戶端上;(8)服務(wù)新鮮事將用戶服務(wù)中帶有社交網(wǎng)站元素的信息搬到客戶端通常是主頁(yè)的位置,讓用戶知道自己的聯(lián)系人或者此服務(wù)的其他人在做什么而主動(dòng)進(jìn)行交流;這些信息由消息處理服務(wù)器定時(shí)從用戶登入的服務(wù)中獲取,Web接口服務(wù)器再定時(shí)從消息處理服務(wù)器獲取并放入用戶內(nèi)存單元中;這些信息是由消息處理服務(wù)器的服務(wù)插件生成,包含狀態(tài)標(biāo)題、內(nèi)容、聯(lián)系人和反饋方式;反饋方式的作用是告訴客戶端用戶在點(diǎn)擊這條狀態(tài)后該如反饋;反饋方式包括①直接給狀態(tài)的聯(lián)系人產(chǎn)生新話題;②復(fù)制狀態(tài)內(nèi)容作為新話題,再對(duì)其進(jìn)行回帖;③將聯(lián)系人和狀態(tài)標(biāo)題及內(nèi)容返回給Web接口服務(wù)器,再轉(zhuǎn)發(fā)消息處理服務(wù)器,由消息處理服務(wù)器的服務(wù)插件處理行為。
4.根據(jù)權(quán)利要求1所述的基于云計(jì)算架構(gòu)的網(wǎng)絡(luò)服務(wù)聚合系統(tǒng),其特征在于消息處理服務(wù)器是處理系統(tǒng)用戶消息的主要部分,是真正實(shí)現(xiàn)消息收發(fā)的部分;Web 接口服務(wù)器調(diào)用指定的消息處理服務(wù)器,消息處理服務(wù)器會(huì)將任務(wù)進(jìn)行處理,調(diào)用服務(wù)插件,讓服務(wù)插件實(shí)現(xiàn)消息最后的接收、發(fā)送功能;服務(wù)插件啟動(dòng)后,從配置文件讀取任務(wù)調(diào)度服務(wù)器地址,建立和數(shù)據(jù)庫(kù)的連接,并加載加RMI服務(wù)到注冊(cè)表;一開始啟動(dòng)時(shí),只加載通用RMI服務(wù);然后將此服務(wù)器在任務(wù)調(diào)度服務(wù)器上進(jìn)行注冊(cè);結(jié)束后根據(jù)配置文件中插件的信息加載服務(wù)插件;動(dòng)態(tài)加載插件文件來實(shí)現(xiàn)插件的特性;插件都按照設(shè)定的接口和模式進(jìn)行設(shè)計(jì);插件加載模塊在加載之前讀取配置文件,配置文件包含了插件的系統(tǒng)名稱、類名稱、是否依賴聯(lián)系人列表發(fā)送消息、默認(rèn)優(yōu)先級(jí)、插件所依賴的文件和登入服務(wù)時(shí)所需要提供的信息模版; 插件系統(tǒng)名稱可在系統(tǒng)內(nèi)部識(shí)別此服務(wù),是否依賴聯(lián)系人決定了能否在聯(lián)系人不在聯(lián)系列表的情況下也能通過地址發(fā)送消息,默認(rèn)優(yōu)先級(jí)決定了用戶在添加此服務(wù)作為聯(lián)系人的聯(lián)系方式的時(shí)候所賦予的優(yōu)先級(jí),插件依賴的文件就是插件運(yùn)行所需要的其他文件;在加載插件的時(shí)候,依賴文件將和插件文件一起加載到消息處理服務(wù)器中;由于Web接口服務(wù)器需要通過任務(wù)調(diào)度服務(wù)器來為用戶分配消息處理服務(wù)器的分布式服務(wù)器資源,而且為了使整個(gè)分布式網(wǎng)絡(luò)更加靈活,每臺(tái)消息處理服務(wù)器上線后都要自動(dòng)向任務(wù)調(diào)度服務(wù)器注冊(cè),使任務(wù)調(diào)度服務(wù)器知道消息處理服務(wù)器的存在,以便在Web接口服務(wù)器索取用戶資源時(shí)將自己的資源給Web接口服務(wù)器使用。
5.根據(jù)權(quán)利要求4所述的基于云計(jì)算架構(gòu)的網(wǎng)絡(luò)服務(wù)聚合系統(tǒng),其特征在于整個(gè)消息處理服務(wù)器提供通用RMI服務(wù);Web消息服務(wù)器可從通用RMI服務(wù)獲取可用服務(wù)列表、生成用戶RMI服務(wù);任務(wù)調(diào)度服務(wù)器從通用RMI獲取此消息處理服務(wù)器的硬件資源消耗情況;因?yàn)椴煌挠脩艨赡芊稚⒃诓煌?wù)器里,消息處理服務(wù)器之間在需要通訊時(shí)互相通訊;可用服務(wù)列表由加載的配置文件而來,消息處理服務(wù)器直接將可用服務(wù)列表返回至詢問的Web接口服務(wù)器,讓W(xué)eb接口服務(wù)器自行處理;Web接口服務(wù)器被指令用戶登入后,消息處理服務(wù)器會(huì)被要求為用戶生成一個(gè)用戶專有的RMI遠(yuǎn)程對(duì)象;消息處理服務(wù)器將此對(duì)象的RMI地址返回Web接口服務(wù)器,讓W(xué)eb接口服務(wù)器自行連接剛才生成的RMI遠(yuǎn)程對(duì)象;連接該用戶的遠(yuǎn)程對(duì)象后Web接口服務(wù)器即可控制用戶的服務(wù)資源;任務(wù)調(diào)度服務(wù)器根據(jù)信息處理服務(wù)器的資源消耗情況分配用戶資源的方式;任務(wù)調(diào)度服務(wù)器每隔一段時(shí)間更新消息處理服務(wù)器的硬件資源使用狀況;提供給任務(wù)調(diào)度服務(wù)器的是一個(gè)性能指數(shù),此信息從系統(tǒng)獲?。划?dāng)系統(tǒng)在發(fā)帖的時(shí)候發(fā)現(xiàn)聯(lián)系人有其他用戶,就在用戶內(nèi)存單元尋找本機(jī)是否存在此用戶,存在就說明用戶和聯(lián)系人中的用戶在同一臺(tái)服務(wù)器,可以直接以相應(yīng)回推,不存在就要詢問任務(wù)調(diào)度服務(wù)器此用戶的消息處理服務(wù)器,將回推的消息轉(zhuǎn)發(fā)到聯(lián)系人用戶的消息處理服務(wù)器,被轉(zhuǎn)發(fā)的消息的服務(wù)器將按照不同流程將消息回推到Web接口服務(wù)器;如果在任務(wù)調(diào)度服務(wù)器找不到,將把這個(gè)帖子放入延遲發(fā)送的數(shù)據(jù)表中,在下次合適的時(shí)候發(fā)送;用戶在登入以后,Web接口服務(wù)器就會(huì)從被指定的消息處理服務(wù)器中獲得用戶RMI ;所有和該用戶有關(guān)的遠(yuǎn)程調(diào)用都通過這個(gè)接口實(shí)現(xiàn);包括如下步驟1)指定此用戶RMI的所有人;該過程由Web接口服務(wù)器調(diào)用,檢查消息處理服務(wù)器是否已經(jīng)存在關(guān)于此用戶的用戶內(nèi)存單元;如果有,就使用已經(jīng)存在的資源,如果沒有,就為該用戶創(chuàng)建資源;同時(shí)開啟定時(shí)器定時(shí)從用戶服務(wù)更新新鮮事,并且記錄此Web接口服務(wù)器;2)測(cè)試服務(wù);該函數(shù)只有在用戶嘗試添加新服務(wù)或者修改服務(wù)時(shí)由Web接口服務(wù)器調(diào)用,確認(rèn)用戶提供的信息是否能登入;這個(gè)函數(shù)將返回一個(gè)值,所以不是異步的,用戶則需要等待此服務(wù)登入成功或者失?。?)測(cè)試服務(wù)是否可通過用戶提供的信息登入Web接口服務(wù)器會(huì)把用戶的服務(wù)和服務(wù)登入信息發(fā)送給用戶的消息處理服務(wù)器;消息處理服務(wù)器將在加載好的服務(wù)插件上創(chuàng)建服務(wù)實(shí)例,每個(gè)用戶的每個(gè)服務(wù)都有這樣一個(gè)實(shí)例,根據(jù)不同的服務(wù)和帳號(hào)而實(shí)例不相同;加載完畢后,消息處理服務(wù)器會(huì)讓每個(gè)加載好的服務(wù)插件實(shí)例登入服務(wù);登入過程由服務(wù)插件對(duì)象控制,返回是否登入結(jié)果到Web接口服務(wù)器;4)加載并登入用戶服務(wù);Web接口服務(wù)器將發(fā)送用戶服務(wù)列表和相關(guān)登入信息給指定的消息處理服務(wù)器列表, 由消息處理服務(wù)器登入服務(wù);Web消息處理服務(wù)器將異步為每個(gè)服務(wù)調(diào)用“測(cè)試服務(wù)是否可通過用戶提供的信息登入”函數(shù),而登入服務(wù)的函數(shù)到此結(jié)束,登入是否成功的消息由服務(wù)插件實(shí)例回推到Web接口服務(wù)器中;5)銷毀;這個(gè)過程是在Web接口服務(wù)器的用戶注銷后所發(fā)生;考慮到用戶在多個(gè)地方登入的可能,必須要在確認(rèn)用戶完全登出后才能銷毀用戶相關(guān)的資源;銷毀資源的過程中,所有服務(wù)將離線,所有定時(shí)器關(guān)閉,最后從內(nèi)存銷毀所有此用戶所使用的資源;6)獲取聯(lián)系人優(yōu)先聯(lián)系服務(wù);獲取聯(lián)系人優(yōu)先聯(lián)系服務(wù)函數(shù)可直接被Web消息處理服務(wù)器調(diào)用、在回推聯(lián)系人可使用服務(wù)和發(fā)帖的時(shí)候調(diào)用;這個(gè)過程中,消息處理服務(wù)器將從聯(lián)系人列表中讀取聯(lián)系人的聯(lián)系方式;按照聯(lián)系方式的優(yōu)先級(jí)在每個(gè)已經(jīng)登入的用戶服務(wù)中判斷聯(lián)系方式是否可用; 將找到的第一個(gè)聯(lián)系方式返回;7)獲取所有服務(wù)在線情況;Web接口服務(wù)器調(diào)用此函數(shù)來獲取目前服務(wù)的在線情況;消息處理服務(wù)器將直接查詢用戶服務(wù)的在線狀態(tài)并返回;8)廣播用戶狀態(tài);一些服務(wù)具有廣播用戶狀態(tài)的特性;廣播用戶狀態(tài)函數(shù)由Web接口服務(wù)器調(diào)用,消息處理服務(wù)器將為用戶所有服務(wù)都設(shè)定狀態(tài);如果用戶的某些服務(wù)不支持,狀態(tài)廣播的行為將不被處理;或者通過用戶狀態(tài)實(shí)現(xiàn)分享之類廣播的特性;9)獲取用戶狀態(tài);獲取用戶狀態(tài)函數(shù)是由Web接口服務(wù)器調(diào)用;通常用戶狀態(tài)不保存在數(shù)據(jù)庫(kù)中,而是直接從用戶服務(wù)讀取;消息處理服務(wù)器只讀取第一個(gè)有狀態(tài)的服務(wù)的狀態(tài)發(fā)送返回給Web 接口服務(wù)器;10)獲取用戶服務(wù)新鮮事;服務(wù)新鮮事由Web接口服務(wù)器獲??;Web接口服務(wù)器獲取的時(shí)候,用戶新鮮事已經(jīng)收集好并放在一個(gè)變量中;收集工作由新鮮事獲取定時(shí)器完成;新鮮事獲取定時(shí)器以固定的頻率將用戶服務(wù)的新鮮事放入變量中,等待Web接口服務(wù)器獲??;11)發(fā)帖;作為整個(gè)系統(tǒng)的核心之一,發(fā)帖被消息處理服務(wù)器內(nèi)部調(diào)用,或者被Web接口服務(wù)器調(diào)用;發(fā)帖的執(zhí)行方是用戶,或者是用戶的服務(wù)中收到的消息;發(fā)帖需要提供數(shù)據(jù)庫(kù)表的所有信息,作為話題帖子,還需要提供話題的聯(lián)系人列表;發(fā)帖步驟進(jìn)一步包括如下步驟IIA)檢查唯一編號(hào)是否已經(jīng)在數(shù)據(jù)庫(kù)存在;如果不存在進(jìn)行下一步,如果存在直接退出發(fā)帖步驟;IIB)將信息格式化;IIC)如果為話題帖子,檢查是否缺少用戶為其中之一的聯(lián)系人,如果是,將其補(bǔ)上;IID)檢查聯(lián)系人列表的聯(lián)系人和作者;一些情況下,用戶或者聯(lián)系人會(huì)直接使用服務(wù)的地址作為聯(lián)系人字符串,而這個(gè)地址剛好是某個(gè)聯(lián)系人的聯(lián)系方式;這個(gè)過程將把使用服務(wù)地址聯(lián)系人字符串改變?yōu)橛脩舻穆?lián)系人的聯(lián)系人字符串;當(dāng)用戶的聯(lián)系人發(fā)帖時(shí)將地址轉(zhuǎn)換成聯(lián)系人,讓用戶能直接識(shí)別;IIE)將帖子插入數(shù)據(jù)庫(kù);IIF)如果這個(gè)帖子為回復(fù),更新父帖和根帖的數(shù)據(jù)庫(kù)紀(jì)錄中“回復(fù)人”和“最后回復(fù)時(shí)間”字段;IIG)讀取已經(jīng)插入數(shù)據(jù)庫(kù)的帖子的編號(hào);IIH)如果為話題帖子,將帖子聯(lián)系人列表插入帖子聯(lián)系人表;IlD如果是回復(fù),獲取根帖的編號(hào);如果是話題帖子,根帖編號(hào)為已經(jīng)插入數(shù)據(jù)庫(kù)的帖子的編號(hào);11J)通過獲取的根帖子的編號(hào)從數(shù)據(jù)庫(kù)獲取根帖子的聯(lián)系人列表;11K)根據(jù)讀取的帖子聯(lián)系人列表,將消息轉(zhuǎn)發(fā)給聯(lián)系人;12)轉(zhuǎn)發(fā)消息;轉(zhuǎn)發(fā)消息函數(shù)不被Web接口服務(wù)器調(diào)用,是發(fā)帖時(shí)用來為指定聯(lián)系人或用戶轉(zhuǎn)發(fā)消息時(shí)使用;轉(zhuǎn)發(fā)消息需要作為遠(yuǎn)程方法調(diào)用來執(zhí)行;轉(zhuǎn)發(fā)消息過程具體進(jìn)一步包括如下步驟12A)檢查轉(zhuǎn)發(fā)的聯(lián)系人和作者是否為同一人,如果是,此消息將不被轉(zhuǎn)發(fā)到這個(gè)聯(lián)系人;12B)檢查轉(zhuǎn)發(fā)的聯(lián)系人是否為系統(tǒng)的另一個(gè)用戶,并且此用戶不在本地的消息處理服務(wù)器中;如果是,將從任務(wù)調(diào)度服務(wù)器讀取此用戶位置,并把此消息轉(zhuǎn)發(fā)到用戶位置進(jìn)行處理;整個(gè)本服務(wù)器的轉(zhuǎn)發(fā)過程結(jié)束;12C)檢查轉(zhuǎn)發(fā)消息的聯(lián)系人字符串的格式;12D)如果為用戶聯(lián)系人字符串,將通過獲取聯(lián)系人優(yōu)先聯(lián)系服務(wù)方法獲取最合適用戶聯(lián)系人聯(lián)系方式,通過這個(gè)聯(lián)系方式所對(duì)應(yīng)的服務(wù)插件實(shí)例發(fā)送消息; 12E)如果為用戶的某個(gè)服務(wù)插件的實(shí)例地址,直接通過這個(gè)實(shí)例發(fā)送; 12F)如果為系統(tǒng)用戶,將消息回推到用戶的Web接口服務(wù)器; 上述整個(gè)過程是否成功將被監(jiān)視,如果不成功,這個(gè)消息將保存到數(shù)據(jù)庫(kù),在下次合適的時(shí)候發(fā)送;13)執(zhí)行服務(wù)命令;命令由服務(wù)插件實(shí)例在服務(wù)新鮮事的時(shí)候生成,由服務(wù)插件實(shí)例識(shí)別并執(zhí)行相關(guān)操作。
6.根據(jù)權(quán)利要求1所述的基于云計(jì)算架構(gòu)的網(wǎng)絡(luò)服務(wù)聚合系統(tǒng),其特征在于 任務(wù)調(diào)度服務(wù)器用以為用戶分配消息處理服務(wù)器資源,同時(shí)索引用戶消息處理服務(wù)器;任務(wù)處理服務(wù)器啟動(dòng)時(shí)注冊(cè)自己的冊(cè)1,就等待其他服務(wù)器的連接;消息處理服務(wù)器的注冊(cè)過程將把此消息處理服務(wù)器的IP地址紀(jì)錄在案,并且打開一個(gè)定時(shí)器定期從消息處理服務(wù)器獲取性能指數(shù),找出資源剩余最大的服務(wù)器并記錄;期間將為每個(gè)服務(wù)器打開定時(shí)器檢測(cè)消息處理服務(wù)器是否離線來更新消息處理服務(wù)器列表;每次Web接口服務(wù)器獲取用戶消息處理服務(wù)器的時(shí)候,任務(wù)調(diào)度服務(wù)器將記錄的消息處理服務(wù)器返回;服務(wù)插件是用戶服務(wù)收發(fā)的最終端,運(yùn)行于消息處理服務(wù)器中;服務(wù)插件所提供的服務(wù)是任何具有消息交流特性的互聯(lián)網(wǎng)服務(wù),但是每個(gè)服務(wù)插件都要按照特定的接口編寫, 以便消息處理服務(wù)器支持;服務(wù)插件接口的函數(shù)包括加載函數(shù);登入函數(shù);登出函數(shù);發(fā)送消息函數(shù);獲取服務(wù)在線情況函數(shù);獲得用戶狀態(tài)函數(shù);廣播用戶狀態(tài)函數(shù);搜索函數(shù); 重新加載函數(shù);此函數(shù)為消息處理服務(wù)器為每個(gè)插件實(shí)例的一個(gè)定時(shí)器調(diào)用,提醒其更新自己的狀態(tài);添加聯(lián)系人函數(shù),與用戶聯(lián)系人列表中的聯(lián)系方式綁定;刪除聯(lián)系人函數(shù),與用戶聯(lián)系人列表中的聯(lián)系方式綁定;判斷地址是否可以發(fā)送函數(shù),消息處理服務(wù)器據(jù)此判斷是否通過此聯(lián)系方式轉(zhuǎn)發(fā)用戶消息;獲取新鮮事函數(shù);執(zhí)行服務(wù)命令函數(shù);雖然每個(gè)服務(wù)并不相同,但是針對(duì)同一類型的服務(wù)使用同一套處理方式;服務(wù)插件可自主搭配使用任何消息處理服務(wù)的函數(shù)來實(shí)現(xiàn)具有服務(wù)特色的插件;服務(wù)插件可自主處理服務(wù)命令,使得讓新鮮事的功能變得更加靈活,服務(wù)插件自己訂制新鮮事的指令,讓用戶選擇后還將自行處理這些指令;服務(wù)插件在接收到服務(wù)消息后,將其托管到消息處理服務(wù)器中處理消息;使用的方法和用戶發(fā)帖時(shí)Web接口服務(wù)器所調(diào)用的是同一個(gè)函數(shù);當(dāng)服務(wù)插件以話題形式發(fā)布話題時(shí),聯(lián)系人則是接收此消息的系統(tǒng)用戶;
7.根據(jù)權(quán)利要求1所述的基于云計(jì)算架構(gòu)的網(wǎng)絡(luò)服務(wù)聚合系統(tǒng),其特征在于 所述聚合系統(tǒng)包括保留服務(wù)基本特性的模塊,包括獲得用戶狀態(tài)單元,由Web接口服務(wù)器調(diào)用,通常用戶狀態(tài)不保存在數(shù)據(jù)庫(kù)中,而是直接從用戶服務(wù)讀?。幌⑻幚矸?wù)器只讀取第一個(gè)有狀態(tài)的服務(wù)的狀態(tài)發(fā)送返回給Web接口服務(wù)器;廣播用戶狀態(tài)單元,一些服務(wù)具有顯示用戶狀態(tài)的特性;所述廣播用戶狀態(tài)單元由 Web接口服務(wù)器調(diào)用,消息處理服務(wù)器將為用戶所有服務(wù)都設(shè)定狀態(tài);如果用戶的某些服務(wù)不支持,狀態(tài)設(shè)定的行為將不被處理;搜索單元,對(duì)于具有或者需要搜索特性才能完全操控的網(wǎng)絡(luò)服務(wù),使用所述搜索單元對(duì)服務(wù)進(jìn)行搜索;搜索過程和結(jié)果由服務(wù)插件實(shí)例完成和生成,對(duì)于用戶對(duì)結(jié)果的響應(yīng)由服務(wù)插件實(shí)例識(shí)別并執(zhí)行相關(guān)操作;新鮮事獲取定時(shí)器,服務(wù)新鮮事由Web接口服務(wù)器獲??;Web接口服務(wù)器獲取服務(wù)新鮮事時(shí),用戶新鮮事已經(jīng)收集好并放在一個(gè)變量中;收集工作由新鮮事獲取定時(shí)器完成,新鮮事獲取定時(shí)器獲取設(shè)定的頻率將用戶服務(wù)的新鮮事放入變量中,等待Web接口服務(wù)器獲??;執(zhí)行服務(wù)命令單元,執(zhí)行服務(wù)命令由服務(wù)插件實(shí)例在服務(wù)新鮮事的時(shí)候生成,由服務(wù)插件實(shí)例識(shí)別并執(zhí)行相關(guān)操作。
8.—種權(quán)利要求1所述基于云計(jì)算架構(gòu)的網(wǎng)絡(luò)服務(wù)聚合系統(tǒng)的聚合方法,其特征在于,所述聚合方法包括如下步驟客戶端按照運(yùn)行的設(shè)備和Web接口進(jìn)行通訊;Web接口服務(wù)器給客戶端提供信息,并且處理和消息無關(guān)的數(shù)據(jù);在用戶登入時(shí),向任務(wù)調(diào)度服務(wù)器索取相對(duì)空閑的消息處理服務(wù)器地址,操控和監(jiān)視消息處理服務(wù)器,并即時(shí)將狀況反饋給客戶端;任務(wù)調(diào)度服務(wù)器負(fù)責(zé)監(jiān)視消息處理服務(wù)器的資源消耗狀態(tài),并在Web接口服務(wù)器為登入用戶索取相對(duì)空閑的消息處理服務(wù)器地址時(shí)返回,讓W(xué)eb接口服務(wù)器自行調(diào)用;在運(yùn)行后,任務(wù)調(diào)度服務(wù)器定時(shí)對(duì)消息處理服務(wù)器更新資源使用情況;消息處理服務(wù)器通過Web接口服務(wù)器與客戶端連接,用戶的網(wǎng)絡(luò)服務(wù)在消息處理服務(wù)器進(jìn)行登入、登出、狀態(tài)管理、消息收發(fā)處理;消息處理服務(wù)器啟動(dòng)后自動(dòng)向任務(wù)調(diào)度服務(wù)器注冊(cè),讓任務(wù)調(diào)度服務(wù)器能監(jiān)視其狀態(tài),同時(shí)等待Web接口服務(wù)器的調(diào)用;發(fā)生需要提醒用戶的情況時(shí),消息處理服務(wù)器會(huì)推送到Web接口服務(wù)器處理;數(shù)據(jù)庫(kù)服務(wù)器同時(shí)被Web接口服務(wù)器和消息處理服務(wù)器調(diào)用來記錄各類信息。
9.根據(jù)權(quán)利要求8所述的聚合方法,其特征在于設(shè)置于客戶端和消息處理服務(wù)器之間的Web接口服務(wù)器主要負(fù)責(zé)用戶登入、分配服務(wù)器資源,將客戶端的命令傳給消息處理服務(wù)器,再將消息處理服務(wù)器的命令反饋給客戶端, 同時(shí)處理一些不需要消息處理服務(wù)器介入的事務(wù);加載過程中除了加載容器所必要的組件外,Web接口服務(wù)器還要加載配置文件,讀取任務(wù)調(diào)度服務(wù)器的相關(guān)信息,與任務(wù)調(diào)度服務(wù)器建立連接,獲取消息處理服務(wù)器集群的信息, 再加載可被消息處理服務(wù)器集群支持的網(wǎng)絡(luò)服務(wù)列表,以便在用戶需要的時(shí)候及時(shí)反饋給用戶;用戶需要登入后才能管理設(shè)定信息;用戶登入后,服務(wù)器將相互處理一系列用戶信息, 讀取用戶服務(wù)列表,從任務(wù)調(diào)度服務(wù)器獲得合適的消息處理服務(wù)器地址,使用獲取到的服務(wù)器登入用戶的服務(wù),加載聯(lián)系人列表,并監(jiān)聽從消息處理服務(wù)器反饋的信息;用戶自行輸入用戶名和密碼以登入,用戶名和密碼在用戶上次登入后就已經(jīng)保存在客戶端里;對(duì)此,在登入前,每次接收連接時(shí),都要檢查是否包含了有效的用戶登入信息,如果有效就自動(dòng)登入;用戶登入后,服務(wù)器將新建線程,進(jìn)行登入后的操作;即用戶在登入和進(jìn)入自己的個(gè)人主頁(yè)之時(shí),服務(wù)器只檢查用戶名和密碼的合法性;新建的線程完成以下六個(gè)步驟(1)從數(shù)據(jù)庫(kù)服務(wù)器讀取用戶的聯(lián)系人列表;(2)從數(shù)據(jù)庫(kù)服務(wù)器讀取用戶的服務(wù)列表;(3)向任務(wù)調(diào)度服務(wù)器索取當(dāng)前用戶將要使用的消息處理服務(wù)器地址;(4)連接獲取的消息處理服務(wù)器地址;(5)將獲取的服務(wù)列表發(fā)送給消息處理服務(wù)器,讓消息處理服務(wù)器登入這些服務(wù);(6)監(jiān)聽來自消息處理服務(wù)器的回推;完成上述六個(gè)步驟后,服務(wù)列表、聯(lián)系人列表連接后的消息處理服務(wù)器接口都將保存在Web接口服務(wù)器的一個(gè)處理用戶系統(tǒng)信息的內(nèi)存單元內(nèi);用戶在登入后會(huì)產(chǎn)生大量信息,為每個(gè)用戶專門分配內(nèi)存單元,以便于管理;用戶在登入后,Web接口服務(wù)器將監(jiān)聽來自消息處理服務(wù)器的回推;回推的主要內(nèi)容是消息處理服務(wù)器收到新的用戶消息、用戶的服務(wù)狀態(tài)變更;Web消息處理服務(wù)器在接收到消息處理服務(wù)器的回推后,將進(jìn)行處理,如果需要,打斷和客戶端更新狀態(tài)的長(zhǎng)連接,把更新的消息在一個(gè)請(qǐng)求中返回給客戶端;兩種情況會(huì)使用戶登出;一種是用戶主動(dòng)登出,客戶端會(huì)按照用戶的意愿聯(lián)系Web接口服務(wù)器登出用戶;另一種是用戶長(zhǎng)時(shí)間沒有進(jìn)行長(zhǎng)連接;在用戶登出后,Web接口服務(wù)器將通知消息處理服務(wù)器和任務(wù)調(diào)度服務(wù)器銷毀與用戶有關(guān)的資源,同時(shí)銷毀Web接口服務(wù)器和用戶有關(guān)的資源;其中和此用戶有關(guān)的回推將不被監(jiān)聽;所述Web接口服務(wù)器負(fù)責(zé)管理被用戶所要求管理的用戶信息;(1)管理聯(lián)系人列表用戶管理自己的聯(lián)系人列表,除了添加和刪除聯(lián)系人以外,還可對(duì)聯(lián)系人的聯(lián)系方式進(jìn)行排序;用戶在管理聯(lián)系人列表的時(shí)候,Web接口服務(wù)器還會(huì)和信息處理服務(wù)器進(jìn)行交互;保證聯(lián)系人列表和用戶服務(wù)的聯(lián)系人列表同步;(2)管理服務(wù)列表用戶需要添加自己所使用的網(wǎng)絡(luò)服務(wù)才能讓系統(tǒng)發(fā)揮效用;用戶添加和刪除網(wǎng)絡(luò)服務(wù)、添加網(wǎng)絡(luò)服務(wù)時(shí),Web接口服務(wù)器會(huì)通知消息處理服務(wù)器嘗試以用戶提供的信息登入; 如果登入成功,就將用戶提供的信息保存到數(shù)據(jù)庫(kù),以便下次用戶使用,用戶需要提供自己的帳號(hào)和密碼信息;(3)管理帳號(hào)用戶在此管理自己在注冊(cè)的時(shí)候提供的信息,除了用戶名以外,其他任何信息都可修改,包括密碼和名字;(4)查詢?cè)掝}用戶需要分類檢索自己的話題;在系統(tǒng)中,話題被分為我的話題、加入的話題和我回復(fù)的話題;用戶在知道自己檢索的目的時(shí),可方便地從中尋找并查看話題;由于查詢到的話題可能數(shù)量非常多,Web接口服務(wù)器支持分頁(yè)查詢,按照時(shí)間的先后順序排列,新的信息排列在前面;(5)查詢帖子內(nèi)容通過Web接口服務(wù)器可直接查詢數(shù)據(jù)庫(kù)中的帖子,列出話題并列出話題的回復(fù)與回復(fù)的回復(fù);帖子的內(nèi)容即為用戶和其聯(lián)系人交流的內(nèi)容;在提供父級(jí)帖子編號(hào)和根帖子編號(hào)的情況下,客戶端非常容易地組合成樹形結(jié)構(gòu)并呈現(xiàn)給用戶;(6)發(fā)布話題與回復(fù)Web接口服務(wù)器接收在客戶端用戶的要求下發(fā)布話題或者回復(fù);用戶需要提供帖子的相關(guān)信息,Web接口服務(wù)器不直接處理這些信息,而是轉(zhuǎn)發(fā)到用戶的消息處理服務(wù)器,讓消息處理服務(wù)器進(jìn)行寫數(shù)據(jù)庫(kù)和消息發(fā)送的工作;(7)將狀態(tài)推送到客戶端系統(tǒng)在一次長(zhǎng)連接中推送多條信息給客戶端,一次推送同時(shí)包含用戶在線狀態(tài)和服務(wù)狀態(tài)、是否有新的消息;Web接口服務(wù)器在收到消息處理服務(wù)器的推送后,會(huì)將其緩存在用戶內(nèi)存單元的一個(gè)變量中,在Web接口服務(wù)器的長(zhǎng)連接的循環(huán)中,一旦監(jiān)測(cè)到變量變化,就會(huì)打斷并返回給客戶端;因?yàn)橛脩艨赡茉诓煌胤降侨耄瑫?huì)擁有多個(gè)kssion ID,所以,在推送前需要給每個(gè)不同ksssion ID保留一個(gè)副本,將推送消息發(fā)送到用戶所有的客戶端上;(8)服務(wù)新鮮事將用戶服務(wù)中帶有社交網(wǎng)站元素的信息搬到客戶端通常是主頁(yè)的位置,讓用戶知道自己的聯(lián)系人或者此服務(wù)的其他人在做什么而主動(dòng)進(jìn)行交流;這些信息由消息處理服務(wù)器定時(shí)從用戶登入的服務(wù)中獲取,Web接口服務(wù)器再定時(shí)從消息處理服務(wù)器獲取并放入用戶內(nèi)存單元中;這個(gè)特性沒有使用推送機(jī)制,因?yàn)槁?lián)系人狀態(tài)的信息可能變化非???;客戶端需要主動(dòng)向Web接口服務(wù)器索取這些信息;這些信息是由消息處理服務(wù)器的服務(wù)插件生成,包含狀態(tài)標(biāo)題、內(nèi)容、聯(lián)系人和反饋方式;反饋方式的作用是告訴客戶端用戶在點(diǎn)擊這條狀態(tài)后該如反饋;反饋方式包括①直接給狀態(tài)的聯(lián)系人產(chǎn)生新話題;②復(fù)制狀態(tài)內(nèi)容作為新話題,再對(duì)其進(jìn)行回帖;③將聯(lián)系人和狀態(tài)標(biāo)題及內(nèi)容返回給Web接口服務(wù)器,再轉(zhuǎn)發(fā)消息處理服務(wù)器,由消息處理服務(wù)器的服務(wù)插件處理行為。
10.根據(jù)權(quán)利要求8所述的聚合方法,其特征在于消息處理服務(wù)器是處理系統(tǒng)用戶消息的主要部分,是真正實(shí)現(xiàn)消息收發(fā)的部分;Web 接口服務(wù)器調(diào)用指定的消息處理服務(wù)器,消息處理服務(wù)器會(huì)將任務(wù)進(jìn)行處理,調(diào)用服務(wù)插件,讓服務(wù)插件實(shí)現(xiàn)消息最后的接收、發(fā)送功能;服務(wù)插件啟動(dòng)后,從配置文件讀取任務(wù)調(diào)度服務(wù)器地址,建立Hibernate和數(shù)據(jù)庫(kù)的連接,并加載加RMI服務(wù)到注冊(cè)表;一開始啟動(dòng)時(shí),只加載通用RMI服務(wù);然后將此服務(wù)器在任務(wù)調(diào)度服務(wù)器上進(jìn)行注冊(cè);結(jié)束后根據(jù)配置文件中插件的信息加載服務(wù)插件;動(dòng)態(tài)加載插件文件來實(shí)現(xiàn)插件的特性;插件都按照設(shè)定的接口和模式進(jìn)行設(shè)計(jì);插件加載模塊在加載之前讀取配置文件,配置文件包含了插件的系統(tǒng)名稱、類名稱、是否依賴聯(lián)系人列表發(fā)送消息、默認(rèn)優(yōu)先級(jí)、插件的文件所依賴的文件和登入服務(wù)時(shí)所需要提供的信息模版;插件系統(tǒng)名稱可在系統(tǒng)內(nèi)部識(shí)別此服務(wù),是否依賴聯(lián)系人決定了能否在聯(lián)系人不在聯(lián)系列表的情況下也能通過地址發(fā)送消息,默認(rèn)優(yōu)先級(jí)決定了用戶在添加此服務(wù)作為聯(lián)系人的聯(lián)系方式的時(shí)候所賦予的優(yōu)先級(jí),插件依賴文件就是插件運(yùn)行所需要的其他文件; 在加載插件文件的時(shí)候,依賴項(xiàng)將和插件一起加載到消息處理服務(wù)器中;由于Web接口服務(wù)器需要通過任務(wù)調(diào)度服務(wù)器來為用戶分配消息處理服務(wù)器的分布式服務(wù)器資源,而且為了使整個(gè)分布式網(wǎng)絡(luò)更加靈活,每臺(tái)消息處理服務(wù)器上線后都要自動(dòng)向任務(wù)調(diào)度服務(wù)器注冊(cè),使任務(wù)調(diào)度服務(wù)器知道消息處理服務(wù)器的存在,以便在Web接口服務(wù)器索取用戶資源時(shí)將自己的資源給Web接口服務(wù)器使用;整個(gè)消息處理服務(wù)器提供通用RMI服務(wù);Web消息服務(wù)器可從通用RMI服務(wù)獲取可用服務(wù)列表、生成用戶RMI服務(wù);任務(wù)調(diào)度服務(wù)器從通用RMI獲取此消息處理服務(wù)器的硬件資源消耗情況;因?yàn)椴煌挠脩艨赡芊稚⒃诓煌?wù)器里,消息處理服務(wù)器之間在需要通訊時(shí)互相通訊;可用服務(wù)列表由加載的配置文件而來,消息處理服務(wù)器直接將可用服務(wù)列表返回至詢問的Web接口服務(wù)器,讓W(xué)eb接口服務(wù)器自行處理;Web接口服務(wù)器被指令用戶登入后,消息處理服務(wù)器會(huì)被要求為用戶生成一個(gè)用戶專有的RMI遠(yuǎn)程對(duì)象;消息處理服務(wù)器將此對(duì)象的RMI地址返回Web接口服務(wù)器,讓W(xué)eb接口服務(wù)器自行連接剛才生成的RMI遠(yuǎn)程對(duì)象;連接該用戶的遠(yuǎn)程對(duì)象后Web接口服務(wù)器即可控制用戶的服務(wù)資源;任務(wù)調(diào)度服務(wù)器根據(jù)信息處理服務(wù)器的資源消耗情況分配用戶資源的方式;任務(wù)調(diào)度服務(wù)器每隔一段時(shí)間更新消息處理服務(wù)器的硬件資源使用狀況;提供給任務(wù)調(diào)度服務(wù)器的是一個(gè)性能指數(shù),此信息從系統(tǒng)獲??;當(dāng)系統(tǒng)在發(fā)帖的時(shí)候發(fā)現(xiàn)聯(lián)系人有其他用戶,就在用戶內(nèi)存單元尋找本機(jī)是否存在此用戶,存在就說明用戶和聯(lián)系人中的用戶在同一臺(tái)服務(wù)器,可以直接以相應(yīng)回推,不存在就要詢問任務(wù)調(diào)度服務(wù)器此用戶的消息處理服務(wù)器,將回推的消息轉(zhuǎn)發(fā)到聯(lián)系人用戶的消息處理服務(wù)器,被轉(zhuǎn)發(fā)的消息的服務(wù)器將按照不同流程將消息回推到Web接口服務(wù)器;如果在任務(wù)調(diào)度服務(wù)器找不到,將把這個(gè)帖子放入延遲發(fā)送的數(shù)據(jù)表中,在下次合適的時(shí)候發(fā)送;用戶在登入以后,Web接口服務(wù)器就會(huì)從被指定的消息處理服務(wù)器中獲得用戶RMI ;所有和該用戶有關(guān)的遠(yuǎn)程調(diào)用都通過這個(gè)接口實(shí)現(xiàn);包括如下步驟1)指定此用戶RMI的所有人;該過程由Web接口服務(wù)器調(diào)用,檢查消息處理服務(wù)器是否已經(jīng)存在關(guān)于此用戶的用戶內(nèi)存單元;如果有,就使用已經(jīng)存在的資源,如果沒有,就為該用戶創(chuàng)建資源;同時(shí)開啟定時(shí)器定時(shí)從用戶服務(wù)更新新鮮事,并且記錄此Web接口服務(wù)器;2)測(cè)試服務(wù);該函數(shù)只有在用戶嘗試添加新服務(wù)或者修改服務(wù)時(shí)由Web接口服務(wù)器調(diào)用,確認(rèn)用戶提供的信息是否能登入;這個(gè)函數(shù)將返回一個(gè)值,所以不是異步的,用戶則需要等待此服務(wù)登入成功或者失??;3)測(cè)試服務(wù)是否可通過用戶提供的信息登入Web接口服務(wù)器會(huì)把用戶的服務(wù)和服務(wù)登入信息發(fā)送給用戶的消息處理服務(wù)器;消息處理服務(wù)器將在加載好的服務(wù)插件上創(chuàng)建服務(wù)實(shí)例,每個(gè)用戶的每個(gè)服務(wù)都有這樣一個(gè)實(shí)例,根據(jù)不同的服務(wù)和帳號(hào)而實(shí)例不相同;加載完畢后,消息處理服務(wù)器會(huì)讓每個(gè)加載好的服務(wù)插件實(shí)例登入服務(wù);登入過程由服務(wù)插件對(duì)象控制,返回是否登入結(jié)果到Web接口服務(wù)器;4)加載并登入用戶服務(wù);Web接口服務(wù)器將發(fā)送用戶服務(wù)列表和相關(guān)登入信息給指定的消息處理服務(wù)器列表, 由消息處理服務(wù)器登入服務(wù);Web消息處理服務(wù)器將異步為每個(gè)服務(wù)調(diào)用“測(cè)試服務(wù)是否可通過用戶提供的信息登入”函數(shù),而登入服務(wù)的函數(shù)到此結(jié)束,登入是否成功的消息由服務(wù)插件實(shí)例回推到Web接口服務(wù)器中;5)銷毀;這個(gè)過程是在Web接口服務(wù)器的用戶注銷后所發(fā)生;考慮到用戶在多個(gè)地方登入的可能,必須要在確認(rèn)用戶完全登出后才能銷毀用戶相關(guān)的資源;銷毀資源的過程中,所有服務(wù)將離線,所有定時(shí)器關(guān)閉,最后從內(nèi)存銷毀所有此用戶所使用的資源;6)獲取聯(lián)系人優(yōu)先聯(lián)系服務(wù);獲取聯(lián)系人優(yōu)先聯(lián)系服務(wù)函數(shù)可直接被Web消息處理服務(wù)器調(diào)用、在回推聯(lián)系人可使用服務(wù)和發(fā)帖的時(shí)候調(diào)用;這個(gè)過程中,消息處理服務(wù)器將從聯(lián)系人列表中讀取聯(lián)系人的聯(lián)系方式;按照聯(lián)系方式的優(yōu)先級(jí)在每個(gè)已經(jīng)登入的用戶服務(wù)中判斷聯(lián)系方式是否可用; 將找到的第一個(gè)聯(lián)系方式返回;7)獲取所有服務(wù)在線情況;Web接口服務(wù)器調(diào)用此函數(shù)來獲取目前服務(wù)的在線情況;消息處理服務(wù)器將直接查詢用戶服務(wù)的在線狀態(tài)并返回;8)廣播用戶狀態(tài);一些服務(wù)具有廣播用戶狀態(tài)的特性;廣播用戶狀態(tài)函數(shù)由Web接口服務(wù)器調(diào)用,消息處理服務(wù)器將為用戶所有服務(wù)都設(shè)定狀態(tài);如果用戶的某些服務(wù)不支持,狀態(tài)廣播的行為將不被處理;或者通過用戶狀態(tài)實(shí)現(xiàn)分享之類廣播的特性;9)獲取用戶狀態(tài);獲取用戶狀態(tài)函數(shù)是由Web接口服務(wù)器調(diào)用;通常用戶狀態(tài)不保存在數(shù)據(jù)庫(kù)中,而是直接從用戶服務(wù)讀取;消息處理服務(wù)器只讀取第一個(gè)有狀態(tài)的服務(wù)的狀態(tài)發(fā)送返回給Web 接口服務(wù)器;10)獲取用戶服務(wù)新鮮事;服務(wù)新鮮事由Web接口服務(wù)器獲??;Web接口服務(wù)器獲取的時(shí)候,用戶新鮮事已經(jīng)收集好并放在一個(gè)變量中;收集工作由新鮮事獲取定時(shí)器完成;新鮮事獲取定時(shí)器以固定的頻率將用戶服務(wù)的新鮮事放入變量中,等待Web接口服務(wù)器獲??;11)發(fā)帖;作為整個(gè)系統(tǒng)的核心之一,發(fā)帖被消息處理服務(wù)器內(nèi)部調(diào)用,或者被Web接口服務(wù)器調(diào)用;發(fā)帖的執(zhí)行方是用戶,或者是用戶的服務(wù)中收到的消息;發(fā)帖需要提供數(shù)據(jù)庫(kù)表的所有信息,作為話題帖子,還需要提供話題的聯(lián)系人列表;發(fā)帖步驟進(jìn)一步包括如下步驟IIA)檢查唯一編號(hào)是否已經(jīng)在數(shù)據(jù)庫(kù)存在;如果不存在進(jìn)行下一步,如果存在直接退出發(fā)帖步驟;IIB)將信息格式化;IIC)如果為話題帖子,檢查是否缺少用戶為其中之一的聯(lián)系人,如果是,將其補(bǔ)上;IID)檢查聯(lián)系人列表的聯(lián)系人和作者;一些情況下,用戶或者聯(lián)系人會(huì)直接使用服務(wù)的地址作為聯(lián)系人字符串,而這個(gè)地址剛好是某個(gè)聯(lián)系人的聯(lián)系方式;這個(gè)過程將把使用服務(wù)地址聯(lián)系人字符串改變?yōu)橛脩舻穆?lián)系人的聯(lián)系人字符串;當(dāng)用戶的聯(lián)系人發(fā)帖時(shí)將地址轉(zhuǎn)換成聯(lián)系人,讓用戶能直接識(shí)別;IIE)將帖子插入數(shù)據(jù)庫(kù);IIF)如果這個(gè)帖子為回復(fù),更新父帖和根帖的數(shù)據(jù)庫(kù)紀(jì)錄中“回復(fù)人”和“最后回復(fù)時(shí)間”字段;IIG)讀取已經(jīng)插入數(shù)據(jù)庫(kù)的帖子的編號(hào);IIH)如果為話題帖子,將帖子聯(lián)系人列表插入帖子聯(lián)系人表;IlD如果是回復(fù),獲取根帖的編號(hào);如果是話題帖子,根帖編號(hào)為已經(jīng)插入數(shù)據(jù)庫(kù)的帖子的編號(hào);11J)通過獲取的根帖子的編號(hào)從數(shù)據(jù)庫(kù)獲取根帖子的聯(lián)系人列表; 11K)根據(jù)讀取的帖子聯(lián)系人列表,將消息轉(zhuǎn)發(fā)給聯(lián)系人;12)轉(zhuǎn)發(fā)消息;轉(zhuǎn)發(fā)消息函數(shù)不被Web接口服務(wù)器調(diào)用,是發(fā)帖時(shí)用來為指定聯(lián)系人或用戶轉(zhuǎn)發(fā)消息時(shí)使用;轉(zhuǎn)發(fā)消息需要作為遠(yuǎn)程方法調(diào)用來執(zhí)行;轉(zhuǎn)發(fā)消息過程具體進(jìn)一步包括如下步驟12A)檢查轉(zhuǎn)發(fā)的聯(lián)系人和作者是否為同一人,如果是,此消息將不被轉(zhuǎn)發(fā)到這個(gè)聯(lián)系人;12B)檢查轉(zhuǎn)發(fā)的聯(lián)系人是否為系統(tǒng)的另一個(gè)用戶,并且此用戶不在本地的消息處理服務(wù)器中;如果是,將從任務(wù)調(diào)度服務(wù)器讀取此用戶位置,并把此消息轉(zhuǎn)發(fā)到用戶位置進(jìn)行處理;整個(gè)本服務(wù)器的轉(zhuǎn)發(fā)過程結(jié)束;12C)檢查轉(zhuǎn)發(fā)消息的聯(lián)系人字符串的格式;12D)如果為用戶聯(lián)系人字符串,將通過獲取聯(lián)系人優(yōu)先聯(lián)系服務(wù)方法獲取最合適用戶聯(lián)系人聯(lián)系方式,通過這個(gè)聯(lián)系方式所對(duì)應(yīng)的服務(wù)插件實(shí)例發(fā)送消息; 12E)如果為用戶的某個(gè)服務(wù)插件的實(shí)例地址,直接通過這個(gè)實(shí)例發(fā)送; 12F)如果為系統(tǒng)用戶,將消息回推到用戶的Web接口服務(wù)器; 上述整個(gè)過程是否成功將被監(jiān)視,如果不成功,這個(gè)消息將保存到數(shù)據(jù)庫(kù),在下次合適的時(shí)候發(fā)送;13)執(zhí)行服務(wù)命令;命令由服務(wù)插件實(shí)例在服務(wù)新鮮事的時(shí)候生成,由服務(wù)插件實(shí)例識(shí)別并執(zhí)行相關(guān)操作。
全文摘要
本發(fā)明揭示了一種基于云計(jì)算架構(gòu)的網(wǎng)絡(luò)服務(wù)聚合系統(tǒng)及其聚合方法,所述系統(tǒng)包括客戶端、Web接口服務(wù)器、任務(wù)調(diào)度服務(wù)器、消息處理服務(wù)器、數(shù)據(jù)庫(kù)服務(wù)器。Web接口服務(wù)器用以給客戶端提供信息,并且處理和消息無關(guān)的數(shù)據(jù)。任務(wù)調(diào)度服務(wù)器負(fù)責(zé)監(jiān)視消息處理服務(wù)器的資源消耗狀態(tài),并在Web接口服務(wù)器為登入用戶索取相對(duì)空閑的消息處理服務(wù)器地址時(shí)返回,讓W(xué)eb接口服務(wù)器自行調(diào)用。消息處理服務(wù)器通過Web接口服務(wù)器與客戶端連接,用戶的網(wǎng)絡(luò)服務(wù)在消息處理服務(wù)器進(jìn)行登入、登出、狀態(tài)管理、消息收發(fā)處理。本發(fā)明可支持各類網(wǎng)絡(luò)服務(wù),讓處于不同平臺(tái)的各個(gè)用戶進(jìn)行無障礙交流的環(huán)境。
文檔編號(hào)H04L29/08GK102202102SQ20111018603
公開日2011年9月28日 申請(qǐng)日期2011年7月5日 優(yōu)先權(quán)日2011年7月5日
發(fā)明者施昊 申請(qǐng)人:吳文飛, 施昊, 施紅家
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
全南县| 淮安市| 桐庐县| 平邑县| 江孜县| 乃东县| 凯里市| 依安县| 佛冈县| 循化| 剑河县| 延安市| 行唐县| 苗栗县| 菏泽市| 临桂县| 东城区| 瓦房店市| 邹城市| 喀什市| 龙海市| 兴文县| 织金县| 浦北县| 洛南县| 银川市| 丹阳市| 武鸣县| 中宁县| 朝阳市| 黄骅市| 离岛区| 磴口县| 盈江县| 安陆市| 丹江口市| 水富县| 兴宁市| 大新县| 靖安县| 怀远县|