sese在线视频|婷婷五月天 国产|丝袜在线一区第一页|精品国产污污网址|午夜无套内射视频|91视频亚洲第一|一区二区三区污污|毛片毛片毛片按摩按摩,摸毛片裸体|亚洲熟女av电影|在线观看欧美亚州

學(xué)習(xí)啦 > 論文大全 > 畢業(yè)論文 > 工學(xué)論文 > 通信學(xué) > 通信工程獲獎?wù)撐?2)

通信工程獲獎?wù)撐?2)

時間: 秋梅1032 分享

通信工程獲獎?wù)撐?/p>

  通信工程獲獎?wù)撐钠?

  淺談消息隊列技術(shù)在短信通信中的應(yīng)用

  1 概述

  短消息服務(wù)以簡單方便的使用功能受到大眾的歡迎,除了大量使用的手機(jī)用戶到手機(jī)用戶的短信業(yè)務(wù)之外,從信息平臺到手機(jī)用戶的短消息服務(wù)也在快速發(fā)展,該類業(yè)務(wù)已成為廣大用戶獲取信息的一種重要手段。

  由于歷史原因,舊版的農(nóng)信通業(yè)務(wù)在短信發(fā)送和接收過程中,采用了同步通信機(jī)制。當(dāng)消息發(fā)送時,需要等待接收方響應(yīng),此時發(fā)送進(jìn)程被阻塞。如果接收方響應(yīng)不及時,勢必會影響發(fā)送方的發(fā)送速度。在通信量較小的情況,此種通信機(jī)制完全能滿足業(yè)務(wù)的需求。然而,當(dāng)通信量達(dá)到每天幾百萬需求時,這樣的通信機(jī)制顯得捉襟見肘了,出現(xiàn)信息送達(dá)延時、信息積壓、記錄鎖等問題,嚴(yán)重影響到業(yè)務(wù)的發(fā)展。通過筆者對消息隊列的研究和學(xué)習(xí),在農(nóng)信通系統(tǒng)中引入了消息隊列技術(shù)。實(shí)現(xiàn)原理是:消息的發(fā)送者把自己想要發(fā)送的消息放入一個容器中,然后把它保存在系統(tǒng)公用空間的消息隊列中,本地或者是異地消息接收程序再從該消息隊列中取出它的消息進(jìn)行處理。

  2 技術(shù)方案

  2.1 消息隊列模塊

  依照中國移動點(diǎn)對點(diǎn)CMPP3.0協(xié)議,結(jié)合短信業(yè)務(wù)的個性化需求,設(shè)計了四個消息隊列,分別是:①發(fā)送消息隊列:保存由數(shù)據(jù)操作模塊提供的數(shù)據(jù),供短信發(fā)送模塊使用。

  ②Response消息隊列:當(dāng)短信發(fā)送模塊將信息發(fā)送

  得到響應(yīng)后,將該消息放入發(fā)送日志隊列中,由數(shù)據(jù)操作模塊處理。

 ?、蹱顟B(tài)報告隊列:當(dāng)接收到用戶狀態(tài)報告時,將此狀態(tài)報告放入狀態(tài)報告隊列中,由數(shù)據(jù)操作模塊處理。

 ?、躆O消息隊列:當(dāng)接收到用戶上行到短信網(wǎng)關(guān)的業(yè)務(wù)指令時,將業(yè)務(wù)指令信息放入MO隊列,由數(shù)據(jù)操作模塊處理。

  2.2 數(shù)據(jù)操作模塊

  在本實(shí)施方案中,此模塊主要進(jìn)行兩部分操作:

  2.2.1 從數(shù)據(jù)庫中讀取數(shù)據(jù)

  負(fù)責(zé)從數(shù)據(jù)庫中批量讀取系統(tǒng)中待發(fā)送的消息數(shù)據(jù),放入待發(fā)送消息隊列中,數(shù)據(jù)取出的同時從數(shù)據(jù)庫中刪除已取出的數(shù)據(jù),避免重復(fù)讀取。

  讀取數(shù)據(jù)采用實(shí)時或是間隔某個微小時間,判斷發(fā)送消息隊列中的消息量,當(dāng)發(fā)送消息隊列中消息量小于某個閥值時,主線程觸發(fā)讀取數(shù)據(jù)操作。

  2.2.2 從Response消息隊列、狀態(tài)報告消息隊列、MO消息隊列取數(shù)據(jù)寫入數(shù)據(jù)庫

  采用多線程方式,處理Response消息隊列、狀態(tài)報告消息隊列、MO消息隊列中的數(shù)據(jù)。消息隊列中的數(shù)據(jù)根據(jù)其性質(zhì)可以設(shè)置不同的優(yōu)先級,為了保證用戶上行指令的及時性,MO消息隊列的優(yōu)先級高于Response隊列和狀態(tài)報告消息隊列。

  Response消息隊列:從短信網(wǎng)關(guān)接收到的響應(yīng)包,當(dāng)response為0時,表示短信網(wǎng)關(guān)正確接收消息,記錄消息的發(fā)送日志。當(dāng)response非0,表示短信網(wǎng)關(guān)接收數(shù)據(jù)失敗,一般這樣的情況給予3次發(fā)送機(jī)會,如果發(fā)送次數(shù)小于閥值,則該條消息的發(fā)送次數(shù)加1后重新寫入數(shù)據(jù)庫的待發(fā)送隊列中。

  2.3 短信發(fā)送模塊

  短信發(fā)送模塊主要作用是將待發(fā)送隊列中的信息發(fā)送到短信網(wǎng)關(guān),并接收網(wǎng)關(guān)返回的響應(yīng)信息、狀態(tài)報告以及MO信息,原理如下:①創(chuàng)建多個發(fā)送線程,每一個線程創(chuàng)建一個與短信網(wǎng)關(guān)通信的socket連接,同時創(chuàng)建相應(yīng)的多個接收線程和多個滑動窗口監(jiān)控線程。

 ?、诿總€發(fā)送線程首先判斷滑動窗口容器中數(shù)據(jù)量,當(dāng)數(shù)據(jù)量小于滑動窗口閥值時,從發(fā)送消息隊列中取得待發(fā)送數(shù)據(jù)向短信網(wǎng)關(guān)發(fā)送,發(fā)送成功后將該信息置入滑動窗口容器中,并將全局計數(shù)器加1,否則該線程進(jìn)行短暫的休息。

  ③接收線程實(shí)時接收短信網(wǎng)關(guān)傳送過來的數(shù)據(jù),接收線程接收到數(shù)據(jù)后,如果是Response響應(yīng),則根據(jù)消息內(nèi)容與滑動窗口容器中數(shù)據(jù)進(jìn)行匹配,如果匹配到,則將滑動窗口容器中該數(shù)據(jù)刪除,放入Response消息隊列,由數(shù)據(jù)處理模塊進(jìn)行處理。如果匹配失敗則拋棄該數(shù)據(jù);接收線程接收到狀態(tài)報告,將信息存入狀態(tài)報告消息隊列中;接收線程接收到用戶MO信息,將該信息存入MO消息隊列中。Response消息隊列、狀態(tài)報告消息隊列、MO消息隊列由數(shù)據(jù)操作模塊進(jìn)行處理。

 ?、芑瑒哟翱谌萜鞅O(jiān)控線程間隔性檢測該容器中數(shù)據(jù)是否超時,如果超時,則該數(shù)據(jù)刪除并放入發(fā)送日志隊列同時為該數(shù)據(jù)置超時標(biāo)志。

  3 實(shí)施效果與優(yōu)勢

  通過引入消息隊列技術(shù),在短信業(yè)務(wù)的數(shù)據(jù)通信中,每個連接的發(fā)送速度達(dá)到每秒60條左右。如果短信網(wǎng)關(guān)給一個短信類業(yè)務(wù)分配4個連接通道,那么業(yè)務(wù)的發(fā)送速度將達(dá)到每秒240條。完全能滿足日發(fā)送600萬(8*3600*

  240,一天按8小時計算)的業(yè)務(wù)量需求。消息隊列技術(shù)不僅能提高通信速度,還具備以下優(yōu)勢:

 ?、費(fèi)SMQ是一種分布式的開放技術(shù),可以在服務(wù)端離線情況下工作,將消息臨時保存在發(fā)送方的消息隊列中,以后聯(lián)機(jī)時再發(fā)送到接收方處理,避免了由于通信中斷導(dǎo)致數(shù)據(jù)丟失現(xiàn)象,提高了通信的可靠性。

 ?、谟捎谑钱惒酵ㄐ艡C(jī)制,無論是發(fā)送方還是接收方,都不用等待對方返回成功消息,就可以執(zhí)行余下的代碼,大大提高了事務(wù)處理能力。

  4 結(jié)束語

  本文討論了微軟消息隊列在短信業(yè)務(wù)中的應(yīng)用,農(nóng)信通系統(tǒng)通過利用微軟消息隊列解決了業(yè)務(wù)信息發(fā)送中遇到的發(fā)送瓶頸問題,對于類似需要大量發(fā)送短信的系統(tǒng)平臺設(shè)計具有很好的參考意義。

猜你喜歡:

3468197