亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        云環(huán)境下實時消息推送服務構建研究

        2020-04-08 09:52:36曹鵬飛
        計算機技術與發(fā)展 2020年3期
        關鍵詞:用戶服務系統(tǒng)

        曹鵬飛,李 杰,楊 君

        (三江學院 計算機科學與工程學院,江蘇 南京 210012)

        0 引 言

        隨著移動互聯(lián)網技術的發(fā)展,各類消息縱橫交錯,人們在獲取關聯(lián)信息時常感到無從選擇。傳統(tǒng)的消息獲取,用戶需要主動拉取網絡存儲的消息,此種方式獲取消息的效率極其低下,會產生眾多與用戶無關的消息。消息推送需要用戶不停的拉取刷新,屬于被動推送[1]。隨著云技術的發(fā)展,消息推送技術逐步轉變?yōu)樵仆扑停鎰e了單一服務器推送的模式。

        1999年,網景公司推出了基于XML的簡易信息聚合(RSS)[2];2005年,聯(lián)合格式(Atom)發(fā)布[3],可以看作是RSS2.0的改進方案。

        2009年,Google提出了PubSubHubbub[4],將消息獲取由“拉取”模式轉變?yōu)椤巴扑汀蹦J剑蛻舳瞬辉俣〞r輪詢服務器,當有更新時及時推送至客戶端,成為了互聯(lián)網分散式消息傳播的開放標準,提供了消息即時更新。

        2011年,H5標準將WebSocket協(xié)議納入Web交互,在瀏覽器客戶端與服務器之間通過TCP/IP技術實現了無刷新的通信[5]。

        隨著云計算和移動互聯(lián)網的發(fā)展,消息推送技術也逐漸成熟,蘋果公司推出了APNS(Apple Push Notification Service)[6],安卓系統(tǒng)(Android)從2.2版本開始增加了云消息推送模塊(C2DM)現更名為(Google Cloud Message,GCM)[7],微軟在WinPhone系統(tǒng)提供了云消息推送服務(Microsoft Push Notification Service,MPNS)[8]。

        現有的消息推送大多屬于主題式訂閱模式,隨著Web開發(fā)技術的發(fā)展, WebSocket作為一種新的技術被應用在消息推送中,有廣闊的應用前景,但是針對不同平臺終端的推送應用還未有統(tǒng)一標準。

        1 實時消息推送服務方案設計

        1.1 消息推送服務需求概述

        消息推送服務通過云服務器構建消息主體向移動端進行推送,包括:消息推送平臺、云服務器、移動客戶端(Android)。通過實時消息處理模塊將消息發(fā)送到移動客戶端,客戶端接收到消息內容。主要需求如下:

        (1)消息推送平臺。

        提供消息服務接口:采用Restful API[9]架構實現即時通信消息推送API接口,通過JSON進行格式化編碼;

        消息推送功能:調用API接口將消息發(fā)送給中間組件,再將消息推送至移動終端;

        日志監(jiān)測功能:將系統(tǒng)運行過程產生的錯誤記錄并保存,監(jiān)測系統(tǒng)運行狀態(tài)。

        (2)云服務器。

        架設在公有云:讓用戶通過公網IP地址直接訪問;

        存儲服務:提供數據的存儲和消息的緩存;

        云服務器進行相關配置,以實現消息服務的部署。

        (3)移動客戶端(Android)。

        用戶管理:提供給管理員用戶管理的功能,同時對用戶進行權限分配。如:添加、修改、刪除用戶等,返回操作狀態(tài);

        業(yè)務處理模塊:手機終端進行標記,通過算法生成標識符(Token),讓手機接收消息時具有唯一標識。手機服務喚醒,一旦檢測到消息推送,調用接口程序進行喚醒,提示用戶查看消息。實時消息推送,調用消息推送平臺提供API接口實時推送消息給用戶。

        1.2 系統(tǒng)結構設計

        1.2.1 總體框架設計

        系統(tǒng)總體框架由客戶端、業(yè)務處理、消息推送服務和數據庫系統(tǒng)四個模塊構成,如圖1所示。

        圖1 實時消息推送服務框架

        圖1中顯示了系統(tǒng)中四個模塊之間的關系,其中:

        (1)客戶端模塊包括消息展示,采用顯示展示的方式,并伴隨著手機振動和手機鈴聲;服務喚醒,調用安卓手機系統(tǒng)服務進行喚醒。

        (2)業(yè)務處理模塊包括身份認證、用戶管理、推送業(yè)務等。身份認證,對所有用戶進行分組管理授予不同的權限,區(qū)分用戶等級;用戶信息管理,對用戶數據進行增刪改查;推送業(yè)務,調用消息推送服務API接口,將消息主題和內容傳遞給消息推送服務模塊。

        (3)消息推送服務模塊包括推送接口、推送服務。推送接口,通過構造HTTP(get、post)請求,將信息發(fā)送給推送服務,返回給業(yè)務處理模塊;推送服務,構建消息傳輸隊列,建立TCP長連接,消息推送至移動終端。

        1.2.2 數據庫系統(tǒng)設計

        數據庫存儲包括用戶賬戶、用戶權限、手機注冊等數據。數據庫各表之間關系如圖2所示。

        圖2 數據關系

        如表1所示,User表存儲所有用戶的賬戶數據,包括:姓名、密碼、郵箱、最后IP、最后登錄時間等數據,各表之間通過Role_id、User_role、User_id進行關聯(lián)。

        表1 User表結構

        Avos表,存儲用戶手機信息,與User表外鍵User_id進行關聯(lián)。User_id存儲用戶編號;Key存儲手機序列號,Phone_Name存儲手機名稱,Create_T和Update_T是用戶創(chuàng)建和更新的時間。

        Role表,存儲用戶角色,Id為主鍵整型自增。Res_id是資源編號。Group_N是分組名稱,Res_T是資源類型,與Group_N互為唯一索引。Create_T和Update_T是用戶創(chuàng)建和更新的時間,不能為空。

        2 實時消息推送服務的實現

        實時消息推送服務主要由3個模塊協(xié)作運行,包括:管理模塊、消息推送服務模塊和客戶端模塊。

        管理模塊通過框架Rails來實現,消息推送服務模塊通過框架Gin實現,客戶端模塊采用安卓移動終端,通過Gin框架中WebSocket組件構造URL請求,客戶端中請求URL地址獲取消息的推送。

        2.1 管理模塊實現

        管理模塊由用戶權限管理、用戶信息管理、APP信息、實時推送四個部分構成。管理模塊實現框架如圖3所示,通過Ruby on Rails框架[10]來實現。

        其中Model模型層處理業(yè)務流程,Controller控制器中有3個控制器,分別為:PUSH、App_down和User,分別控制推送功能、客戶端下載功能、User資源的操作。View視圖層主要是圖形頁面展示。

        用戶權限管理,賦予不同用戶不同分組,再將分組賦予不同權限。用戶創(chuàng)建時通過Usermodel中的Add_role事務將用戶與用戶角色表(Role)關聯(lián)。

        圖3 實現框架

        用戶信息管理對用戶賬戶信息進行添、刪、改、查等操作,通過JS代碼對用戶注冊信息進行初步驗證,再提交表單與服務器進行校驗。

        實時推送功能模塊使用HTTP/1.1協(xié)議,采用POST方法將信息傳遞給消息推送服務。使用RstClient.post構造Http_Post請求,對數據進行格式化處理運用JSON輸出。如請求失敗則通過Error獲取錯誤的原因,調用Deliver方法將郵件發(fā)送給管理員。

        前端頁面選擇響應式瀏覽方式,讓用戶可以在多種終端中自動切換,JS通過Rails框架提供的方法將回調信息展示在頁面上。

        2.2 消息推送服務模塊實現

        消息推送服務使用Golang中Gin框架,由協(xié)議層、路由分發(fā)中間層、數據模型層和業(yè)務處理層組成,消息推送服務模塊結構如圖4所示。

        圖4 消息推送服務模塊結構

        系統(tǒng)底層是HTTP協(xié)議,通過Gin框架Router方法路由分發(fā)中間層處理,將原本默認端口改為自定義2333避免端口被占用情況。在數據模型層中構建數據模型訪問Avos和User表中地數據。業(yè)務處理層通過推送接口進行實現。具體實現過程如下:

        先建立TCP長連接,服務器通過連接通道推送消息。傳統(tǒng)的Socket連接[11]資源消耗較多,采用心跳機制MQTT協(xié)議[12]可以降低消耗來維持較長時間的連接。

        移動端需要不斷地輪詢Publish端[14]。當有新消息客戶端就能監(jiān)聽和獲取到消息。消息推送服務實現過程如圖5所示。

        圖5 消息推送服務實現過程

        先構建Struct:Umeng,使用InitUmeng方法初始化結構體Umeng指針,通過函數指針從ClientNotify獲取PostData數據,發(fā)送給消息推送功能API接口。

        2.3 客戶端模塊實現

        客戶端選擇安卓(Android)系統(tǒng)作為消息接收端,客戶端在后臺需要一直監(jiān)聽Switch事件,用戶在移動端開啟推送服務后,系統(tǒng)先對消息服務進行注冊,然后調用SwichPus方法與手機序列號進行綁定,序列號生成則調用PushAgent類中GetRegistrationId()方法實現,最后將序列號發(fā)送到安卓客戶端的消息隊列中。

        消息展示采用顯式的形式,控制消息類將消息推送到移動終端,UmengNotificationClickHandler構造LaunchApp方法來監(jiān)聽消息推送事件,通過SetNotificationPlaySound()調用手機系統(tǒng)鈴聲,并通過NotifiCationService類的onCreate方法喚醒系統(tǒng)進程。

        3 系統(tǒng)運行與測試

        3.1 系統(tǒng)運行

        3.1.1 云實驗環(huán)境相關配置

        消息推送服務部署在云實驗環(huán)境下。選用阿里云服務器,通過阿里云直接分配的公網IP地址:139.40.62.77。使用Nginx為代理服務器[13],將unicorn服務使用8282端口映射,腳本配置如下:

        Upstream Back {

        Server 139.40.62.77:8282;//云服務器IP和端口號}

        server{

        listen80;//Web服務轉發(fā)端口

        Root /var/www/push_web;//服務主目錄

        Location{

        proxy_pass http://Back;//地址轉發(fā)

        proxy_set_header X-Real-IP $remote_ip_addr;//代理IP頭部設置

        proxy_redirect_off;//重定向url關閉

        proxy_set_header X-Forwarded-For $remote_ip_addr;

        }

        }

        (1)實驗云服務器軟硬件環(huán)境。

        服務器軟硬件配置:阿里云ECS服務器,CPU:2.8G/16核;內存:8 G;帶寬:100 Mbps;操作系統(tǒng):Centos7 64位;應用服務:Nginx 1.10.3、MySQL 5.6。

        (2)客戶端環(huán)境。

        手機型號:三星S7;安卓版本:Android 6.0;運行內存:4 G;存儲內存:32 GB。

        3.1.2 系統(tǒng)運行

        云端系統(tǒng)搭建完成后,在手機上安裝消息推送服務APP。服務端發(fā)送測試消息,客戶端能夠收到,系統(tǒng)運行如圖6所示。

        圖6 系統(tǒng)運行

        3.2 系統(tǒng)測試

        3.2.1 測試指標

        系統(tǒng)測試包括功能測試和性能壓力測試。

        功能測試主要運用黑盒測試[15-16],通過編寫系統(tǒng)各功能的測試用例進行測試,驗證結果的正確性,包括消息推送功能和用戶權限測試。

        性能壓力測試通過自定義腳本來模擬大規(guī)模的消息,測試消息推送的到達率。

        3.2.2 主要功能測試

        消息推送功能測試用例,用戶權限測試用例,如表2所示。

        表2 主要功能測試用例

        3.2.3 性能壓力測試

        本測試針對系統(tǒng)進行壓力測試,計算系統(tǒng)消息推送的到達率,具體測試用例如表3所示。

        表3 消息推送到達率測試用例

        測試用例腳本如下:

        For (i=0;i<1000;i++){

        RstC.post 'http://139.40.62.77:81/push_phone',{'msg'-> i.to_s,'User_id' -> 2,'titl'-> "msg:#{i.to_s}" }

        }//獲取系統(tǒng)Post接口

        根據測試數據看出,系統(tǒng)整體性能良好,每千次消息推送中到達率為96.8%,在網絡狀態(tài)良好的情況下延遲較低,平均響應時間為33.9 ms,能正常運行。

        4 結束語

        提出了在云實驗環(huán)境下實現實時消息推送服務的構建方案,對消息推送服務框架進行了設計,運用WebSocket技術實現了管理平臺和移動客戶端應用程序,并將其部署在阿里云實驗環(huán)境中。經過測試,在良好的網絡環(huán)境下消息能夠實時、準確地推送至移動端。

        猜你喜歡
        用戶服務系統(tǒng)
        Smartflower POP 一體式光伏系統(tǒng)
        WJ-700無人機系統(tǒng)
        ZC系列無人機遙感系統(tǒng)
        北京測繪(2020年12期)2020-12-29 01:33:58
        服務在身邊 健康每一天
        服務在身邊 健康每一天
        服務在身邊 健康每一天
        連通與提升系統(tǒng)的最后一塊拼圖 Audiolab 傲立 M-DAC mini
        招行30年:從“滿意服務”到“感動服務”
        商周刊(2017年9期)2017-08-22 02:57:56
        關注用戶
        商用汽車(2016年11期)2016-12-19 01:20:16
        關注用戶
        商用汽車(2016年6期)2016-06-29 09:18:54
        国产尤物AV尤物在线看| 不卡的av网站在线观看| 国产精品成人免费视频一区| 国产人妻无码一区二区三区免费| 99久久精品国产一区二区| 色综合av综合无码综合网站| 欧美日本国产va高清cabal| 女人的天堂av免费看| 人妻少妇中文字幕久久hd高清| 欧美性白人极品1819hd| av潮喷大喷水系列无码| 国产资源精品一区二区免费| 国产又色又爽的视频在线观看91| 日本三级香港三级人妇99| 欧美野外疯狂做受xxxx高潮| 无码一区东京热| 亚洲精品美女中文字幕久久| √天堂中文官网在线| 日韩成人无码一区二区三区| 亚洲国产精品综合福利专区 | 成人做爰69片免费看网站野花| 日日干夜夜操高清视频| 国产精品无套粉嫩白浆在线 | 少妇愉情理伦片丰满丰满| 熟妇人妻中文av无码| 精品视频999| 国产麻豆成人精品av| 国产一区二区三区日韩精品| 国产自偷自偷免费一区| 精品久久久久88久久久| 国产精品一区二区久久久av| 各种少妇正面着bbw撒尿视频| 99热在线精品播放| 亚洲天堂色婷婷一区二区 | 久久久亚洲精品无码| 999国产精品视频| 青青草绿色华人播放在线视频 | 人与人性恔配视频免费| 精品香蕉久久久午夜福利| 日本啪啪一区二区三区| 国产精品妇女一区二区三区 |