本發(fā)明涉及移動(dòng)應(yīng)用技術(shù)領(lǐng)域,尤其是涉及一種系統(tǒng)間的通信方法和裝置。
背景技術(shù):
現(xiàn)有技術(shù)中多個(gè)系統(tǒng)通常會(huì)部署在多個(gè)不同的服務(wù)器物理主機(jī)上,存在需求變化導(dǎo)致的需要互相進(jìn)行通信的情況,然而這些系統(tǒng)處于維護(hù)階段無法再重新進(jìn)行設(shè)計(jì)開發(fā)使其具備互相通信的能力;同時(shí)各個(gè)系統(tǒng)的開發(fā)語言不同也限制了解決系統(tǒng)之間的通信問題的方式。
針對(duì)上述現(xiàn)有技術(shù)中多系統(tǒng)之間存在通信困難的問題,目前尚未提出有效解決方案。
技術(shù)實(shí)現(xiàn)要素:
有鑒于此,本發(fā)明的目的在于提供一種系統(tǒng)間的通信方法和裝置,可以滿足多個(gè)系統(tǒng)之間通信的需求,無需重新進(jìn)行設(shè)計(jì)開發(fā),快速有效且方便開發(fā)人員進(jìn)行敏捷開發(fā)的實(shí)施。
第一方面,本發(fā)明實(shí)施例提供了一種系統(tǒng)間的通信方法,第一系統(tǒng)和第二系統(tǒng)均設(shè)置有訪問redis數(shù)據(jù)庫的接口,該方法包括:第一系統(tǒng)監(jiān)聽redis數(shù)據(jù)庫;當(dāng)?shù)谝幌到y(tǒng)監(jiān)聽到redis數(shù)據(jù)庫中有指向第一系統(tǒng)的消息時(shí),解析消息;消息是第二系統(tǒng)寫入redis數(shù)據(jù)庫的需要第一系統(tǒng)執(zhí)行的命令或者向第一系統(tǒng)返回的執(zhí)行結(jié)果;執(zhí)行與解析消息得到的內(nèi)容對(duì)應(yīng)的操作。
結(jié)合第一方面,本發(fā)明實(shí)施例提供了第一方面的第一種可能的實(shí)施方式,其中,第一系統(tǒng)監(jiān)聽redis數(shù)據(jù)庫包括:第一系統(tǒng)監(jiān)聽redis數(shù)據(jù)庫中指向第一系統(tǒng)的消息隊(duì)列;當(dāng)消息隊(duì)列有消息時(shí),確定redis數(shù)據(jù)庫中有指向第一系統(tǒng)的消息。
結(jié)合第一方面,本發(fā)明實(shí)施例提供了第一方面的第二種可能的實(shí)施方式,其中,執(zhí)行與解析消息得到的內(nèi)容對(duì)應(yīng)的操作包括:當(dāng)消息得到的內(nèi)容為命令時(shí),第一系統(tǒng)執(zhí)行命令并將執(zhí)行結(jié)果寫入redis數(shù)據(jù)庫中,以供第二系統(tǒng)獲取執(zhí)行結(jié)果。
結(jié)合第一方面的第二種可能的實(shí)施方式,本發(fā)明實(shí)施例提供了第一方面的第三種可能的實(shí)施方式,其中,第一系統(tǒng)將執(zhí)行結(jié)果寫入redis數(shù)據(jù)庫中包括:第一系統(tǒng)將執(zhí)行結(jié)果寫入redis數(shù)據(jù)庫中指向第二系統(tǒng)的消息隊(duì)列中。
結(jié)合第一方面,本發(fā)明實(shí)施例提供了第一方面的第四種可能的實(shí)施方式,其中,執(zhí)行與解析消息得到的內(nèi)容對(duì)應(yīng)的操作包括:當(dāng)消息得到的內(nèi)容為執(zhí)行結(jié)果時(shí),第一系統(tǒng)保存執(zhí)行結(jié)果或根據(jù)執(zhí)行結(jié)果執(zhí)行對(duì)應(yīng)的操作。
結(jié)合第一方面,本發(fā)明實(shí)施例提供了第一方面的第五種可能的實(shí)施方式,還包括:當(dāng)?shù)谝幌到y(tǒng)需要向第二系統(tǒng)發(fā)送交互消息時(shí),將交互消息寫入redis數(shù)據(jù)庫中,以供第二系統(tǒng)獲取;交互消息包括需要第二系統(tǒng)執(zhí)行的命令或者向第二系統(tǒng)返回的執(zhí)行結(jié)果。
第二方面,本發(fā)明實(shí)施例還提供一種系統(tǒng)間的通信裝置,第一系統(tǒng)和第二系統(tǒng)均設(shè)置有訪問redis數(shù)據(jù)庫的接口,該裝置包括:監(jiān)聽模塊,用于第一系統(tǒng)監(jiān)聽redis數(shù)據(jù)庫;解析模塊,用于當(dāng)?shù)谝幌到y(tǒng)監(jiān)聽到redis數(shù)據(jù)庫中有指向第一系統(tǒng)的消息時(shí),解析消息;消息是第二系統(tǒng)寫入redis數(shù)據(jù)庫的需要第一系統(tǒng)執(zhí)行的命令或者向第一系統(tǒng)返回的執(zhí)行結(jié)果;執(zhí)行模塊,用于執(zhí)行與解析消息得到的內(nèi)容對(duì)應(yīng)的操作。
結(jié)合第二方面,本發(fā)明實(shí)施例提供了第二方面的第一種可能的實(shí)施方式,其中,上述監(jiān)聽模塊還用于:第一系統(tǒng)監(jiān)聽redis數(shù)據(jù)庫中指向第一系統(tǒng)的消息隊(duì)列;當(dāng)消息隊(duì)列有消息時(shí),確定redis數(shù)據(jù)庫中有指向第一系統(tǒng)的消息。
結(jié)合第二方面,本發(fā)明實(shí)施例提供了第二方面的第二種可能的實(shí)施方式,其中,執(zhí)行模塊還用于:當(dāng)消息得到的內(nèi)容為命令時(shí),第一系統(tǒng)執(zhí)行命令并將執(zhí)行結(jié)果寫入redis數(shù)據(jù)庫中,以供第二系統(tǒng)獲取執(zhí)行結(jié)果。
結(jié)合第二方面,本發(fā)明實(shí)施例提供了第二方面的第三種可能的實(shí)施方式,其中,執(zhí)行模塊還用于:當(dāng)消息得到的內(nèi)容為執(zhí)行結(jié)果時(shí),第一系統(tǒng)保存執(zhí)行結(jié)果或根據(jù)執(zhí)行結(jié)果執(zhí)行對(duì)應(yīng)的操作。
本發(fā)明實(shí)施例帶來了以下有益效果:本發(fā)明實(shí)施例提供的系統(tǒng)間的通信方法和裝置,第一系統(tǒng)和第二系統(tǒng)均與redis數(shù)據(jù)庫連接,在第一系統(tǒng)運(yùn)行中監(jiān)聽到redis數(shù)據(jù)庫中有指向第一系統(tǒng)的消息時(shí),解析該消息并執(zhí)行與解析消息得到的內(nèi)容對(duì)應(yīng)的操作,上述消息是第二系統(tǒng)寫入redis數(shù)據(jù)庫的需要第一系統(tǒng)執(zhí)行的命令或者向第一系統(tǒng)返回的執(zhí)行結(jié)果,系統(tǒng)通過將消息寫入redis數(shù)據(jù)庫或者從redis數(shù)據(jù)庫中讀取消息,進(jìn)行系統(tǒng)之間消息的發(fā)送和接收,可以實(shí)現(xiàn)系統(tǒng)之間的通信,不需要針對(duì)各個(gè)系統(tǒng)之間的通信需求重新進(jìn)行系統(tǒng)開發(fā),快速有效且方便實(shí)施。
本發(fā)明的其他特征和優(yōu)點(diǎn)將在隨后的說明書中闡述,并且,部分地從說明書中變得顯而易見,或者通過實(shí)施本發(fā)明而了解。本發(fā)明的目的和其他優(yōu)點(diǎn)在說明書、權(quán)利要求書以及附圖中所特別指出的結(jié)構(gòu)來實(shí)現(xiàn)和獲得。
為使本發(fā)明的上述目的、特征和優(yōu)點(diǎn)能更明顯易懂,下文特舉較佳實(shí)施例,并配合所附附圖,作詳細(xì)說明如下。
附圖說明
為了更清楚地說明本發(fā)明具體實(shí)施方式或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)具體實(shí)施方式或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實(shí)施方式,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明實(shí)施例提供的一種系統(tǒng)間的通信方法的流程示意圖;
圖2為本發(fā)明實(shí)施例提供的兩個(gè)系統(tǒng)間通信的交互圖;
圖3為本發(fā)明實(shí)施例提供的另一種系統(tǒng)間的通信方法的流程示意圖;
圖4為本發(fā)明實(shí)施例提供的一種系統(tǒng)間的通信裝置的結(jié)構(gòu)示意圖;
圖5為本發(fā)明實(shí)施例提供的另一種系統(tǒng)間的通信裝置的結(jié)構(gòu)示意圖;
圖6為本發(fā)明實(shí)施例提供的一種服務(wù)器的結(jié)構(gòu)示意圖。
具體實(shí)施方式
為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對(duì)本發(fā)明的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
目前多個(gè)系統(tǒng)通常是部署在多個(gè)不同的服務(wù)器物理主機(jī)上,存在需求變化導(dǎo)致的需要互相進(jìn)行通信的情況,然而這些系統(tǒng)處于維護(hù)階段無法再重新進(jìn)行設(shè)計(jì)開發(fā)使其互相通信的能力;同時(shí)各個(gè)系統(tǒng)開發(fā)語言的不同也限制了解決系統(tǒng)之間的通信問題的方式;因此現(xiàn)有的多系統(tǒng)之間存在通信困難?;诖?,本發(fā)明實(shí)施例提供的一種系統(tǒng)間的通信方法和裝置,可以滿足部署多個(gè)系統(tǒng)之間通信的需求,無需重新進(jìn)行設(shè)計(jì)開發(fā),快速有效且方便開發(fā)人員進(jìn)行敏捷開發(fā)的實(shí)施。其中,redis是一個(gè)支持網(wǎng)絡(luò)、可基于內(nèi)存亦可持久化的日志型key-value數(shù)據(jù)庫,支持多種存儲(chǔ)的value類型,包括string(字符串)、list(鏈表)、set(集合)、zset(sortedset-有序集合)和hash(哈希類型)。這些數(shù)據(jù)類型都支持push/pop、add/remove及取交集并集和差集及更豐富的操作。同時(shí)redis支持各種不同方式的排序。為便于對(duì)本實(shí)施例進(jìn)行理解,首先對(duì)本發(fā)明實(shí)施例所公開的一種系統(tǒng)間的通信方法進(jìn)行詳細(xì)介紹。
實(shí)施例1
本發(fā)明實(shí)施例1提供了一種系統(tǒng)間的通信方法,第一系統(tǒng)和第二系統(tǒng)均設(shè)置有訪問redis數(shù)據(jù)庫的接口,在本實(shí)施例中以兩個(gè)系統(tǒng)之間進(jìn)行通信為例進(jìn)行說明,參見圖1所示的系統(tǒng)間的通信方法的流程示意圖,包括如下步驟:
步驟s11,第一系統(tǒng)監(jiān)聽redis數(shù)據(jù)庫。
其中第一系統(tǒng)和以下步驟中的第二系統(tǒng)僅是為了區(qū)分兩個(gè)系統(tǒng)進(jìn)行的命名,可以理解兩者并不存在重要性或者順序上的區(qū)別,是可以互換的。第一系統(tǒng)和第二系統(tǒng)通過訪問redis數(shù)據(jù)庫的接口與redis數(shù)據(jù)庫連接。第一系統(tǒng)在運(yùn)行中監(jiān)聽該redis數(shù)據(jù)庫。
步驟s12,當(dāng)?shù)谝幌到y(tǒng)監(jiān)聽到redis數(shù)據(jù)庫中有指向第一系統(tǒng)的消息時(shí),解析該消息。
具體地,上述消息是第二系統(tǒng)寫入redis數(shù)據(jù)庫的需要第一系統(tǒng)執(zhí)行的命令或者向第一系統(tǒng)返回的執(zhí)行結(jié)果。上述消息可以是redis提供數(shù)據(jù)類型中任意一種,并且通過redis支持的方式排序存儲(chǔ),具體可以根據(jù)消息本身的要求選擇存儲(chǔ)方式和排序方式。當(dāng)?shù)谝幌到y(tǒng)監(jiān)聽到redis數(shù)據(jù)庫中存在指向該第一系統(tǒng)的消息時(shí),讀取該信息并進(jìn)行解析。
步驟s13,執(zhí)行與解析該消息得到的內(nèi)容對(duì)應(yīng)的操作。
在第一系統(tǒng)解析上述消息得到其中的內(nèi)容后,執(zhí)行該內(nèi)容對(duì)應(yīng)的操作。具體包括以下兩種情況:
(1)當(dāng)消息得到的內(nèi)容為命令時(shí),第一系統(tǒng)執(zhí)行命令并將執(zhí)行結(jié)果寫入redis數(shù)據(jù)庫中,以供第二系統(tǒng)獲取執(zhí)行結(jié)果。其中第一系統(tǒng)寫入執(zhí)行結(jié)果是,將該執(zhí)行結(jié)果指向第二系統(tǒng)。
(2)當(dāng)消息得到的內(nèi)容為執(zhí)行結(jié)果時(shí),第一系統(tǒng)保存執(zhí)行結(jié)果或根據(jù)執(zhí)行結(jié)果執(zhí)行對(duì)應(yīng)的操作。
本發(fā)明實(shí)施例提供的系統(tǒng)間的通信方法,第一系統(tǒng)和第二系統(tǒng)均與redis數(shù)據(jù)庫連接,在第一系統(tǒng)運(yùn)行中監(jiān)聽到redis數(shù)據(jù)庫中有指向第一系統(tǒng)的消息時(shí),解析該消息并執(zhí)行與解析消息得到的內(nèi)容對(duì)應(yīng)的操作,上述消息是第二系統(tǒng)寫入redis數(shù)據(jù)庫的需要第一系統(tǒng)執(zhí)行的命令或者向第一系統(tǒng)返回的執(zhí)行結(jié)果,系統(tǒng)通過將消息寫入redis數(shù)據(jù)庫或者從redis數(shù)據(jù)庫中讀取消息,進(jìn)行系統(tǒng)之間消息的發(fā)送和接收,可以實(shí)現(xiàn)系統(tǒng)之間的通信,不需要針對(duì)各個(gè)系統(tǒng)之間的通信需求重新進(jìn)行系統(tǒng)開發(fā),快速有效且方便實(shí)施。
在上述方法中是第一系統(tǒng)接收第二系統(tǒng)發(fā)送的消息進(jìn)行說明的,由于第一系統(tǒng)和第二系統(tǒng)的可互換性,可以理解的是第一系統(tǒng)也可以向第二系統(tǒng)發(fā)送消息,上述方法還可以包括:
當(dāng)?shù)谝幌到y(tǒng)需要向第二系統(tǒng)發(fā)送交互消息時(shí),將該交互消息寫入redis數(shù)據(jù)庫中,以供第二系統(tǒng)獲取;上述交互消息包括需要第二系統(tǒng)執(zhí)行的命令或者向第二系統(tǒng)返回的執(zhí)行結(jié)果。
考慮到redis數(shù)據(jù)庫包括多種存儲(chǔ)方式,本實(shí)施例以消息通過消息隊(duì)列的方式存儲(chǔ)進(jìn)行說明。上述步驟s11,第一系統(tǒng)監(jiān)聽redis數(shù)據(jù)庫具體包括:
(1)第一系統(tǒng)監(jiān)聽redis數(shù)據(jù)庫中指向第一系統(tǒng)的消息隊(duì)列;
(2)當(dāng)消息隊(duì)列有消息時(shí),確定redis數(shù)據(jù)庫中有指向第一系統(tǒng)的消息。
在redis數(shù)據(jù)庫存儲(chǔ)有多個(gè)消息隊(duì)列,一個(gè)系統(tǒng)發(fā)送給另一個(gè)系統(tǒng)的消息寫入redis數(shù)據(jù)庫中的該系統(tǒng)指向另一個(gè)系統(tǒng)的消息隊(duì)列中,該另一個(gè)系統(tǒng)通過監(jiān)聽該指向其的消息隊(duì)列確定其中是否有其他系統(tǒng)發(fā)送的消息,顯然指向該另一個(gè)系統(tǒng)的消息隊(duì)列也包括多個(gè),分別對(duì)應(yīng)存儲(chǔ)有多個(gè)其他系統(tǒng)發(fā)送的消息。在本實(shí)施例中,消息隊(duì)列中的消息采用先進(jìn)先出的方式供系統(tǒng)寫入和讀取。
進(jìn)一步,第一系統(tǒng)執(zhí)行命令并將執(zhí)行結(jié)果寫入redis數(shù)據(jù)庫中包括:第一系統(tǒng)將執(zhí)行結(jié)果寫入redis數(shù)據(jù)庫中指向第二系統(tǒng)的消息隊(duì)列中。
本發(fā)明實(shí)施例提供的系統(tǒng)間的通信方法,在第一系統(tǒng)監(jiān)聽到redis數(shù)據(jù)庫中指向第一系統(tǒng)的消息隊(duì)列中有消息時(shí),執(zhí)行消息中的命令并將執(zhí)行結(jié)果寫入redis數(shù)據(jù)庫中或者保存執(zhí)行結(jié)果、根據(jù)執(zhí)行結(jié)果執(zhí)行對(duì)應(yīng)的操作,系統(tǒng)通過將消息寫入redis數(shù)據(jù)庫中的消息隊(duì)列或者從redis數(shù)據(jù)庫中的消息隊(duì)列讀取消息,進(jìn)行系統(tǒng)之間消息的發(fā)送和接收,可以實(shí)現(xiàn)系統(tǒng)之間的通信,不需要針對(duì)各個(gè)系統(tǒng)之間的通信需求重新進(jìn)行系統(tǒng)開發(fā),快速有效且方便實(shí)施。
實(shí)施例2
本發(fā)明實(shí)施例2提供了一種系統(tǒng)間的通信方法,參見圖2所示的兩個(gè)系統(tǒng)間通信的交互圖,其中第一系統(tǒng)以systemb表示,第二系統(tǒng)以systema表示,包括如下步驟:
1.systema向redis的消息隊(duì)列寫入命令。
其中,系統(tǒng)systema、系統(tǒng)systemb正常運(yùn)行并且均已連接到redis數(shù)據(jù)庫。此時(shí)系統(tǒng)systema需要通知系統(tǒng)systemb進(jìn)行某項(xiàng)操作operationatob,需要向redis數(shù)據(jù)庫的消息隊(duì)列messageatob里寫入命令commandatob。具體寫入方式如下:$redis->lpush($key,$value)。
2.systemb監(jiān)聽redis的消息隊(duì)列并讀取命令。
為了接收系統(tǒng)systema發(fā)送給系統(tǒng)systemb的命令,系統(tǒng)systemb需要監(jiān)聽redis數(shù)據(jù)庫的消息隊(duì)列messageatob,當(dāng)該消息隊(duì)列中有命令時(shí)即進(jìn)行讀取,即讀取命令commandatob。可以理解的是,在有多個(gè)系統(tǒng)與redis數(shù)據(jù)庫連接時(shí),系統(tǒng)systemb需要監(jiān)聽redis數(shù)據(jù)庫中的所有指向systemb的消息隊(duì)列,以消息隊(duì)列messagextob表示。具體讀取方式如下:$redis->rpop($key)。
3.systemb執(zhí)行命令。
4.systemb向redis的消息隊(duì)列寫入結(jié)果。
在系統(tǒng)systemb執(zhí)行某項(xiàng)操作operationatob結(jié)束后將執(zhí)行結(jié)果resultbtoa寫入redis數(shù)據(jù)庫中消息隊(duì)列messagebtoa中。
5.systema監(jiān)聽redis的消息隊(duì)列并讀取執(zhí)行結(jié)果。
為了接收系統(tǒng)systemb返回給系統(tǒng)systema的執(zhí)行結(jié)果,系統(tǒng)systema需要監(jiān)聽redis數(shù)據(jù)庫的消息隊(duì)列messagebtoa,當(dāng)該消息隊(duì)列中有命令時(shí)即進(jìn)行讀取,即讀取執(zhí)行結(jié)果resultbtoa,然后進(jìn)行后續(xù)操作。
顯然,上述命令和執(zhí)行結(jié)果均可以保存在消息隊(duì)列中,例如messageatob中既包括系統(tǒng)systema發(fā)送給系統(tǒng)systemb的命令又包括systema返回給系統(tǒng)systemb的執(zhí)行結(jié)果,系統(tǒng)systemb只需要監(jiān)聽該messageatob消息隊(duì)列,即可獲得從系統(tǒng)systema發(fā)來的所有消息。類似地,當(dāng)系統(tǒng)systemb需要向系統(tǒng)systema發(fā)送命令時(shí),可以按照類似上述步驟1-5執(zhí)行。
本發(fā)明實(shí)施例提供的系統(tǒng)間的通信方法,在系統(tǒng)systemb監(jiān)聽到redis數(shù)據(jù)庫中系統(tǒng)systema指向系統(tǒng)systemb的消息隊(duì)列中有消息時(shí),讀取并執(zhí)行該消息中的命令并將執(zhí)行結(jié)果寫入redis數(shù)據(jù)庫中供系統(tǒng)systema讀取,即系統(tǒng)systema將消息寫入redis數(shù)據(jù)庫中的消息隊(duì)列,系統(tǒng)systemb從redis數(shù)據(jù)庫中的消息隊(duì)列讀取消息,從而進(jìn)行兩系統(tǒng)之間消息的發(fā)送和接收,可以實(shí)現(xiàn)系統(tǒng)之間的通信,不需要針對(duì)各個(gè)系統(tǒng)之間的通信需求重新進(jìn)行系統(tǒng)開發(fā),快速有效且方便實(shí)施。
實(shí)施例3
本發(fā)明實(shí)施例3提供了一種系統(tǒng)間的通信方法,與前述實(shí)施例中兩個(gè)系統(tǒng)之間的通信不同,本實(shí)施例以三個(gè)系統(tǒng)進(jìn)行通信為例進(jìn)行說明,三個(gè)系統(tǒng)分別以systema、systemb和systemc表示。systema、systemb和systemc正常運(yùn)行且均與redis數(shù)據(jù)庫連接。參見圖3所示的系統(tǒng)間的通信方法的流程示意圖,包括如下步驟:
步驟s31,系統(tǒng)systema需要通知系統(tǒng)systemb進(jìn)行某項(xiàng)操作operationatob時(shí),向redis數(shù)據(jù)庫的消息隊(duì)列messageatob里寫入命令commandatob。
步驟s32,系統(tǒng)systemc需要通知系統(tǒng)systemb進(jìn)行某項(xiàng)操作operationctob時(shí),向redis數(shù)據(jù)庫的消息隊(duì)列messagectob里寫入命令commandctob。
其中,系統(tǒng)systema和系統(tǒng)systemc均將命令保存在單獨(dú)的消息隊(duì)列中,上述消息隊(duì)列均指向?qū)嶋H的執(zhí)行系統(tǒng)systemb。上述步驟s31和步驟s32無先后順序,也可以同時(shí)發(fā)生。優(yōu)選地,系統(tǒng)systemb優(yōu)先執(zhí)行先寫入到redis數(shù)據(jù)庫的消息隊(duì)列中的命令。
步驟s33,系統(tǒng)systemb監(jiān)聽redis數(shù)據(jù)庫的消息隊(duì)列并讀取命令。
系統(tǒng)systemb監(jiān)控redis數(shù)據(jù)庫中的消息隊(duì)列messageatob和messagectob,并讀取命令commandatob和命令commandctob。
步驟s34,系統(tǒng)systemb執(zhí)行讀取的命令。
命令commandatob和commandctob分別對(duì)應(yīng)操作operationatob和operationctob,系統(tǒng)systemb執(zhí)行上述操作。
步驟s35,系統(tǒng)systemb將執(zhí)行結(jié)果resultbtoa寫入消息隊(duì)列messagebtoa中。
步驟s36,系統(tǒng)systemb將執(zhí)行結(jié)果resultbtoc寫入消息隊(duì)列messagebtoc中。
系統(tǒng)systemb將執(zhí)行結(jié)果分別寫入對(duì)應(yīng)的消息隊(duì)列中,例如執(zhí)行結(jié)果是systemc發(fā)送的命令的執(zhí)行結(jié)果,該執(zhí)行結(jié)果就需要寫入systemb指向systemc的消息隊(duì)列中。
步驟s37,系統(tǒng)systema監(jiān)聽redis數(shù)據(jù)庫的消息隊(duì)列讀取執(zhí)行結(jié)果resultbtoa。
步驟s38,系統(tǒng)systemc監(jiān)聽redis數(shù)據(jù)庫的消息隊(duì)列讀取執(zhí)行結(jié)果resultbtoc。
在系統(tǒng)systema、系統(tǒng)systemc讀取到執(zhí)行結(jié)果后,完成了一次對(duì)系統(tǒng)systemb的通信過程,然后基于上述執(zhí)行結(jié)果可以進(jìn)行后續(xù)的其他操作。
系統(tǒng)systemb需要通知系統(tǒng)systema進(jìn)行某項(xiàng)操作operationtobtoa,重復(fù)類似s31-s38的步驟;系統(tǒng)systemb需要通知系統(tǒng)systemc進(jìn)行某項(xiàng)操作operationtobtoc,重復(fù)類似s31-s38的步驟;系統(tǒng)systemc需要通知系統(tǒng)systema進(jìn)行某項(xiàng)操作operationtoctoa,重復(fù)類似s31-s38的步驟。
本發(fā)明實(shí)施例提供的系統(tǒng)間的通信方法,多個(gè)系統(tǒng)通過將消息寫入redis數(shù)據(jù)庫中的消息隊(duì)列或者從redis數(shù)據(jù)庫中的消息隊(duì)列讀取消息,進(jìn)行系統(tǒng)之間消息的發(fā)送和接收,可以實(shí)現(xiàn)系統(tǒng)之間的通信,不需要針對(duì)各個(gè)系統(tǒng)之間的通信需求重新進(jìn)行系統(tǒng)開發(fā),快速有效且方便實(shí)施。
實(shí)施例4
本發(fā)明實(shí)施例4提供了一種系統(tǒng)間的通信裝置,第一系統(tǒng)和第二系統(tǒng)均設(shè)置有訪問redis數(shù)據(jù)庫的接口,參見圖4所示的結(jié)構(gòu)示意圖,包括以下模塊:
監(jiān)聽模塊410,用于第一系統(tǒng)監(jiān)聽redis數(shù)據(jù)庫;
解析模塊420,用于當(dāng)?shù)谝幌到y(tǒng)監(jiān)聽到redis數(shù)據(jù)庫中有指向第一系統(tǒng)的消息時(shí),解析消息;消息是第二系統(tǒng)寫入redis數(shù)據(jù)庫的需要第一系統(tǒng)執(zhí)行的命令或者向第一系統(tǒng)返回的執(zhí)行結(jié)果;
執(zhí)行模塊430,用于執(zhí)行與解析消息得到的內(nèi)容對(duì)應(yīng)的操作。
進(jìn)一步,監(jiān)聽模塊410還用于:第一系統(tǒng)監(jiān)聽redis數(shù)據(jù)庫中指向第一系統(tǒng)的消息隊(duì)列;當(dāng)消息隊(duì)列有消息時(shí),確定redis數(shù)據(jù)庫中有指向第一系統(tǒng)的消息。
進(jìn)一步,執(zhí)行模塊430還用于:當(dāng)消息得到的內(nèi)容為命令時(shí),第一系統(tǒng)執(zhí)行命令并將執(zhí)行結(jié)果寫入redis數(shù)據(jù)庫中,以供第二系統(tǒng)獲取執(zhí)行結(jié)果。其中,第一系統(tǒng)將執(zhí)行結(jié)果寫入redis數(shù)據(jù)庫中包括:第一系統(tǒng)將執(zhí)行結(jié)果寫入redis數(shù)據(jù)庫中指向第二系統(tǒng)的消息隊(duì)列中。
進(jìn)一步,執(zhí)行模塊430還用于:當(dāng)消息得到的內(nèi)容為執(zhí)行結(jié)果時(shí),第一系統(tǒng)保存執(zhí)行結(jié)果或根據(jù)執(zhí)行結(jié)果執(zhí)行對(duì)應(yīng)的操作。
進(jìn)一步,參見圖5所示的系統(tǒng)間的通信裝置的結(jié)構(gòu)示意圖,該裝置還包括:交互消息寫入模塊440,用于當(dāng)?shù)谝幌到y(tǒng)需要向第二系統(tǒng)發(fā)送交互消息時(shí),將交互消息寫入redis數(shù)據(jù)庫中,以供第二系統(tǒng)獲??;交互消息包括需要第二系統(tǒng)執(zhí)行的命令或者向第二系統(tǒng)返回的執(zhí)行結(jié)果。
本發(fā)明實(shí)施例提供的系統(tǒng)間的通信裝置,在第一系統(tǒng)監(jiān)聽到redis數(shù)據(jù)庫中指向第一系統(tǒng)的消息隊(duì)列中有消息時(shí),執(zhí)行消息中的命令并將執(zhí)行結(jié)果寫入redis數(shù)據(jù)庫中或者保存執(zhí)行結(jié)果、根據(jù)執(zhí)行結(jié)果執(zhí)行對(duì)應(yīng)的操作,系統(tǒng)通過將消息寫入redis數(shù)據(jù)庫中的消息隊(duì)列或者從redis數(shù)據(jù)庫中的消息隊(duì)列讀取消息,進(jìn)行系統(tǒng)之間消息的發(fā)送和接收,可以實(shí)現(xiàn)系統(tǒng)之間的通信,不需要針對(duì)各個(gè)系統(tǒng)之間的通信需求重新進(jìn)行系統(tǒng)開發(fā),快速有效且方便實(shí)施。
本發(fā)明實(shí)施例所提供的裝置,其實(shí)現(xiàn)原理及產(chǎn)生的技術(shù)效果和前述方法實(shí)施例相同,為簡(jiǎn)要描述,裝置實(shí)施例部分未提及之處,可參考前述方法實(shí)施例中相應(yīng)內(nèi)容。
附圖中的流程圖和框圖顯示了根據(jù)本發(fā)明的多個(gè)實(shí)施例的系統(tǒng)、方法和計(jì)算機(jī)程序產(chǎn)品的可能實(shí)現(xiàn)的體系架構(gòu)、功能和操作。在這點(diǎn)上,流程圖或框圖中的每個(gè)方框可以代表一個(gè)模塊、程序段或代碼的一部分,所述模塊、程序段或代碼的一部分包含一個(gè)或多個(gè)用于實(shí)現(xiàn)規(guī)定的邏輯功能的可執(zhí)行指令。也應(yīng)當(dāng)注意,在有些作為替換的實(shí)現(xiàn)中,方框中所標(biāo)注的功能也可以以不同于附圖中所標(biāo)注的順序發(fā)生。例如,兩個(gè)連續(xù)的方框?qū)嶋H上可以基本并行地執(zhí)行,它們有時(shí)也可以按相反的順序執(zhí)行,這依所涉及的功能而定。也要注意的是,框圖和/或流程圖中的每個(gè)方框、以及框圖和/或流程圖中的方框的組合,可以用執(zhí)行規(guī)定的功能或動(dòng)作的專用的基于硬件的系統(tǒng)來實(shí)現(xiàn),或者可以用專用硬件與計(jì)算機(jī)指令的組合來實(shí)現(xiàn)。
參見圖6,本發(fā)明實(shí)施例還提供一種服務(wù)器100,包括:處理器60,存儲(chǔ)器61,總線62和通信接口63,所述處理器60、通信接口63和存儲(chǔ)器61通過總線62連接;處理器60用于執(zhí)行存儲(chǔ)器61中存儲(chǔ)的可執(zhí)行模塊,例如計(jì)算機(jī)程序。
其中,存儲(chǔ)器61可能包含高速隨機(jī)存取存儲(chǔ)器(ram,randomaccessmemory),也可能還包括非不穩(wěn)定的存儲(chǔ)器(non-volatilememory),例如至少一個(gè)磁盤存儲(chǔ)器。通過至少一個(gè)通信接口63(可以是有線或者無線)實(shí)現(xiàn)該系統(tǒng)網(wǎng)元與至少一個(gè)其他網(wǎng)元之間的通信連接,可以使用互聯(lián)網(wǎng),廣域網(wǎng),本地網(wǎng),城域網(wǎng)等。
總線62可以是isa總線、pci總線或eisa總線等。所述總線可以分為地址總線、數(shù)據(jù)總線、控制總線等。為便于表示,圖6中僅用一個(gè)雙向箭頭表示,但并不表示僅有一根總線或一種類型的總線。
其中,存儲(chǔ)器61用于存儲(chǔ)程序,所述處理器60在接收到執(zhí)行指令后,執(zhí)行所述程序,前述本發(fā)明實(shí)施例任一實(shí)施例揭示的流過程定義的裝置所執(zhí)行的方法可以應(yīng)用于處理器60中,或者由處理器60實(shí)現(xiàn)。
處理器60可能是一種集成電路芯片,具有信號(hào)的處理能力。在實(shí)現(xiàn)過程中,上述方法的各步驟可以通過處理器60中的硬件的集成邏輯電路或者軟件形式的指令完成。上述的處理器60可以是通用處理器,包括中央處理器(centralprocessingunit,簡(jiǎn)稱cpu)、網(wǎng)絡(luò)處理器(networkprocessor,簡(jiǎn)稱np)等;還可以是數(shù)字信號(hào)處理器(digitalsignalprocessing,簡(jiǎn)稱dsp)、專用集成電路(applicationspecificintegratedcircuit,簡(jiǎn)稱asic)、現(xiàn)成可編程門陣列(field-programmablegatearray,簡(jiǎn)稱fpga)或者其他可編程邏輯器件、分立門或者晶體管邏輯器件、分立硬件組件??梢詫?shí)現(xiàn)或者執(zhí)行本發(fā)明實(shí)施例中的公開的各方法、步驟及邏輯框圖。通用處理器可以是微處理器或者該處理器也可以是任何常規(guī)的處理器等。結(jié)合本發(fā)明實(shí)施例所公開的方法的步驟可以直接體現(xiàn)為硬件譯碼處理器執(zhí)行完成,或者用譯碼處理器中的硬件及軟件模塊組合執(zhí)行完成。軟件模塊可以位于隨機(jī)存儲(chǔ)器,閃存、只讀存儲(chǔ)器,可編程只讀存儲(chǔ)器或者電可擦寫可編程存儲(chǔ)器、寄存器等本領(lǐng)域成熟的存儲(chǔ)介質(zhì)中。該存儲(chǔ)介質(zhì)位于存儲(chǔ)器61,處理器60讀取存儲(chǔ)器61中的信息,結(jié)合其硬件完成上述方法的步驟。
本發(fā)明實(shí)施例所提供的進(jìn)行系統(tǒng)間的通信方法的計(jì)算機(jī)程序產(chǎn)品,包括存儲(chǔ)了處理器可執(zhí)行的非易失的程序代碼的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述程序代碼包括的指令可用于執(zhí)行前面方法實(shí)施例中所述的方法,具體實(shí)現(xiàn)可參見方法實(shí)施例,在此不再贅述。
所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為描述的方便和簡(jiǎn)潔,上述描述的系統(tǒng)、裝置和單元的具體工作過程,可以參考前述方法實(shí)施例中的對(duì)應(yīng)過程,在此不再贅述。
所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部單元來實(shí)現(xiàn)本實(shí)施例方案的目的。
另外,在本發(fā)明各個(gè)實(shí)施例中的各功能單元可以集成在一個(gè)處理單元中,也可以是各個(gè)單元單獨(dú)物理存在,也可以兩個(gè)或兩個(gè)以上單元集成在一個(gè)單元中。
所述功能如果以軟件功能單元的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷售或使用時(shí),可以存儲(chǔ)在一個(gè)處理器可執(zhí)行的非易失的計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中。基于這樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分或者該技術(shù)方案的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)中,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述方法的全部或部分步驟。而前述的存儲(chǔ)介質(zhì)包括:u盤、移動(dòng)硬盤、只讀存儲(chǔ)器(rom,read-onlymemory)、隨機(jī)存取存儲(chǔ)器(ram,randomaccessmemory)、磁碟或者光盤等各種可以存儲(chǔ)程序代碼的介質(zhì)。
最后應(yīng)說明的是:以上所述實(shí)施例,僅為本發(fā)明的具體實(shí)施方式,用以說明本發(fā)明的技術(shù)方案,而非對(duì)其限制,本發(fā)明的保護(hù)范圍并不局限于此,盡管參照前述實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),其依然可以對(duì)前述實(shí)施例所記載的技術(shù)方案進(jìn)行修改或可輕易想到變化,或者對(duì)其中部分技術(shù)特征進(jìn)行等同替換;而這些修改、變化或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明實(shí)施例技術(shù)方案的精神和范圍,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)所述以權(quán)利要求的保護(hù)范圍為準(zhǔn)。