• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    分布式即時(shí)通信系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

    2017-09-30 03:01:58楊君徐迪
    現(xiàn)代計(jì)算機(jī) 2017年24期
    關(guān)鍵詞:服務(wù)端日志消息

    楊君,徐迪

    分布式即時(shí)通信系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

    楊君,徐迪

    (三江學(xué)院計(jì)算機(jī)科學(xué)與工程學(xué)院,南京 210000)

    隨著互聯(lián)網(wǎng)技術(shù)的不斷發(fā)展,即時(shí)通信軟件的出現(xiàn)大大影響人們之間的交流方式,隨著即時(shí)通信功能的越來(lái)越強(qiáng)大,人們也越來(lái)越依賴于即時(shí)通信軟軟件。但是隨著用戶量的增大,單機(jī)系統(tǒng)已經(jīng)較難支持龐大的用戶群,因此將系統(tǒng)進(jìn)行橫向的擴(kuò)展,即從單機(jī)模式轉(zhuǎn)換成分布式模式已經(jīng)成為即時(shí)通信系統(tǒng)的主流趨勢(shì)。對(duì)分布式即時(shí)通信系統(tǒng)的研究背景和意義進(jìn)行闡述,重點(diǎn)闡述系統(tǒng)的詳細(xì)設(shè)計(jì),以及各個(gè)模塊的功能,并展示已實(shí)現(xiàn)的分布式即時(shí)通信系統(tǒng)的主要功能。

    即時(shí)通信;Netty;分布式

    0 引言

    近年來(lái),隨著互聯(lián)網(wǎng)技術(shù)的飛速發(fā)展,人們衣食住行依賴于互聯(lián)網(wǎng),人們之間的通信也開(kāi)始依賴于互聯(lián)網(wǎng),各種即時(shí)通信軟件應(yīng)運(yùn)而生,如QQ、微信、Skype、MSN,這些即時(shí)通信軟件的出現(xiàn)使得人們可以隨時(shí)、隨地、隨身的交流。截止2016年年底,國(guó)內(nèi)即時(shí)通信用戶規(guī)模已經(jīng)達(dá)到了6.66億。QQ每日在線人數(shù)已經(jīng)達(dá)到了2.5億之多。

    一個(gè)系統(tǒng)隨著用戶量的增大,一味地通過(guò)升級(jí)硬件來(lái)縱向地?cái)U(kuò)展系統(tǒng)已經(jīng)沒(méi)有了可行性,不僅因?yàn)槌杀驹絹?lái)越高,而且由于硬件瓶頸的出現(xiàn),硬件想要快速升級(jí)已經(jīng)沒(méi)有了可能性。而且即使擁有一臺(tái)能夠支持所有用戶的機(jī)器來(lái)運(yùn)行系統(tǒng),如果這臺(tái)機(jī)器出現(xiàn)了故障,將會(huì)導(dǎo)致所有用戶都不能夠使用,甚至導(dǎo)致數(shù)據(jù)的丟失等不可挽回的后果。所以橫向的擴(kuò)展系統(tǒng)已經(jīng)成為了不二之選,理論上可以達(dá)到無(wú)限的擴(kuò)展,但是隨著擴(kuò)展的機(jī)器增多,機(jī)器之間的管理與協(xié)作也成了隨之而來(lái)的問(wèn)題,可以想象,如果一臺(tái)機(jī)器損壞的幾率是1%,只有一臺(tái)機(jī)器的時(shí)候,感覺(jué)可以接受,但是如果是100臺(tái)機(jī)器組合起來(lái)呢,于是出現(xiàn)了許多分布式基礎(chǔ)設(shè)施來(lái)處理和解決這些需求。本課題將從眾多基礎(chǔ)設(shè)施中選出一部分來(lái)實(shí)現(xiàn)一個(gè)簡(jiǎn)單的分布式即時(shí)通信系統(tǒng)。

    1 系統(tǒng)設(shè)計(jì)

    本課題實(shí)現(xiàn)的即時(shí)通信系統(tǒng)總體組成如圖2-1所示??蛻舳死碚撋峡梢灾С秩我饪蛻舳?,本課題客戶端僅基于網(wǎng)頁(yè)開(kāi)發(fā),服務(wù)端可以在多臺(tái)機(jī)器上部署實(shí)現(xiàn)簡(jiǎn)單的分布式,請(qǐng)求將被轉(zhuǎn)發(fā)到不同的服務(wù)器上從而實(shí)現(xiàn)負(fù)載均衡,同時(shí),服務(wù)端被分成多個(gè)模塊,可以在機(jī)器上任意部署。

    圖1 系統(tǒng)總體設(shè)計(jì)

    1.1 客戶端

    客戶端功能如圖2所示,可以支持任意客戶端,只需建立socket或者websocket即可,本課題僅使用基于網(wǎng)頁(yè)開(kāi)發(fā)的客戶端驗(yàn)證功能。由于本課題重點(diǎn)在于服務(wù)端的架構(gòu),所以所提供的業(yè)務(wù)邏輯功能只是一些基礎(chǔ)的即時(shí)通信的功能,包括注冊(cè)、登錄、初始化、好友列表、發(fā)送消息、退出、消息確認(rèn)等功能。

    圖2 客戶端功能

    1.2 服務(wù)端

    服務(wù)端功能如圖3所示,服務(wù)端將實(shí)現(xiàn)websocket的負(fù)載均衡,socket連接的管理、消息在不同服務(wù)器之間的轉(zhuǎn)發(fā)、業(yè)務(wù)邏輯功能、日志處理等功能。其中業(yè)務(wù)邏輯功能也就是為客戶端提供的所需功能的業(yè)務(wù)邏輯,如登錄、注冊(cè)、發(fā)消息、初始化、退出、消息確認(rèn)等。

    圖3 服務(wù)端功能

    1.3 系統(tǒng)詳細(xì)設(shè)計(jì)

    整個(gè)系統(tǒng)架構(gòu)如圖4所示,為了實(shí)現(xiàn)系統(tǒng)的解耦,整個(gè)系統(tǒng)被分為8個(gè)模塊,各個(gè)模塊各自負(fù)責(zé)相應(yīng)功能,模塊之間使用MQ實(shí)現(xiàn)通信。Nginx負(fù)責(zé)不同服務(wù)之間的負(fù)載均衡,數(shù)據(jù)庫(kù)將使用Redis作為緩存、MySQL作為持久化存儲(chǔ)。

    客戶端模塊為webIM。服務(wù)端模塊為4個(gè)可運(yùn)行模塊和3個(gè)依賴模塊,可運(yùn)行模塊為webSocketServer、exchangeServer、dealUnit、imLoggerServer,分別負(fù)責(zé)連接管理、消息在服務(wù)器之間的轉(zhuǎn)發(fā)、業(yè)務(wù)邏輯處理、多機(jī)日志處理,依賴模塊將作為運(yùn)行模塊的依賴包被引入,分別為 imEntity、dealLogic、dataOperation,分別負(fù)責(zé)整個(gè)系統(tǒng)的實(shí)體類(lèi)、業(yè)務(wù)邏輯處理類(lèi)、數(shù)據(jù)庫(kù)操作。

    下面將對(duì)各個(gè)模塊進(jìn)行消息介紹。

    (1)webIM模塊

    該模塊包含與用戶交互的Web頁(yè)面,在webIM中發(fā)起socket請(qǐng)求,并解析請(qǐng)求的返回值。

    傳統(tǒng)的HTTP請(qǐng)求是無(wú)法實(shí)現(xiàn)被動(dòng)接受消息的,只能主動(dòng)的去請(qǐng)求從而獲得回復(fù)。最容易想到的解決方法就是輪詢,即客戶端定時(shí)向服務(wù)器發(fā)送AJAX請(qǐng)求,服務(wù)器接到請(qǐng)求后馬上返回響應(yīng)信息并關(guān)閉連接。毫無(wú)疑問(wèn)這會(huì)造成很多無(wú)用的請(qǐng)求,浪費(fèi)帶寬和服務(wù)器資源。常用的一種解決方式是長(zhǎng)輪詢,客戶端向服務(wù)器發(fā)送AJAX請(qǐng)求,服務(wù)器接到請(qǐng)求后維持住連接,直到有新消息才返回響應(yīng)信息并關(guān)閉連接,客戶端處理完響應(yīng)信息后再向服務(wù)器發(fā)送新的請(qǐng)求,但是這種方法在服務(wù)器維持連接時(shí)會(huì)消耗資源,也難于管理維護(hù)。HTML5規(guī)范的出現(xiàn)帶來(lái)了一種全新的解決方案websocket,它可以在瀏覽器和服務(wù)器之間建立TCP連接,可以做到全雙工通信,現(xiàn)在大部分瀏覽器都已經(jīng)和支持websocket。所以本課題的網(wǎng)頁(yè)端選擇websocket來(lái)實(shí)現(xiàn)。

    圖4 發(fā)消息流程

    由于websocket是異步處理,不是很易于開(kāi)發(fā),所以在js中對(duì)websocket進(jìn)行了封裝。對(duì)于請(qǐng)求類(lèi)消息,客戶端并不知道應(yīng)答會(huì)在什么時(shí)候返回,只需要在發(fā)起請(qǐng)求的同時(shí)注冊(cè)回調(diào)函數(shù),在應(yīng)答返回的時(shí)候會(huì)自動(dòng)查詢到相應(yīng)的回調(diào)函數(shù)進(jìn)行執(zhí)行。返回消息和回調(diào)的對(duì)應(yīng)關(guān)系則是由請(qǐng)求包中的消息序號(hào)決定的。對(duì)于通知類(lèi)消息,客戶端不知道何時(shí)會(huì)收到消息,可以在js加載的時(shí)候,把對(duì)應(yīng)消息種類(lèi)的回調(diào)注冊(cè)好,之后便不需要再去關(guān)注通知類(lèi)消息。

    (2)webSocketServer模塊

    使用Netty框架,僅僅使用少數(shù)幾個(gè)線程便可以管理所有websocket的連接和請(qǐng)求。該模塊的核心即維護(hù)了一個(gè)Map,記錄了用戶的連接和session的對(duì)應(yīng)關(guān)系,保證可以通過(guò)session找到相應(yīng)的用戶連接。

    (3)exchangeServer模塊

    該模塊被用于管理notice消息在不同服務(wù)器之間的轉(zhuǎn)發(fā),在收到notice消息后,會(huì)檢查消息dataPack?ageInner包中target字段,從Redis中查詢目標(biāo)用戶的所有登錄地址,如果是在本機(jī)上登錄則直接發(fā)送給websocketServer,如果不是則根據(jù)session中的服務(wù)器地址信息找到相應(yīng)的服務(wù)器轉(zhuǎn)發(fā)。

    (4)dealUnit模塊

    根據(jù)不同的請(qǐng)求命令,通過(guò)工廠方法獲取dealLog?ic中相應(yīng)的類(lèi)來(lái)處理業(yè)務(wù)邏輯。該模塊的存在使得業(yè)務(wù)可以任意的橫向擴(kuò)展,當(dāng)業(yè)務(wù)模塊壓力過(guò)大時(shí),可以部署多個(gè)dealUnit模塊,只需在exchangeServer模塊做相應(yīng)的選擇,最簡(jiǎn)單的就是隨機(jī)選擇不同的dealUnit模塊。

    (5)dealLogic模塊

    該模塊包含了所有請(qǐng)求的業(yè)務(wù)邏輯,每一種請(qǐng)求命令都有一個(gè)對(duì)應(yīng)的處理類(lèi),在對(duì)應(yīng)的處理類(lèi)中會(huì)進(jìn)行相應(yīng)的數(shù)據(jù)存取和業(yè)務(wù)邏輯處理。對(duì)于req類(lèi)消息,會(huì)返回一個(gè)ack;對(duì)于notice消息,不僅會(huì)返回一個(gè)ack,還會(huì)將notice轉(zhuǎn)發(fā)給需要發(fā)送的目標(biāo)用戶。

    (6)dataOperation模塊

    Redis:主要存放一些緩存數(shù)據(jù)以及一些少量的id相關(guān)數(shù)據(jù)。

    MySQL:主要存放一些需要同步的數(shù)據(jù),即Redis中設(shè)置了過(guò)期時(shí)限的數(shù)據(jù)。

    處理數(shù)據(jù)庫(kù)請(qǐng)求操作,包括Redis、MySQL,主要的作用在于代理Redis的請(qǐng)求,如果是讀操作,查詢Re?dis后發(fā)現(xiàn)其中沒(méi)有數(shù)據(jù),則需要從MySQL中查詢出來(lái)存入Redis并設(shè)置有效期。如果是寫(xiě)操作,并且是需要同步到MySQL中的key則Redis和MySQL中的數(shù)據(jù)都需要更新。

    由于Redis是內(nèi)存數(shù)據(jù)庫(kù),所以它的速度比關(guān)系型數(shù)據(jù)庫(kù)MySQL快得多,所以首先會(huì)去Redis中查詢數(shù)據(jù),如果Redis中沒(méi)有才會(huì)去MySQL中查詢。但是由于Redis使用的是內(nèi)存空間,所以除了一些id關(guān)系的key,其他的存放較大數(shù)據(jù)的key都設(shè)置了有效期,并在MySQL中做了備份,在Redis中數(shù)據(jù)過(guò)期時(shí),再?gòu)腗ySQL中查詢。雖然Redis也有VM,但是其只會(huì)在內(nèi)存不夠用的時(shí)候才會(huì)觸發(fā)。

    (7)imEntity模塊

    管理所有模塊公用的類(lèi),如日志發(fā)送、常量、Redis?Key、工具類(lèi)等。

    (8)imLoggerServer模塊

    日志收集模塊,用RabbitMQ實(shí)現(xiàn)的一個(gè)簡(jiǎn)單日志收集模塊,啟動(dòng)該模塊后,會(huì)從MQ獲取所有的收集的日志數(shù)據(jù)交給log4j處理。

    在單機(jī)的情況下,從imEntity獲取的日志記錄類(lèi)只會(huì)調(diào)用log4j將日志輸出到本地;但是log4j并沒(méi)有提供日志的接口,所以不能實(shí)現(xiàn)不同情況使用不同的日志處理,為此slf4j提供了日志的接口使得在不同情況下使用不同的日志處理成為了可能性。在多機(jī)情況下,imEntity返回的日志類(lèi)將會(huì)把日志發(fā)往MQ中。從而實(shí)現(xiàn)了簡(jiǎn)單的分布式日志的收集。

    在開(kāi)啟日志的時(shí)候,各個(gè)模塊會(huì)將不同級(jí)別的日志發(fā)送到MQ的相應(yīng)級(jí)別的隊(duì)列中,在啟動(dòng)imLog?gerServer模塊時(shí),會(huì)監(jiān)聽(tīng)相應(yīng)隊(duì)列并且做出相應(yīng)處理,本課題僅僅是將其交給log4j存于本地。

    (9)流程實(shí)例

    各個(gè)模塊都負(fù)責(zé)自己相應(yīng)的功能,下面以一個(gè)用戶的登錄為例,詳細(xì)說(shuō)明系統(tǒng)各個(gè)模塊的運(yùn)作流程:

    ①用戶打開(kāi)登錄頁(yè)面,頁(yè)面被加載,向Nginx發(fā)起創(chuàng)建socket連接的請(qǐng)求。

    ②Nginx接受到了websocket連接請(qǐng)求之后,根據(jù)配置,將請(qǐng)求分?jǐn)偟絯ebsocketServer上。

    ③websocketServer與用戶創(chuàng)建socket連接,并將該連接保存下來(lái),之后轉(zhuǎn)發(fā)給exchangeServer模塊。

    ④exchangeServer接受到websocketServer發(fā)送的請(qǐng)求之后將請(qǐng)求轉(zhuǎn)給dealUnit模塊處理。

    ⑤dealUnit模塊接受到請(qǐng)求之后,根據(jù)請(qǐng)求的參數(shù),發(fā)現(xiàn)是一個(gè)登錄的請(qǐng)求,調(diào)用dealLogic中相應(yīng)的業(yè)務(wù)邏輯類(lèi)來(lái)處理這個(gè)請(qǐng)求。

    ⑥dealLogic處理登錄請(qǐng)求,從數(shù)據(jù)庫(kù)中查詢數(shù)據(jù),看Redis中是否有用戶信息,如果沒(méi)有還需要從MySQL查詢,返回用戶的信息給dealUnit模塊,deal?Unit將返回的數(shù)據(jù)返回給exchangeServer。

    ⑦exchangeServer會(huì)根據(jù)信息的內(nèi)容決定是否需要轉(zhuǎn)發(fā),由于是req類(lèi)型的包,所以不需要轉(zhuǎn)發(fā),直接轉(zhuǎn)發(fā)給websocketServer。

    ⑧websocketServer根據(jù)返回的內(nèi)容,從之前存儲(chǔ)的連接中找到對(duì)應(yīng)的請(qǐng)求用戶的那條連接,將數(shù)據(jù)返回給用戶。

    2 系統(tǒng)實(shí)現(xiàn)

    2.1 系統(tǒng)模塊功能

    (1)負(fù)載均衡

    負(fù)載均衡通常指將請(qǐng)求按照一定策略分?jǐn)偟蕉鄠€(gè)處理單元處理,這樣也就能夠防止單個(gè)單元的負(fù)載過(guò)高,負(fù)載均衡可以分為硬負(fù)載均衡,軟負(fù)載均衡。硬負(fù)載均衡即使用硬件來(lái)實(shí)現(xiàn)負(fù)載均衡,如F5,雖然硬件有很好的高可用性,但是成本偏高;軟負(fù)載均衡也就是通過(guò)軟件來(lái)實(shí)現(xiàn)負(fù)載均衡,常用的有Nginx的反向代理,但是如果發(fā)生了單點(diǎn)故障,整個(gè)系統(tǒng)從入口就無(wú)法進(jìn)入了,為了防止單點(diǎn)故障,最簡(jiǎn)單的方法就是配置多臺(tái)Nginx,通過(guò)DNS輪詢,將用戶的請(qǐng)求分到不同的反向代理中。當(dāng)然也可以使用LVS來(lái)代替,它使用集群技術(shù)從Linux系統(tǒng)層面實(shí)現(xiàn)了高性能、高可用、負(fù)載均衡。但是這些都存在一個(gè)問(wèn)題,它們無(wú)法保證把請(qǐng)求分給一個(gè)可用的處理單元,也就是說(shuō)如果后臺(tái)的一個(gè)處理單元發(fā)生了故障,它們并不能發(fā)現(xiàn),仍然會(huì)將請(qǐng)求分?jǐn)傔^(guò)去,這就無(wú)法保證高可用性。為了處理這個(gè)問(wèn)題,就需要用到keepalived,它可以用來(lái)檢測(cè)服務(wù)狀態(tài)存活性。

    本課題使用Nginx反向代理來(lái)實(shí)現(xiàn)websocket請(qǐng)求的負(fù)載均衡,從而將各個(gè)請(qǐng)求分發(fā)到了各個(gè)web?SockerServer模塊。

    (2)模塊間通信

    在本課題中,為了降低系統(tǒng)的耦合性,將整個(gè)系統(tǒng)拆分成了多個(gè)模塊,但是各個(gè)模塊之間的相互通信就成了亟待解決的問(wèn)題,如果是單機(jī)的進(jìn)程通信,Linux可以使用管道(pipe),但是多臺(tái)機(jī)器之間模塊的通信,只能通過(guò)手動(dòng)創(chuàng)建socket去進(jìn)行數(shù)據(jù)的交互了,消息隊(duì)列中間件就是對(duì)這一系列問(wèn)題的解決與完善,內(nèi)置完善的處理機(jī)制,實(shí)現(xiàn)了高性能,高可用,可伸縮和最終一致性架構(gòu)。常用的消息隊(duì)列有ActiveMQ,Rabbit?MQ,ZeroMQ,Kafka,RocketMQ等。消息隊(duì)列中間件是分布式系統(tǒng)中重要的組件,主要解決應(yīng)用耦合,異步消息,流量削鋒等問(wèn)題。

    本課題使用RabbitMQ作為消息中間件來(lái)實(shí)現(xiàn)各個(gè)模塊的通信和解耦。

    (3)分布式緩存

    當(dāng)傳統(tǒng)數(shù)據(jù)庫(kù)面臨大規(guī)模數(shù)據(jù)訪問(wèn)時(shí),磁盤(pán)I/O往往成為性能瓶頸,從而導(dǎo)致過(guò)高的響應(yīng)延遲。分布式緩存將高速內(nèi)存作為數(shù)據(jù)對(duì)象的存儲(chǔ)介質(zhì),數(shù)據(jù)以key/value形式存儲(chǔ),理想情況下可以獲得內(nèi)存級(jí)的讀寫(xiě)性能。

    本課題在dataOperation模塊中使用Redis作為緩存,從而提高I/O的讀寫(xiě)。

    (4)分布式日志收集

    單機(jī)上的日志處理,只需要把日志輸出到相應(yīng)的文件或是其他地方就可以了,有類(lèi)似于log4j、slf4j等豐富的類(lèi)庫(kù)可以通過(guò)簡(jiǎn)單的配置非常容易的實(shí)現(xiàn)日志的處理。而一旦轉(zhuǎn)移到多臺(tái)機(jī)器上,日志的收集就會(huì)變得復(fù)雜。

    本課題在imLoggerServer中使用RabbitMQ實(shí)現(xiàn)一個(gè)非常簡(jiǎn)單了日志收集模塊。

    2.2 系統(tǒng)業(yè)務(wù)邏輯

    (1)注冊(cè)

    在用戶填寫(xiě)完注冊(cè)信息之后,會(huì)向服務(wù)端發(fā)起注冊(cè)請(qǐng)求,服務(wù)器在接受到用戶名密碼之后,會(huì)將密碼加salt后取得MD5存入到MySQL和Redis中。

    (2)登錄

    服務(wù)器在接受到賬號(hào)密碼,驗(yàn)證了賬號(hào)密碼的合法性之后,會(huì)將登錄者本次連接的session存入Redis,以便別人找到該用戶登錄的服務(wù)器。在socket斷開(kāi)之后,服務(wù)端會(huì)自動(dòng)調(diào)用下線指令去刪除Redis中的ses?sion等數(shù)據(jù)。

    (3)初始化

    在客戶端收到成功登錄的ack之后,會(huì)發(fā)起初始化請(qǐng)求,拉取好友和SYNC序號(hào)等信息。

    (4)發(fā)消息

    可以給好友發(fā)送消息,支持一個(gè)用戶同時(shí)在多個(gè)地方登陸。具體流程如圖5所示。

    圖5 發(fā)消息流程

    如果用戶C1在服務(wù)器S1上登錄,用戶C2在服務(wù)器S2上登錄,C1發(fā)送消息給C2時(shí),服務(wù)器C1在收到notice消息之后,會(huì)返回給C1一個(gè)ack告知客戶端服務(wù)器成功收到消息,這條消息在經(jīng)過(guò)dealUnit被返回到exchangeServer的時(shí)候,exchangeServer查詢r(jià)edis后發(fā)現(xiàn)用戶C2所登錄的服務(wù)器不是當(dāng)前服務(wù)器,于是轉(zhuǎn)發(fā)給C2所在服務(wù)器S2。S2的exchangeServer收到之后轉(zhuǎn)發(fā)給了它的websocketServer,最終C2成功接受到了notice消息。

    (5)消息確認(rèn)

    針對(duì)于notice消息的防丟包機(jī)制,由于notice消息只是被動(dòng)的接受,如果服務(wù)器發(fā)送了這條消息,但是用戶沒(méi)有接收到,這就導(dǎo)致了消息存在丟失的風(fēng)險(xiǎn),于是增加了同步(synchronize,sync)機(jī)制。

    用戶在登錄時(shí),會(huì)返回該用戶最新的sync序號(hào),存入本地。服務(wù)器在轉(zhuǎn)發(fā)notice消息之前,會(huì)給這條消息增加一個(gè)序號(hào),并將該條消息保存,在客戶端接受到消息后,將這條消息的序號(hào)與本地的sync消息序號(hào)對(duì)比,如果發(fā)現(xiàn)本地的序號(hào)等于消息的序號(hào)加一,則說(shuō)明之前沒(méi)有丟失的消息,客戶端會(huì)發(fā)送一條特定的req(FIN消息)告知服務(wù)器它成功接收到了消息,服務(wù)器在接受到該條req后,會(huì)返回一個(gè)ack,并將那條保存的notice刪除。如果客戶端發(fā)現(xiàn)本地的序號(hào)不對(duì),則發(fā)送一條req(sync消息),告知服務(wù)器將該序號(hào)之后的數(shù)據(jù)再發(fā)一遍。

    3 結(jié)語(yǔ)

    本課題主要專(zhuān)注于服務(wù)端的架構(gòu),結(jié)構(gòu)上實(shí)現(xiàn)了負(fù)載均衡、模塊間通信、連接管理、分布式緩存、分布式日志收集等功能,實(shí)現(xiàn)了服務(wù)端的橫向擴(kuò)展,業(yè)務(wù)邏輯上則實(shí)現(xiàn)了一些簡(jiǎn)單的即時(shí)通信系統(tǒng)功能,如注冊(cè)、登錄、初始化、好友信息、發(fā)送消息、消息確認(rèn)等功能。

    [1]李代立,陳榕.WebSocket在Web實(shí)時(shí)通信領(lǐng)域的研究[J].電腦知識(shí)與技術(shù),2010,06(28):7923-7925

    [2]李璐,張廣泉.消息中間件的體系結(jié)構(gòu)研究[J].蘇州大學(xué)學(xué)報(bào)(工科版),2007,27(3):10-14

    [3]代超,鄧中亮.基于Netty的面向移動(dòng)終端的推送服務(wù)設(shè)計(jì)[J].軟件,2015(12):1-4

    [4]曾超宇,李金香.Redis在高速緩存系統(tǒng)中的應(yīng)用[J].微型機(jī)與應(yīng)用,2013,32(12):11-13

    [5]劉影,季波.企業(yè)級(jí)即時(shí)通信系統(tǒng)的應(yīng)用研究[J].現(xiàn)代商貿(mào)工業(yè),2009,19(20):36-36

    Design and Implementation of Distributed Instant Messaging System

    YANG Jun,XU Di
    (School of Computer Science and Engineering,Sanjiang University,Nanjing 210000)

    With the continuous development of Internet technology,instant communication software has greatly affected the communication between the people,with the instant communication function more and more powerful,more and more people rely on instant communication soft?ware.But with the increase of the number of users,the stand-alone system has been difficult to support the huge user base,so for the hori?zontal expansion of the system,from the stand-alone mode into a distributed mode has become the mainstream trend of instant messaging system.Describes the research background and significance of the distributed instant messaging system,and then focuses on the detailed design of the system,as well as the function of each module.Finally,presents the main functions of the distributed instant messenger sys?tem.

    Instant Messaging;Netty;Distributed System

    1007-1423(2017)24-0071-05

    10.3969/j.issn.1007-1423.2017.24.017

    楊君,講師,研究方向?yàn)榉植际接?jì)算

    徐迪(1995-),男,江蘇南京人,工程師,研究方向?yàn)榉植际较到y(tǒng)、軟件工程

    2017-05-25

    2017-08-12

    猜你喜歡
    服務(wù)端日志消息
    一名老黨員的工作日志
    扶貧日志
    心聲歌刊(2020年4期)2020-09-07 06:37:14
    一張圖看5G消息
    云存儲(chǔ)中基于相似性的客戶-服務(wù)端雙端數(shù)據(jù)去重方法
    新時(shí)期《移動(dòng)Web服務(wù)端開(kāi)發(fā)》課程教學(xué)改革的研究
    在Windows Server 2008上創(chuàng)建應(yīng)用
    游學(xué)日志
    消息
    消息
    消息
    日韩 欧美 亚洲 中文字幕| 啪啪无遮挡十八禁网站| 在线视频色国产色| 久久精品亚洲精品国产色婷小说| 人人妻人人澡人人看| 一个人免费在线观看的高清视频| 男女午夜视频在线观看| 日日夜夜操网爽| 十八禁人妻一区二区| 久久天堂一区二区三区四区| 麻豆成人av在线观看| 国产亚洲欧美精品永久| 大型av网站在线播放| 丰满的人妻完整版| 97碰自拍视频| 男女午夜视频在线观看| 国产欧美日韩一区二区三| 亚洲精品国产精品久久久不卡| 天天影视国产精品| 亚洲自偷自拍图片 自拍| 成年女人毛片免费观看观看9| 午夜91福利影院| 欧美黄色淫秽网站| 交换朋友夫妻互换小说| 亚洲激情在线av| 少妇粗大呻吟视频| 色综合婷婷激情| av网站在线播放免费| 久久精品成人免费网站| 亚洲av成人av| 亚洲少妇的诱惑av| 亚洲色图av天堂| 淫妇啪啪啪对白视频| 国产精品美女特级片免费视频播放器 | 丝袜在线中文字幕| 在线国产一区二区在线| 精品午夜福利视频在线观看一区| a在线观看视频网站| 女生性感内裤真人,穿戴方法视频| av天堂在线播放| 一级片'在线观看视频| 中亚洲国语对白在线视频| 亚洲国产精品999在线| 在线国产一区二区在线| 一级片免费观看大全| 男女床上黄色一级片免费看| 日韩精品青青久久久久久| 在线十欧美十亚洲十日本专区| 国产精品永久免费网站| av网站免费在线观看视频| 亚洲av美国av| 日韩欧美国产一区二区入口| 午夜激情av网站| 久久热在线av| 精品久久久久久电影网| 满18在线观看网站| 亚洲精品美女久久久久99蜜臀| 婷婷精品国产亚洲av在线| 动漫黄色视频在线观看| 婷婷丁香在线五月| 亚洲欧美激情综合另类| 亚洲五月天丁香| 俄罗斯特黄特色一大片| 19禁男女啪啪无遮挡网站| 久久国产精品男人的天堂亚洲| 午夜精品国产一区二区电影| 夜夜看夜夜爽夜夜摸 | 精品国产亚洲在线| 亚洲av五月六月丁香网| 色综合婷婷激情| 精品国内亚洲2022精品成人| 亚洲男人的天堂狠狠| 99热国产这里只有精品6| 国产亚洲欧美精品永久| 真人一进一出gif抽搐免费| 电影成人av| 日本a在线网址| 视频区欧美日本亚洲| 亚洲第一青青草原| 日韩 欧美 亚洲 中文字幕| 男女午夜视频在线观看| 精品电影一区二区在线| 999久久久精品免费观看国产| 一本大道久久a久久精品| av国产精品久久久久影院| 制服人妻中文乱码| 国产精品永久免费网站| av网站在线播放免费| 亚洲成国产人片在线观看| 国产极品粉嫩免费观看在线| 在线观看免费日韩欧美大片| 午夜福利在线观看吧| cao死你这个sao货| 俄罗斯特黄特色一大片| 国产免费现黄频在线看| 亚洲精品一二三| 啦啦啦免费观看视频1| 免费看a级黄色片| 午夜精品国产一区二区电影| 日本撒尿小便嘘嘘汇集6| tocl精华| 午夜免费激情av| 一级,二级,三级黄色视频| 高清黄色对白视频在线免费看| 一个人免费在线观看的高清视频| 久久午夜综合久久蜜桃| 桃色一区二区三区在线观看| 欧美乱妇无乱码| www.www免费av| 老鸭窝网址在线观看| а√天堂www在线а√下载| 成人亚洲精品一区在线观看| 亚洲熟妇熟女久久| 99国产精品免费福利视频| 国产精品国产av在线观看| 丁香欧美五月| 日本五十路高清| 亚洲专区国产一区二区| 丝袜美足系列| 精品卡一卡二卡四卡免费| netflix在线观看网站| 精品高清国产在线一区| 黄色毛片三级朝国网站| 麻豆一二三区av精品| 窝窝影院91人妻| 一级毛片女人18水好多| 午夜免费鲁丝| 国产99久久九九免费精品| 亚洲色图综合在线观看| 人人澡人人妻人| 淫妇啪啪啪对白视频| 日日夜夜操网爽| 真人做人爱边吃奶动态| 久久久久久久久免费视频了| 两个人看的免费小视频| 黄片播放在线免费| 看免费av毛片| 91精品国产国语对白视频| 国产成人av激情在线播放| 精品久久久久久久久久免费视频 | 欧美人与性动交α欧美软件| 欧美日韩瑟瑟在线播放| 不卡av一区二区三区| 免费在线观看视频国产中文字幕亚洲| 欧美乱码精品一区二区三区| 国产亚洲精品一区二区www| 咕卡用的链子| 欧美乱码精品一区二区三区| 手机成人av网站| 亚洲欧美激情在线| ponron亚洲| www.999成人在线观看| 中文欧美无线码| 亚洲情色 制服丝袜| 精品国产超薄肉色丝袜足j| 日韩 欧美 亚洲 中文字幕| 欧美日本中文国产一区发布| 欧美乱妇无乱码| 91大片在线观看| 亚洲成人免费电影在线观看| 1024香蕉在线观看| 日本免费a在线| 男人操女人黄网站| 淫妇啪啪啪对白视频| 亚洲欧美精品综合一区二区三区| 91字幕亚洲| 一区福利在线观看| 国产一区二区三区综合在线观看| 天堂动漫精品| 日韩av在线大香蕉| 国产成人精品无人区| 精品久久久久久电影网| 亚洲欧美精品综合久久99| 法律面前人人平等表现在哪些方面| 在线观看免费高清a一片| 亚洲欧美激情在线| 亚洲国产毛片av蜜桃av| 免费av毛片视频| 久久狼人影院| 免费看a级黄色片| 久久久久久久午夜电影 | 亚洲情色 制服丝袜| 人妻久久中文字幕网| 国产麻豆69| 人人澡人人妻人| 成年版毛片免费区| 大型黄色视频在线免费观看| 国产精品久久久人人做人人爽| 99国产精品一区二区蜜桃av| www.www免费av| 麻豆国产av国片精品| 性少妇av在线| 国产日韩一区二区三区精品不卡| 国产成人啪精品午夜网站| 在线播放国产精品三级| 美女福利国产在线| 国产精品久久久久成人av| 国产精品一区二区精品视频观看| 国产无遮挡羞羞视频在线观看| 波多野结衣高清无吗| 在线观看一区二区三区| 国产精品免费一区二区三区在线| 在线免费观看的www视频| 91成年电影在线观看| 国产精品 国内视频| 高清黄色对白视频在线免费看| 亚洲精品国产一区二区精华液| 老司机亚洲免费影院| 国产精品香港三级国产av潘金莲| 在线天堂中文资源库| 亚洲黑人精品在线| 97人妻天天添夜夜摸| 在线观看免费高清a一片| 热99国产精品久久久久久7| 国产av在哪里看| 琪琪午夜伦伦电影理论片6080| 亚洲精品国产精品久久久不卡| 中文字幕人妻丝袜制服| 女人被躁到高潮嗷嗷叫费观| 男女下面进入的视频免费午夜 | 亚洲 欧美 日韩 在线 免费| 亚洲av五月六月丁香网| 天天躁狠狠躁夜夜躁狠狠躁| 亚洲av成人av| 99riav亚洲国产免费| svipshipincom国产片| 国产成人欧美| 老汉色av国产亚洲站长工具| 国产国语露脸激情在线看| 成人影院久久| 久久国产精品影院| 一a级毛片在线观看| 免费人成视频x8x8入口观看| 成熟少妇高潮喷水视频| 国产亚洲精品久久久久久毛片| 日韩欧美一区二区三区在线观看| avwww免费| 日韩三级视频一区二区三区| 51午夜福利影视在线观看| 青草久久国产| 久久久国产成人精品二区 | 日韩欧美国产一区二区入口| 人人妻人人爽人人添夜夜欢视频| 精品国产乱码久久久久久男人| x7x7x7水蜜桃| 黄色怎么调成土黄色| 国产成人欧美| 大陆偷拍与自拍| 久久久久久久久久久久大奶| 久久香蕉激情| 国产成人欧美在线观看| 50天的宝宝边吃奶边哭怎么回事| 在线十欧美十亚洲十日本专区| 少妇粗大呻吟视频| 日韩欧美一区二区三区在线观看| 99精国产麻豆久久婷婷| 午夜精品在线福利| 人妻久久中文字幕网| 一级毛片高清免费大全| 国产精品亚洲一级av第二区| 精品久久久久久,| 99在线人妻在线中文字幕| 亚洲国产欧美一区二区综合| 国产精品秋霞免费鲁丝片| 夫妻午夜视频| 国产亚洲精品一区二区www| 亚洲精品中文字幕在线视频| 男女下面进入的视频免费午夜 | 国产成人av教育| 国产麻豆69| 可以免费在线观看a视频的电影网站| xxx96com| 色老头精品视频在线观看| 乱人伦中国视频| 亚洲,欧美精品.| 国产精品九九99| 嫁个100分男人电影在线观看| 色综合欧美亚洲国产小说| 亚洲国产欧美网| 亚洲熟女毛片儿| 午夜a级毛片| 久久中文字幕人妻熟女| 午夜精品在线福利| 男女高潮啪啪啪动态图| 精品国产国语对白av| 免费在线观看影片大全网站| 日韩欧美一区二区三区在线观看| 免费观看人在逋| 99久久国产精品久久久| 搡老乐熟女国产| 久久精品亚洲精品国产色婷小说| 99久久久亚洲精品蜜臀av| 免费av毛片视频| 国产成人精品无人区| 国产亚洲欧美98| 国产1区2区3区精品| 一级a爱视频在线免费观看| 亚洲国产毛片av蜜桃av| 国产一区二区在线av高清观看| 电影成人av| 中出人妻视频一区二区| 在线观看舔阴道视频| 三上悠亚av全集在线观看| 88av欧美| 这个男人来自地球电影免费观看| 成熟少妇高潮喷水视频| 久久精品亚洲精品国产色婷小说| 天天躁夜夜躁狠狠躁躁| 中文字幕人妻丝袜一区二区| 老鸭窝网址在线观看| 91麻豆av在线| 日韩国内少妇激情av| 99国产极品粉嫩在线观看| 国产亚洲欧美在线一区二区| 成人手机av| 丰满迷人的少妇在线观看| 丰满的人妻完整版| 天堂中文最新版在线下载| 免费在线观看黄色视频的| 日韩大尺度精品在线看网址 | 亚洲欧美精品综合一区二区三区| 99re在线观看精品视频| 少妇裸体淫交视频免费看高清 | 日韩av在线大香蕉| 自拍欧美九色日韩亚洲蝌蚪91| 欧美人与性动交α欧美软件| 男女午夜视频在线观看| 亚洲av电影在线进入| 国产成人av教育| 在线观看免费高清a一片| 欧美日韩亚洲高清精品| 天堂√8在线中文| 亚洲色图 男人天堂 中文字幕| 天堂影院成人在线观看| 日韩欧美国产一区二区入口| 日本免费a在线| 国产高清videossex| 亚洲成人免费av在线播放| 国产欧美日韩一区二区精品| 久久影院123| 变态另类成人亚洲欧美熟女 | 午夜a级毛片| 黑丝袜美女国产一区| 免费人成视频x8x8入口观看| 成年女人毛片免费观看观看9| 91九色精品人成在线观看| 激情视频va一区二区三区| 午夜视频精品福利| 1024香蕉在线观看| 19禁男女啪啪无遮挡网站| 欧美日韩一级在线毛片| 91大片在线观看| 亚洲中文字幕日韩| 国产精品国产av在线观看| 亚洲av熟女| 一级片'在线观看视频| 一边摸一边抽搐一进一出视频| 在线观看一区二区三区| 久久亚洲真实| 国产成人啪精品午夜网站| 变态另类成人亚洲欧美熟女 | 婷婷六月久久综合丁香| 1024视频免费在线观看| 久久午夜综合久久蜜桃| 日本黄色视频三级网站网址| 天堂动漫精品| 欧美日韩福利视频一区二区| 美女福利国产在线| 亚洲少妇的诱惑av| 国产伦人伦偷精品视频| 色综合欧美亚洲国产小说| 欧美不卡视频在线免费观看 | 久久精品国产亚洲av香蕉五月| 少妇的丰满在线观看| 老司机深夜福利视频在线观看| 日本欧美视频一区| 免费搜索国产男女视频| 高清在线国产一区| 精品国产超薄肉色丝袜足j| 免费高清视频大片| 久久香蕉激情| 亚洲中文日韩欧美视频| 亚洲成人免费av在线播放| 欧美成人性av电影在线观看| 校园春色视频在线观看| 一边摸一边做爽爽视频免费| 岛国视频午夜一区免费看| 在线观看免费午夜福利视频| 丝袜美足系列| 国产成人系列免费观看| 一级片免费观看大全| 人人澡人人妻人| www.自偷自拍.com| 18禁美女被吸乳视频| 亚洲男人的天堂狠狠| 亚洲中文字幕日韩| 99在线人妻在线中文字幕| 久久这里只有精品19| 日韩国内少妇激情av| 国产蜜桃级精品一区二区三区| 两性夫妻黄色片| 亚洲中文日韩欧美视频| 欧美av亚洲av综合av国产av| 久久亚洲真实| 黄片播放在线免费| 黑人巨大精品欧美一区二区蜜桃| 午夜亚洲福利在线播放| 国产成人啪精品午夜网站| 亚洲成人免费电影在线观看| 欧美日本中文国产一区发布| 性少妇av在线| 欧美不卡视频在线免费观看 | 久久久水蜜桃国产精品网| 国产国语露脸激情在线看| 欧美乱色亚洲激情| 婷婷六月久久综合丁香| 国产欧美日韩一区二区精品| 韩国av一区二区三区四区| 亚洲片人在线观看| 成人黄色视频免费在线看| 好看av亚洲va欧美ⅴa在| 精品国产一区二区三区四区第35| 亚洲人成电影观看| 怎么达到女性高潮| 国产亚洲精品第一综合不卡| 亚洲av熟女| 久久人人爽av亚洲精品天堂| 日韩欧美国产一区二区入口| 国产成人精品无人区| 夜夜躁狠狠躁天天躁| 色在线成人网| 午夜免费激情av| 9191精品国产免费久久| 一区二区日韩欧美中文字幕| 久久香蕉激情| 岛国在线观看网站| 99国产精品免费福利视频| 在线av久久热| 在线观看66精品国产| 亚洲精品国产精品久久久不卡| 久久草成人影院| 激情视频va一区二区三区| 99精国产麻豆久久婷婷| 国产一区在线观看成人免费| 91国产中文字幕| 香蕉久久夜色| 亚洲成人国产一区在线观看| 亚洲人成伊人成综合网2020| 欧美精品亚洲一区二区| 国产精品九九99| 久久久国产一区二区| 欧美日韩亚洲高清精品| 国产成人精品无人区| xxxhd国产人妻xxx| 天天影视国产精品| 真人一进一出gif抽搐免费| 老司机深夜福利视频在线观看| 亚洲第一青青草原| 两人在一起打扑克的视频| 一边摸一边做爽爽视频免费| 国产精品九九99| 午夜久久久在线观看| 老汉色∧v一级毛片| 美女高潮喷水抽搐中文字幕| 热99re8久久精品国产| 麻豆成人av在线观看| 俄罗斯特黄特色一大片| 欧美久久黑人一区二区| 精品久久久久久,| 99在线视频只有这里精品首页| 日韩精品中文字幕看吧| 五月开心婷婷网| 男女高潮啪啪啪动态图| 正在播放国产对白刺激| ponron亚洲| 久久精品91无色码中文字幕| 午夜91福利影院| 久久中文看片网| 精品欧美一区二区三区在线| 女人被躁到高潮嗷嗷叫费观| 夜夜爽天天搞| 欧美日韩国产mv在线观看视频| 亚洲,欧美精品.| 精品欧美一区二区三区在线| 老熟妇仑乱视频hdxx| 免费看十八禁软件| 欧美乱色亚洲激情| 成年人免费黄色播放视频| 亚洲男人的天堂狠狠| 国产精品影院久久| 青草久久国产| 手机成人av网站| 国产精品自产拍在线观看55亚洲| 成人影院久久| 日本欧美视频一区| 国产精品秋霞免费鲁丝片| 日本黄色视频三级网站网址| 亚洲一码二码三码区别大吗| 午夜日韩欧美国产| 国产精品二区激情视频| 欧美另类亚洲清纯唯美| 亚洲少妇的诱惑av| 欧美人与性动交α欧美精品济南到| 国产乱人伦免费视频| 亚洲狠狠婷婷综合久久图片| av天堂久久9| 精品一区二区三卡| 国产国语露脸激情在线看| 天堂俺去俺来也www色官网| 男女下面插进去视频免费观看| 亚洲国产欧美网| 国产成人精品在线电影| 在线观看免费高清a一片| 长腿黑丝高跟| 中文字幕最新亚洲高清| 99re在线观看精品视频| 老司机午夜十八禁免费视频| 久久久久久免费高清国产稀缺| 老鸭窝网址在线观看| 中文字幕精品免费在线观看视频| 天堂√8在线中文| 最近最新中文字幕大全电影3 | 超色免费av| 欧美精品亚洲一区二区| 精品免费久久久久久久清纯| 色播在线永久视频| 亚洲熟妇熟女久久| 丰满迷人的少妇在线观看| 免费av毛片视频| 熟女少妇亚洲综合色aaa.| 亚洲成人免费av在线播放| 午夜老司机福利片| 欧美日韩亚洲高清精品| 两性夫妻黄色片| 一边摸一边做爽爽视频免费| 交换朋友夫妻互换小说| 欧美 亚洲 国产 日韩一| 日韩视频一区二区在线观看| 国产精品电影一区二区三区| 日韩欧美三级三区| svipshipincom国产片| 啦啦啦免费观看视频1| 国产97色在线日韩免费| 波多野结衣高清无吗| 欧美日韩一级在线毛片| 亚洲精品中文字幕在线视频| 日韩大码丰满熟妇| 亚洲av五月六月丁香网| 狠狠狠狠99中文字幕| 亚洲专区字幕在线| 亚洲性夜色夜夜综合| 丝袜美足系列| 视频区欧美日本亚洲| 无限看片的www在线观看| 久久人妻福利社区极品人妻图片| 精品卡一卡二卡四卡免费| 女生性感内裤真人,穿戴方法视频| 黄色怎么调成土黄色| 天堂动漫精品| 夜夜躁狠狠躁天天躁| 国产成年人精品一区二区 | 国产高清激情床上av| 校园春色视频在线观看| 欧美在线黄色| av网站在线播放免费| 99re在线观看精品视频| 91麻豆av在线| 99re在线观看精品视频| 精品日产1卡2卡| 一a级毛片在线观看| 精品久久久久久成人av| 日本 av在线| 黄色丝袜av网址大全| 一进一出好大好爽视频| 成人影院久久| 黄片小视频在线播放| 亚洲在线自拍视频| 在线免费观看的www视频| 亚洲情色 制服丝袜| 岛国视频午夜一区免费看| 久久久久久久久免费视频了| 亚洲熟妇中文字幕五十中出 | 99热只有精品国产| 国产日韩一区二区三区精品不卡| 日韩欧美三级三区| 亚洲欧美日韩高清在线视频| 老汉色av国产亚洲站长工具| 日日摸夜夜添夜夜添小说| 啦啦啦 在线观看视频| 在线观看免费高清a一片| 国产成人精品在线电影| 黑人操中国人逼视频| 91av网站免费观看| 亚洲va日本ⅴa欧美va伊人久久| 亚洲一码二码三码区别大吗| 老熟妇乱子伦视频在线观看| 日韩人妻精品一区2区三区| 女同久久另类99精品国产91| 一区二区三区精品91| 亚洲国产欧美日韩在线播放| 一进一出抽搐动态| www.自偷自拍.com| 久久人人精品亚洲av| 精品日产1卡2卡| 在线永久观看黄色视频| 9色porny在线观看| 欧美日本中文国产一区发布| 一级毛片高清免费大全| 国产精品av久久久久免费| 一本综合久久免费| 亚洲一码二码三码区别大吗| 一二三四在线观看免费中文在| 男人的好看免费观看在线视频 | av中文乱码字幕在线| 大码成人一级视频|