999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

關(guān)于智能推送平臺的設(shè)計與實(shí)現(xiàn)的研究與分析

2022-11-22 09:07:32
信息記錄材料 2022年9期
關(guān)鍵詞:數(shù)據(jù)庫用戶功能

郝 銳

(蘭州生產(chǎn)力促進(jìn)中心 甘肅 蘭州 730000)

0 引言

推算法是一種基于因特網(wǎng)的通信技術(shù),它可以讓服務(wù)端自動向客戶端推送信息。美國的 PointCast公司于1990年發(fā)布了一款屏幕保護(hù)軟件,它通過推送技術(shù)向用戶發(fā)送新聞和股市信息,這一舉動在當(dāng)時引起了極大的反響。在這個過程中,因特網(wǎng)推出了很多新的應(yīng)用,如即時聊天、同步會議、電子郵件等。由于信息推送技術(shù)的普及,研發(fā)新的信息推送平臺就顯得尤為重要,智能信息推送平臺是指通過云推的形式來實(shí)現(xiàn)信息的推送。

1 智能推送系統(tǒng)需求分析

1.1 功能性需求分析

根據(jù)功能的不同,智能推送系統(tǒng)的總體需求分為四個方面:應(yīng)用、消息推送、統(tǒng)計、工具相關(guān)。

應(yīng)用相關(guān)的功能是指在系統(tǒng)網(wǎng)頁上顯示的管理和顯示功能,用戶可以使用該功能來管理企業(yè)的應(yīng)用程序。它的主要內(nèi)容是:向系統(tǒng)平臺中添加新的應(yīng)用程序,查看賬戶中所有的應(yīng)用程序信息,收藏應(yīng)用程序,創(chuàng)建包含多個應(yīng)用程序的應(yīng)用程序組,為已創(chuàng)建的應(yīng)用程序提供通道、個性化、白名單等屬性,使用戶能夠更快更方便地管理自己的應(yīng)用程序。在選擇目標(biāo)人群之前,可以利用標(biāo)記的相似性,計算出信息內(nèi)容與目標(biāo)人群的關(guān)系,從而確定目標(biāo)人群的位置,并實(shí)時追蹤信息的發(fā)送情況。統(tǒng)計的相關(guān)功能,主要是給用戶提供操作思路,可以獲得應(yīng)用用戶的新增、活躍度、在線數(shù)據(jù),而關(guān)注到推送,則是可以獲得應(yīng)用級別的消息送達(dá)、打開次數(shù)、忽略數(shù)等重要數(shù)據(jù),從而為企業(yè)的運(yùn)營提供更多的數(shù)據(jù)參考。而工具類的功能,則是為使用者提供查詢、校驗(yàn)、測試任務(wù)、消息模板等工具,從而為使用者的開發(fā)、運(yùn)營提供便利。下面詳細(xì)分析各個功能,以確定智能推送系統(tǒng)的功能要求。

1.2 非功能性需求

(1)及時性

由于信息重時效性,在 Publisher發(fā)出信息后,系統(tǒng)應(yīng)該保證用戶能及時收到信息。發(fā)送離線消息時,應(yīng)該保證消息沒有到期。

(2)高可用性

如果智能推送系統(tǒng)所在的服務(wù)器發(fā)生故障,將會對云平臺產(chǎn)生很大的影響,所以我們應(yīng)該在多臺服務(wù)器上部署,以保證當(dāng)一個節(jié)點(diǎn)停機(jī)時,其他節(jié)點(diǎn)可以正常運(yùn)行。

(3)并發(fā)性

在保證高并發(fā)條件下,系統(tǒng)集群必須保證負(fù)載平衡,保證MQTT和客戶端之間穩(wěn)定的連接,并且能夠正常地提供推送消息。

(4)可擴(kuò)展性

在集群負(fù)載較大時,要對簇進(jìn)行狀態(tài)監(jiān)控,以防止集群性能到達(dá)瓶頸所引起的不穩(wěn)定。這就要求網(wǎng)絡(luò)中的網(wǎng)絡(luò)節(jié)點(diǎn)盡可能地簡化,并方便維護(hù)人員根據(jù)監(jiān)控數(shù)據(jù)及時地調(diào)整節(jié)點(diǎn)數(shù)量。

2 智能推送系統(tǒng)架構(gòu)設(shè)計

2.1 系統(tǒng)軟件架構(gòu)設(shè)計

本智能系統(tǒng)架構(gòu)設(shè)計如圖1所示,該架構(gòu)從上至下為應(yīng)用層、業(yè)務(wù)邏輯層、支撐層、數(shù)據(jù)存儲層。

圖1 消息推送系統(tǒng)軟件架構(gòu)

每一層的描述是這樣的:

(1)應(yīng)用層:應(yīng)用層是為用戶提供的基礎(chǔ)功能,用戶可以選擇自己喜歡的話題進(jìn)行訂閱,同時也可以收到來自系統(tǒng)的推送信息,而應(yīng)用級的客戶端應(yīng)該保持與推送系統(tǒng)的長期聯(lián)系,以確保推送的及時性。

(2)業(yè)務(wù)邏輯層:其中,業(yè)務(wù)邏輯層主要是完成平臺信息推送的系統(tǒng)功能,以及與推送功能模塊相關(guān)的邏輯處理。當(dāng)收到下行鏈路信息時,這一層就會完成報文的分配,并把報文發(fā)送給特定的MQTT單點(diǎn)服務(wù)器。此外,MQTT還要求管理系統(tǒng)中各個話題之間的結(jié)構(gòu)關(guān)系和主題與訂戶之間的關(guān)系,在發(fā)布和訂購主題前,必須對用戶的身份和權(quán)限進(jìn)行認(rèn)證。業(yè)務(wù)邏輯層還需要根據(jù)新聞報道中的QoS級別和用戶是否在線來決定是否將消息持久保存。這一層包含了主要的消息推送、離線推送、定點(diǎn)推送等功能,并且消息代理會定期將節(jié)點(diǎn)的統(tǒng)計數(shù)據(jù)發(fā)布到系統(tǒng)的主題下。

(3)支撐層:支撐層提供了跨平臺的、可重用的、支持系統(tǒng)推送的基本構(gòu)件。支撐層必須對原有 MQTT進(jìn)行優(yōu)化,并對其進(jìn)行封裝,這取決于系統(tǒng)對消息包的加密和認(rèn)證要求。

(4)數(shù)據(jù)存儲層:它的功能是實(shí)現(xiàn)存儲與用戶有關(guān)的信息,并在需要保存時保存信息。

2.2 業(yè)務(wù)邏輯層功能模塊設(shè)計

本系統(tǒng)的主要功能是由業(yè)務(wù)邏輯層來實(shí)現(xiàn),現(xiàn)在將其劃分為各功能模塊。該系統(tǒng)的主要特點(diǎn)是信息的推送,需要集中部署,具有很高的可用性。所以,本系統(tǒng)應(yīng)該包括:安全驗(yàn)證功能模塊、負(fù)載分配模塊、核心推送模塊、監(jiān)測數(shù)據(jù)模塊。如圖2所示。

圖2 業(yè)務(wù)邏輯層功能模塊

本系統(tǒng)的各個功能模塊,分別是:

(1)安全認(rèn)證功能模塊:主要是為了保證推送系統(tǒng)的安全性。當(dāng)客戶機(jī)向服務(wù)端發(fā)送 CONNECT消息請求時,通過用戶名口令驗(yàn)證該用戶的身份。它是根據(jù)ACL訪問控制列表來實(shí)現(xiàn)的。在數(shù)據(jù)加密方面,MQTT是一種應(yīng)用級的協(xié)議,能夠通過SSL實(shí)現(xiàn)安全的通信。

(2)集群管理模塊:采用集中式的方式進(jìn)行部署,并將多個MQTT結(jié)點(diǎn)構(gòu)成。它負(fù)責(zé)向MQTT節(jié)點(diǎn)分配請求,保證在某些節(jié)點(diǎn)出現(xiàn)異常時,系統(tǒng)可以正常地提供服務(wù)。

(3)核心推送功能模塊:此模塊是系統(tǒng)的核心功能,它可以為用戶提供以主題為基礎(chǔ)的信息訂閱和發(fā)布服務(wù)。在系統(tǒng)運(yùn)行的時候,每一個節(jié)點(diǎn)都是一個 MQTT broker,它會建立和維持一個主題的訂購樹。MQTT broker在接到連接請求后,負(fù)責(zé) MQTT連接,分析發(fā)送/訂購請求,根據(jù)需要保存消息的信息,最后完成推送和訂購。

(4)監(jiān)測與統(tǒng)計模塊:此模塊主要負(fù)責(zé)監(jiān)視整個機(jī)群的運(yùn)行狀況和數(shù)據(jù)統(tǒng)計,首先監(jiān)測每個節(jié)點(diǎn)的性能,包括CPU、內(nèi)存、磁盤空間、IO、網(wǎng)絡(luò)帶寬等,并對各節(jié)點(diǎn)的運(yùn)行狀況進(jìn)行實(shí)時監(jiān)測,一旦某個節(jié)點(diǎn)有任何異常,就會向系統(tǒng)管理員報告。另外,本模塊還對系統(tǒng)的各項(xiàng)業(yè)務(wù)數(shù)據(jù)進(jìn)行了定期的統(tǒng)計,其中包含了在線用戶的人數(shù)、收發(fā)的人數(shù)等,并對各部門的管理人員進(jìn)行信息的收集和反饋。

3 存儲結(jié)構(gòu)設(shè)計

3.1 主題結(jié)構(gòu)語法設(shè)計

(1)主題通配符設(shè)計

當(dāng)您訂購一個主題時,您可以使用通配符來訂購多個子主題。該系統(tǒng)能夠提供“+”的單層通配符和“#”的多層通配符。

單級通配符“+”表示與當(dāng)前主題中的0個或任何一個子主題相匹配,但是與該子主題下的子主題不能相匹配,比如,“cloudos/vm/+”可以與“cloudos/vm/win”或“cloudos/vm/linux”相匹配,但與“cloudos/vm/win/win2012”不符。為了保證“/”后面緊跟著一個單層通配符“+”,也就是“+/vm”或“cloudos/+/win”都是合法的,但是“cloudos+/”就不能用了。

通配符“#”可以與當(dāng)前主題下的一個或多個子主題相匹配,也就是說,“cloudos/#”可以與“cloudos/vm”、“cloudos/vm/win”等主題中的所有子主題相匹配。單個多層通配符“#”可以與目前的系統(tǒng)中的所有主題相匹配。多層通配符也必須緊隨等級“/”,而且它必須位于末尾,比如“cloudos/#/win2012”。

(2)主題添加和刪除

在進(jìn)行主題訂購時,先將主題劃分為“/”,然后將其劃分為多個關(guān)鍵字,然后將主題樹的層級遍歷與主題序列相結(jié)合。如果匹配成功,一個新的用戶ID會被添加到這個主題節(jié)點(diǎn)的訂閱者隊(duì)列中。如果匹配不成功,就會在上一個符合的節(jié)點(diǎn)下面建立一個子樹,然后把用戶ID添加到它的訂閱者隊(duì)列中。

在取消訂閱時,先將此話題的訂閱者名單中的相應(yīng)用戶ID移除,接著再按順序檢查目前話題和其子話題的訂閱者清單是否為空白,并在消息佇列中存在未到期的預(yù)留訊息,若兩者皆為空白,則移除此主題節(jié)點(diǎn)和所有子結(jié)點(diǎn)。

3.2 數(shù)據(jù)庫設(shè)計

該系統(tǒng)采用MySql數(shù)據(jù)庫進(jìn)行數(shù)據(jù)存儲,并利用MyBatis架構(gòu)實(shí)現(xiàn)了整個持久層的開發(fā),方便了與數(shù)據(jù)庫的交互。由于有一些數(shù)據(jù)不會經(jīng)常變化,并且需要頻繁的讀取,所以將Redis用作數(shù)據(jù)庫的緩存,并設(shè)定緩存失敗的時間。根據(jù)客戶的需要,根據(jù)客戶的要求進(jìn)行數(shù)據(jù)庫的結(jié)構(gòu)設(shè)計,使數(shù)據(jù)庫的結(jié)構(gòu)合理,建立表之間的聯(lián)系,明確表中各個字段的意義,為以后的開發(fā)、運(yùn)行和維護(hù)打下基礎(chǔ)。在數(shù)據(jù)庫的設(shè)計中,應(yīng)注意概念結(jié)構(gòu)、邏輯結(jié)構(gòu)和物理結(jié)構(gòu),概念結(jié)構(gòu)是指對真實(shí)世界進(jìn)行抽象,從而反映信息的流動、數(shù)據(jù)結(jié)構(gòu)和相關(guān)要求,并采用“實(shí)體-連接”(E-R)模式進(jìn)行抽象表達(dá)。在數(shù)據(jù)庫基礎(chǔ)表格的設(shè)計中,將會考慮到實(shí)際應(yīng)用中的數(shù)據(jù)模型,以數(shù)據(jù)庫的形式來構(gòu)造相應(yīng)的數(shù)據(jù)庫結(jié)構(gòu),以滿足特定的需要。

在構(gòu)建E-R圖的基礎(chǔ)上,構(gòu)建了一個完整的數(shù)據(jù)庫概念結(jié)構(gòu),其中實(shí)體、屬性和聯(lián)系是三大要素。在圖3中顯示了實(shí)體間的關(guān)系。

圖3 系統(tǒng)E-R圖

3.3 非關(guān)系型數(shù)據(jù)庫設(shè)計

鑒于該系統(tǒng)具有較高的功能要求,數(shù)據(jù)常常要被讀取,而且沒有太大的改變,所以使用阿里云的Redis云計算數(shù)據(jù)庫進(jìn)行數(shù)據(jù)的存儲,并負(fù)責(zé)系統(tǒng)的緩存管理。

別名管理是一種比較先進(jìn)的功能,它主要針對的是用戶設(shè)備,最簡單的一種就是單播和廣播,但這兩種方式并不能滿足企業(yè)的要求,比如AB測試、圈定人群等。雖然系統(tǒng)也提供了一種分類過濾的方法,但卻無法給操作人員更好的管理,所以必須要有一個可以讓操作人員自由分配的功能。別名的功能是由Aliastype、alias和設(shè)備的結(jié)合來進(jìn)行的。aliastype是一種別名,每一種別名都是獨(dú)一無二的,它可以包含多個alias,alias更像是一個應(yīng)用程序用戶的賬號,它可以將一個應(yīng)用程序的所有設(shè)備分成一組,然后用aliastype來區(qū)分不同的用戶。在數(shù)據(jù)庫中的表示是以key-value的形式進(jìn)行,詳細(xì)的說明見表1。

表1 別名管理緩存表

4 基于智能推送平臺的實(shí)現(xiàn)

4.1 用戶驗(yàn)證模塊實(shí)現(xiàn)

在MQTT中,客戶機(jī)在發(fā)出MQTT連接之前,首先與消息Agent建立TCP連接,然后將CONNECT信息發(fā)送給MQTT,然后將用戶名稱和口令存儲在消息承載區(qū),由消息代理進(jìn)行用戶認(rèn)證。

服務(wù)器會先分析這個報文Payload部分的使用者名稱和口令,然后再進(jìn)行一個功能檢查。此功能首先通過查詢數(shù)據(jù)庫來獲得用戶的密碼和相應(yīng)的加密值,然后結(jié)合明文密碼進(jìn)行MD5運(yùn)算,最終將MD5的數(shù)值與密碼密文進(jìn)行比較,若符合,則確認(rèn)成功;若不符合,則確認(rèn)失敗。

確認(rèn)完畢后,將CONNACK數(shù)據(jù)包作為回應(yīng),并與客戶機(jī)建立MQTT連接。

4.2 安全通信模塊實(shí)現(xiàn)

SSL通信在進(jìn)行身份驗(yàn)證時,必須由服務(wù)器向數(shù)字認(rèn)證機(jī)構(gòu)(CA)提出證書,因?yàn)閿?shù)字認(rèn)證機(jī)構(gòu)發(fā)出的證書是要付費(fèi)的,因此,在此利用openssl本身來模擬數(shù)字認(rèn)證機(jī)構(gòu)的公開密鑰和憑證文件。此模塊通過以下步驟增加 SSL通信函數(shù):

(1)產(chǎn)生CA的公共密鑰,并執(zhí)行命令opensslreqnewkey-x509-days36500-extensionsv3_ca-keyoutca.keyoutca.cr t,ca.ke y和ca.crt兩個文件,ca.key是CA的公共密鑰,ca.crt是為自己所發(fā)出的憑證,把它們都復(fù)制到系統(tǒng)服務(wù)器和客戶所在的目錄下。

(2)為服務(wù)器產(chǎn)生私有密鑰文server.key,然后執(zhí)行opensslreq-outserver.csr-keyserver.key- new命令,產(chǎn)生用于向CA發(fā)出證書的server. csr命令。

(3)csr,ca.key,ca.crt, server. csr三個文件,要求為服務(wù)器創(chuàng)建一個憑證文件server.crt。

完成上述工作之后,更改Mosquitto的個人資料,更改CA證書的位置,并開啟8883端口來監(jiān)控SSL的通信。現(xiàn)在開始運(yùn)行服務(wù)器程序,mosquitto在TLS/SSL模式下開始運(yùn)行。

4.3 離線消息推送功能實(shí)現(xiàn)

在原來的郵件推送過程中,持久處理是將郵件存儲到結(jié)構(gòu)message _store中,并且在這個結(jié)構(gòu)中,相同的話題僅有一個消息可以被存儲。同時,在多個結(jié)點(diǎn)的情況下,每個結(jié)點(diǎn)都要保留自己的離線報文,不利于對其進(jìn)行統(tǒng)一的管理和維護(hù)。所以,系統(tǒng)會把所有的信息都保存到資料庫的信息表格中,并且在需要儲存信息的地方,把信息存儲到資料庫中。

4.4 消息推送過程優(yōu)化實(shí)現(xiàn)

Mosquitto的MQTT數(shù)據(jù)包的接收和向客戶端的信息推送分為兩個步驟,在向客戶發(fā)布信息時,必須遍歷上下文,并在上下文的信息隊(duì)列中包含要被傳送的信息。在主循環(huán)中,HASH_ITER功能會遍歷每個所連接的客戶機(jī)的上下文結(jié)構(gòu),并調(diào)用db__message_write來處理所傳送的數(shù)據(jù),并處理已答復(fù)的數(shù)據(jù)。現(xiàn)在,我們將修改這個過程,首先,定義一個散列表,其中的每一個成員都包括一個套接字和相應(yīng)的上下文。當(dāng)系統(tǒng)產(chǎn)生MQTT分組并把它放到上下文消息隊(duì)列中時,把這個上下文添加到哈希表中。

5 結(jié)語

當(dāng)前,隨著移動網(wǎng)絡(luò)的日益普及,如何在手機(jī)上實(shí)現(xiàn)產(chǎn)品的經(jīng)營,已成為各大公司必須認(rèn)真思考的問題。智能推送系統(tǒng)可以從使用者的視角,實(shí)時搜集、優(yōu)化、提供優(yōu)質(zhì)的推送渠道,為企業(yè)的發(fā)展做出貢獻(xiàn)。

猜你喜歡
數(shù)據(jù)庫用戶功能
也談詩的“功能”
中華詩詞(2022年6期)2022-12-31 06:41:24
關(guān)于非首都功能疏解的幾點(diǎn)思考
數(shù)據(jù)庫
財經(jīng)(2017年2期)2017-03-10 14:35:35
關(guān)注用戶
商用汽車(2016年11期)2016-12-19 01:20:16
關(guān)注用戶
商用汽車(2016年6期)2016-06-29 09:18:54
數(shù)據(jù)庫
財經(jīng)(2016年15期)2016-06-03 07:38:02
關(guān)注用戶
商用汽車(2016年4期)2016-05-09 01:23:12
數(shù)據(jù)庫
財經(jīng)(2016年3期)2016-03-07 07:44:46
數(shù)據(jù)庫
財經(jīng)(2016年6期)2016-02-24 07:41:51
如何獲取一億海外用戶
主站蜘蛛池模板: 国产全黄a一级毛片| 国产精品亚洲va在线观看| 亚洲一区二区三区国产精品| 毛片一区二区在线看| 欧美国产日韩在线播放| 99视频全部免费| 国产剧情无码视频在线观看| 亚洲成人在线免费| 亚洲最大在线观看| 久久超级碰| 精品三级在线| 免费xxxxx在线观看网站| 久久亚洲国产最新网站| 国产微拍精品| 嫩草在线视频| 91一级片| 伊人五月丁香综合AⅤ| 免费网站成人亚洲| 免费一极毛片| 中国精品自拍| 狠狠色香婷婷久久亚洲精品| 狠狠色噜噜狠狠狠狠奇米777| 亚洲欧美不卡中文字幕| 日韩一级毛一欧美一国产 | 伊人激情综合网| 国产亚洲视频在线观看| 久久久无码人妻精品无码| 色噜噜久久| 成年免费在线观看| 久久性妇女精品免费| 无码区日韩专区免费系列 | 国内丰满少妇猛烈精品播| 欧美三级视频在线播放| 亚洲精品视频免费| 一本大道AV人久久综合| 最新午夜男女福利片视频| 亚洲美女高潮久久久久久久| 国产成人凹凸视频在线| 午夜啪啪福利| 精品亚洲欧美中文字幕在线看| 69视频国产| 一级毛片不卡片免费观看| 五月激情综合网| 亚洲丝袜中文字幕| 97在线免费| 国产日本一线在线观看免费| 久久精品国产精品青草app| 天天色天天综合| 高清无码不卡视频| 欧美视频在线第一页| 中文字幕久久精品波多野结| 欧美天堂久久| 日本高清免费不卡视频| 午夜福利无码一区二区| 国产欧美高清| 99re视频在线| 亚洲一级无毛片无码在线免费视频 | 国产毛片高清一级国语| 久草热视频在线| 自拍亚洲欧美精品| 97视频免费看| 少妇高潮惨叫久久久久久| 亚洲AⅤ波多系列中文字幕| AV在线麻免费观看网站| 视频国产精品丝袜第一页| 欧美国产三级| 成人福利在线免费观看| 欧美性猛交一区二区三区| 欧美另类视频一区二区三区| 天堂在线www网亚洲| 五月激情综合网| 欧美日韩在线成人| 国产三级毛片| 首页亚洲国产丝袜长腿综合| 无遮挡一级毛片呦女视频| 在线观看免费国产| 国产香蕉国产精品偷在线观看| 日本a级免费| 欧洲精品视频在线观看| 国产精品视频观看裸模| 免费看一级毛片波多结衣| 丁香婷婷久久|