龔向榮
摘要 互聯(lián)網(wǎng)、移動(dòng)終端技術(shù)極大地改變了人們的生活,對(duì)于通訊協(xié)作應(yīng)用也提出了新的要求和挑戰(zhàn),考慮到企業(yè)通訊協(xié)作業(yè)務(wù)規(guī)模擴(kuò)張的背景,要思考和探討基于Docker私有云的通訊協(xié)作平臺(tái)建構(gòu),充分利用Docker虛擬化技術(shù),以私有云的方式進(jìn)行通訊協(xié)作平臺(tái)架構(gòu)和部署,并設(shè)計(jì)動(dòng)態(tài)、安全的密鑰體系,形成安全便捷的通訊協(xié)作通道,較好地滿足應(yīng)用需求。
【關(guān)鍵詞】Docker 私有云 虛擬化技術(shù) 通訊協(xié)作平臺(tái)
移動(dòng)辦公成為發(fā)展的趨勢(shì),通用的即時(shí)通訊手段存在信息泄露的風(fēng)險(xiǎn),無法確保企業(yè)之間機(jī)密信息的交流安全,為此,要運(yùn)用Docker虛擬化技術(shù),開發(fā)基于Docker私有云的通訊協(xié)作平臺(tái),進(jìn)行合理的設(shè)計(jì)和部署,進(jìn)行前后端分離的模式設(shè)計(jì),在統(tǒng)一的開放接口條件下,設(shè)計(jì)和應(yīng)用標(biāo)準(zhǔn)化的流程,較好地實(shí)現(xiàn)與企業(yè)各項(xiàng)業(yè)務(wù)的對(duì)接。并在信息傳輸?shù)倪^程中采用動(dòng)態(tài)的密鑰體系,確保企業(yè)間跨域通訊的安全。
1
Docker私有云的通訊協(xié)作平臺(tái)關(guān)鍵技術(shù)
1.1 Docker虛擬化技術(shù)
這是一種資源管理配置技術(shù),以鏡像、容器和倉(cāng)庫(kù)為核心組件,通過對(duì)實(shí)體資源的抽象、隔離,突破其結(jié)構(gòu)上的束縛和約束,較好地提升資源管理配置效率??梢苑譃橛布摂M化技術(shù)和軟件虛擬化技術(shù)兩種類型,其中:硬件虛擬化技術(shù)是在截取硬件平臺(tái)指令的前提下,對(duì)其加以替換,以達(dá)到實(shí)現(xiàn)資源管理配置的效果。軟件虛擬化技術(shù)是基于各種不同的軟件工具,截取并模擬平臺(tái)訪問數(shù)據(jù),進(jìn)行資源的管理配置。
Dcoker虛擬化技術(shù)不同于以往基于虛擬機(jī)的虛擬化方式,而是一種基于容器的虛擬化技術(shù),是在操作系統(tǒng)平臺(tái)上運(yùn)用Libcontainer提供的技術(shù)、通用接口標(biāo)準(zhǔn),實(shí)現(xiàn)對(duì)資源的抽象和隔離,極大地優(yōu)化了資源管理配置效率,體現(xiàn)出跨平臺(tái)性、節(jié)約存儲(chǔ)空間的優(yōu)勢(shì)特點(diǎn)。
Dcker云平臺(tái)是一種基于容器的云平臺(tái),內(nèi)含三個(gè)不同的調(diào)度框架,即:
(1)容器集群管理系統(tǒng)-Kubemetes。它集成了容器間網(wǎng)絡(luò)通訊、負(fù)載均衡、服務(wù)發(fā)現(xiàn)等組件,體現(xiàn)出多樣化的容器管理功能。
(2)開源的集群資源自動(dòng)調(diào)度平臺(tái)一Mesos。它是數(shù)據(jù)中心操作系統(tǒng)的內(nèi)核,實(shí)現(xiàn)對(duì)各種應(yīng)用管理平臺(tái)、中間件的整合和調(diào)度管理。
(3)調(diào)度框架-Swarm。該調(diào)度框架包括管理節(jié)點(diǎn)和工作節(jié)點(diǎn),利用過濾器的方式進(jìn)行調(diào)度約束,能夠較好地集成負(fù)載均衡和服務(wù)發(fā)現(xiàn),體現(xiàn)出功能強(qiáng)大的便捷性應(yīng)用特點(diǎn)。
1.2 XMPP協(xié)議
也即可擴(kuò)展的消息和出席狀態(tài)協(xié)議,能夠借助于XML的載體,實(shí)時(shí)交換互聯(lián)網(wǎng)終端的結(jié)構(gòu)化數(shù)據(jù),是一個(gè)類似于郵件服務(wù)的網(wǎng)絡(luò)架構(gòu)和云中心化的通訊體系,可以較好地支持安全認(rèn)證和加密傳輸,并在內(nèi)部網(wǎng)絡(luò)實(shí)現(xiàn)私有化部署,具有較高的可擴(kuò)展性。
XMPP體系結(jié)構(gòu)的內(nèi)部構(gòu)件部分主要包括:
1.2.1 服務(wù)器
在不同域的服務(wù)器進(jìn)行互聯(lián)網(wǎng)相連的前提下,實(shí)現(xiàn)對(duì)用戶賬號(hào)管理、會(huì)話連接及消息轉(zhuǎn)發(fā)等。
1.2.2 客戶端
通過TCP協(xié)議的前提和環(huán)境,以XML流的方式實(shí)現(xiàn)與本域服務(wù)器的會(huì)話連接和管理。
1.2.3 網(wǎng)關(guān)
可以將接收的XMPP消息進(jìn)行轉(zhuǎn)譯和解析,使之成為外部系統(tǒng)可用的協(xié)議,實(shí)現(xiàn)不同域服務(wù)器的互通。
1.3 Kafka架構(gòu)及消息處理
它是開源的分布式流處理平臺(tái),其架構(gòu)體系主要包括有以下部分:
1.3.1 生產(chǎn)者
將消息源推送到集群各主題分區(qū)。
1.3.2 消費(fèi)者
主要是對(duì)Kafka集群中的消息進(jìn)行處理,其消息處理模式主要為隊(duì)列式和訂閱發(fā)布式兩種。
1.3.3 代理
Kafka集群中的各個(gè)Kafka就是消息的代理,實(shí)現(xiàn)消息的接收、分發(fā)等功能。
1.4 Redis緩存
它是基于內(nèi)存的數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)應(yīng)用,支持不同的數(shù)據(jù)類型,內(nèi)含備份機(jī)制,具有集群高可用性和讀寫性能,適用于保存短期內(nèi)有效的信息,實(shí)現(xiàn)后臺(tái)Web服務(wù)的橫向擴(kuò)展。
2 基于Docker私有云的通訊協(xié)作平臺(tái)設(shè)計(jì)應(yīng)用分析
2.1 系統(tǒng)需求分析
2.1.1 即時(shí)通訊功能需求
企業(yè)通訊要能夠?qū)崟r(shí)查看用戶在線狀態(tài),進(jìn)行跨域的群消息查詢,支持不同類型的消息傳送,可以較好地提高用戶的交互體驗(yàn)。并采用加密手段,確保信息不被泄露。
2.1.2 組織架構(gòu)管理功能需求
企業(yè)內(nèi)部管理要求能夠?qū)θ藛T、部門的信息進(jìn)行及時(shí)更新和管理。如:個(gè)人聯(lián)系方式的信息管理;好友信息的管理等。
2.2 搭建Docker私有云平臺(tái)
搭建Docker私有云平臺(tái),主要從以下幾個(gè)方面加以實(shí)現(xiàn):
2.2.1 實(shí)現(xiàn)服務(wù)容器化
要對(duì)服務(wù)進(jìn)行容器化操作,將服務(wù)打包裝進(jìn)鏡像,采用Dockerfile為建構(gòu)腳本,分層進(jìn)行構(gòu)建,并對(duì)建構(gòu)過程進(jìn)行標(biāo)注,確保建構(gòu)過程的可控性,以滿足構(gòu)件復(fù)用及版本控制的需求。建構(gòu)鏡像的流程和步驟為:由空白鏡像或基礎(chǔ)庫(kù)鏡像人手,選取適宜的基礎(chǔ)鏡像一一拷貝JDK安裝文件并對(duì)其進(jìn)行解壓安裝,進(jìn)行JAVA運(yùn)行環(huán)境的參數(shù)配置一一配置即時(shí)通訊子系統(tǒng)所依賴的Openfire服務(wù)一一設(shè)置用戶及工作目錄等運(yùn)行環(huán)境一一運(yùn)行容器的啟動(dòng)命令。
2.2.2 實(shí)現(xiàn)云平臺(tái)容器調(diào)度
要運(yùn)用Docker Swarm集群管理工具,依照如下流程實(shí)現(xiàn)Docker云平臺(tái)容器的調(diào)度:初始化Swarm集群一一在swarm集群中加入管理節(jié)點(diǎn)和工作節(jié)點(diǎn)一一自動(dòng)調(diào)度并運(yùn)行服務(wù)容器。在真實(shí)的企業(yè)生產(chǎn)環(huán)境之中,云平臺(tái)還可以根據(jù)人數(shù)的變化而實(shí)現(xiàn)動(dòng)態(tài)的伸縮,實(shí)現(xiàn)彈性擴(kuò)展,提升對(duì)不同負(fù)載情況下的實(shí)時(shí)有效應(yīng)對(duì)和處理能力。
2.3 基于Docker私有云的通訊協(xié)作平臺(tái)子系統(tǒng)模塊設(shè)計(jì)與應(yīng)用
2.3.1 即時(shí)通訊子系統(tǒng)
基于Docker私有云的通訊協(xié)作平臺(tái)之中,該系統(tǒng)主要實(shí)現(xiàn)消息的傳輸、狀態(tài)查詢、用戶在線狀態(tài)查詢,其主要模塊包括有:
(1)消息傳輸模塊。它是即時(shí)通訊子系統(tǒng)的關(guān)鍵內(nèi)核,由以下部分構(gòu)成:攔截器用于對(duì)時(shí)間戳、回執(zhí)、多終端分發(fā)和超時(shí)重發(fā)等信息處理;消息處理器用于對(duì)輔助信息的描述和響應(yīng)消息監(jiān)聽器對(duì)離線消息進(jìn)行調(diào)用和處理轉(zhuǎn)發(fā)組件在對(duì)XML節(jié)的類型辨析的前提下,進(jìn)行消息的轉(zhuǎn)發(fā)和密鑰轉(zhuǎn)換。
(2)離線消息推送模塊。適用于用戶尚未打開客戶端條件下的信息推送服務(wù),運(yùn)用Kafka消息隊(duì)列,使同步消息傳輸轉(zhuǎn)換為異步的生產(chǎn)消費(fèi)模式。
(3)消息加密模塊。該模塊主要是運(yùn)用傳輸層中XMPP協(xié)議簇的TLS,對(duì)應(yīng)用層的消息傳輸實(shí)現(xiàn)加密處理。
2.3.2 組織架構(gòu)管理子系統(tǒng)
該子系統(tǒng)主要實(shí)現(xiàn)與企業(yè)OA系統(tǒng)的對(duì)接,實(shí)現(xiàn)對(duì)用戶、部門信息的同步管理。其內(nèi)部構(gòu)成模塊主要包括有:
(1)用戶群組管理模塊。該模塊重點(diǎn)實(shí)現(xiàn)對(duì)企業(yè)內(nèi)部員工群組的管理,利用HTTP協(xié)議的請(qǐng)求響應(yīng)方式,實(shí)現(xiàn)對(duì)數(shù)據(jù)的增減、刪除、修改、查詢等操作。
(2)請(qǐng)求驗(yàn)簽?zāi)K。該模塊主要是對(duì)服務(wù)器接收的請(qǐng)求的合法性進(jìn)行驗(yàn)證,主要是由過濾器依循一定的過濾規(guī)則對(duì)接收請(qǐng)求進(jìn)行校驗(yàn)。
(3)報(bào)文體加解密模塊。這是采用傳輸層和應(yīng)用層雙重加密的動(dòng)態(tài)密鑰體系,由服務(wù)器在過濾器中對(duì)預(yù)設(shè)的證書公鑰進(jìn)行加密,客戶端則采用對(duì)應(yīng)的私鑰進(jìn)行反向解密。
(4)定時(shí)任務(wù)調(diào)度模塊。該模塊以Quartz開源軟件為框架,在固定的時(shí)間間隔內(nèi)實(shí)現(xiàn)信息的同步操作,呈現(xiàn)出數(shù)據(jù)處理的動(dòng)態(tài)性,可以定時(shí)清理過期失效的文件及用戶密鑰,使之與企業(yè)OA系統(tǒng)信息同步。
2.3.3 開放平臺(tái)子系統(tǒng)
該系統(tǒng)實(shí)現(xiàn)與企業(yè)內(nèi)部OA系統(tǒng)應(yīng)用的對(duì)接操作,主要包括以下模塊:
(1)認(rèn)證管理模塊。該模塊用于檢驗(yàn)認(rèn)證接入應(yīng)用的合法性,其實(shí)現(xiàn)途徑是通過對(duì)校驗(yàn)碼代碼進(jìn)行核對(duì)的方式進(jìn)行驗(yàn)證。
(2)消息管理模塊。該模塊主要面向?qū)酉到y(tǒng)管理員,由對(duì)接系統(tǒng)管理員在權(quán)限內(nèi)登錄平臺(tái),采用JSON數(shù)據(jù)傳輸格式,通過用戶管理模塊和素材管理模塊向用戶或小組發(fā)送消息,進(jìn)行REST接口的調(diào)用和處理,實(shí)現(xiàn)對(duì)用戶或小組信息的增減、刪除、修改和查詢等功能,支持文字或圖片等不同的消息類型。
3 小結(jié)
綜上所述,傳統(tǒng)的通訊軟件難以滿足移動(dòng)辦公快速發(fā)展的現(xiàn)實(shí)需求,要充分運(yùn)用Docker虛擬化技術(shù)、容器調(diào)度技術(shù)、Redis緩存等關(guān)鍵性技術(shù),搭建基于Docker私有云的通訊協(xié)作平臺(tái),在統(tǒng)一的跨平臺(tái)接口及XMPP協(xié)議的支持和依托下,形成集群化、模塊化的通訊協(xié)作平臺(tái)子系統(tǒng),使之具有高度的擴(kuò)展性、移植性和集成能力。后續(xù)還要突破技術(shù)瓶頸,開發(fā)完整平臺(tái)監(jiān)控系統(tǒng)和運(yùn)維一體化系統(tǒng),提升系統(tǒng)的負(fù)載能力。
參考文獻(xiàn)
[1]蔡云龍,基于Docker的私有云系統(tǒng)的設(shè)計(jì)[J].電子產(chǎn)品世界,2016 (04).
[2]王亞玲,李春陽,崔蔚,張晶,基于Docker的PaaS平臺(tái)建設(shè)[J],計(jì)算機(jī)系統(tǒng)應(yīng)用,2016 (03).
[3]田玉靖,張晨光,任女爾,基于Docker的Redis緩存架構(gòu)的研究[J].電腦知識(shí)與技術(shù),2015 (23).