云智慧透視寶前端架構(gòu)那些事兒

當(dāng)移動(dòng)互聯(lián)網(wǎng)與云計(jì)算出現(xiàn)后,用戶(hù)不必再和企業(yè)的服務(wù)人員打交道,而是通過(guò)移動(dòng)APP來(lái)直接獲取服務(wù),這就造成用戶(hù)體驗(yàn)前置。傳統(tǒng)的ITOM產(chǎn)品由于缺少有效的移動(dòng)端和云端監(jiān)管手段,難以發(fā)現(xiàn)用戶(hù)體驗(yàn)前置帶來(lái)的性能瓶頸,云智慧面向業(yè)務(wù)的端到端性能管理平臺(tái)透視寶以業(yè)務(wù)的視角,對(duì)整個(gè)用戶(hù)體驗(yàn)交付鏈條的每一個(gè)環(huán)節(jié)進(jìn)行數(shù)據(jù)采集和分析,準(zhǔn)確發(fā)現(xiàn)和定位影響用戶(hù)體驗(yàn)的任何性能問(wèn)題。

目前透視寶前端應(yīng)用包含以下幾個(gè),關(guān)系圖如下所示

透視寶通過(guò)主站與用戶(hù)進(jìn)行直接交互,為用戶(hù)提供網(wǎng)站、移動(dòng)App、主機(jī)、服務(wù)等應(yīng)用的性能數(shù)據(jù)。用戶(hù)認(rèn)證、數(shù)據(jù)中心、文檔中心應(yīng)用都是直接或間接為主站提供服務(wù),本次說(shuō)明只針對(duì)透視寶主站,以下使用的前端均指主站前端服務(wù)。

服務(wù)布局

透視寶前端涉及到以下幾個(gè)服務(wù):

DataSource為后端數(shù)據(jù)系統(tǒng),通常情況下的請(qǐng)求流程如下:用戶(hù)發(fā)出請(qǐng)求后首先訪問(wèn)到Tengine,Tengine作為反向代理把請(qǐng)求轉(zhuǎn)發(fā)到Apache,Apache調(diào)用PHP首先從Redis獲取信息,若無(wú)數(shù)據(jù)則從Mysql中補(bǔ)充,如果請(qǐng)求含有主機(jī)、服務(wù)、應(yīng)用等數(shù)據(jù)則會(huì)從Elasticsearch中獲取。

前端應(yīng)用架構(gòu)

云智慧透視寶前端使用PHP作為開(kāi)發(fā)語(yǔ)言,使用了Seaslog的日志擴(kuò)展,Cwop的用戶(hù)管理擴(kuò)展,Redis擴(kuò)展,yaf擴(kuò)展(CwopServer端依賴(lài)),其作用如下:

Seaslog:PHP日志模塊,為開(kāi)發(fā)人員提供線上線下日志情況的分析材料

Curl:PHP Rest服務(wù)基礎(chǔ),為PHP調(diào)用后端Api接口提供支持

Yaf:Cwop的Server為yaf框架開(kāi)發(fā),依賴(lài)PHP的yaf框架

Cwop:Cwop的php客戶(hù)端

PHP使用目前流行的Laravel框架進(jìn)行開(kāi)發(fā),前端運(yùn)行流程如下所示:

Laravel提供了多語(yǔ)言,數(shù)據(jù)庫(kù),緩存,郵件,依賴(lài)包管理等功能,極大提高了透視寶的開(kāi)發(fā)效率,以下是透視寶前端兩個(gè)比較重要的功能:

· UnitTest - Laravel集成并強(qiáng)化了PHP的單元測(cè)試功能,結(jié)合谷歌插件,使開(kāi)發(fā)人員可以完成端到端的調(diào)試工作;

· Artisan命令行工具 - 結(jié)合Linux的Crontab,完成了郵件發(fā)送,SmartAgent插件管理、心跳管理,告警交互等功能,單獨(dú)使用時(shí)可以執(zhí)行腳本完成數(shù)據(jù)庫(kù)的自動(dòng)化修改;

從PHP處理數(shù)據(jù)到前端頁(yè)面展現(xiàn)我們使用了目前流行的:

BootstrapCss框架,使前端頁(yè)面美觀自適

Seajs為透視寶使用的JS模塊選擇加載框架

Echarts作為透視寶使用的繪圖工具,其適應(yīng)性,可操作性都是非常良好的,透視寶所有版面的圖片基本都是Echarts生成的。

數(shù)據(jù)采集流程

透視寶數(shù)據(jù)采集分為三個(gè)來(lái)源:

1.用戶(hù)安裝SmartAgent,插件采集,通過(guò)SendProxy發(fā)送的數(shù)據(jù)。

2.用戶(hù)安裝SmartAgent插件后注入JS,或手動(dòng)注入JS,JS采集的數(shù)據(jù)。

3.移動(dòng)端嵌入SDK,采集移動(dòng)APP數(shù)據(jù)。

如下圖所示:

數(shù)據(jù)采集使用Sendproxy為SmartAgent的調(diào)度器,所有SmartAgent的數(shù)據(jù)都經(jīng)過(guò)Sendproxy進(jìn)行統(tǒng)一調(diào)度發(fā)送。

其主要優(yōu)勢(shì)在于:

· 發(fā)送隊(duì)列,保證各插件數(shù)據(jù)發(fā)送的穩(wěn)定性

· 可以作為代理,部署都可聯(lián)外網(wǎng)的主機(jī),可以保證局域網(wǎng)非聯(lián)網(wǎng)環(huán)境的數(shù)據(jù)發(fā)送

端到端實(shí)現(xiàn)原理

端到端是透視寶的重要功能特色,其實(shí)現(xiàn)原理簡(jiǎn)單地說(shuō),把請(qǐng)求流程中所有途經(jīng)節(jié)點(diǎn)都記錄下來(lái),通過(guò)code堆棧和服務(wù)采集的數(shù)據(jù)還原請(qǐng)求所遍歷的過(guò)程。

上圖是一個(gè)請(qǐng)求拓?fù)?,是典型的Nginx Proxy,Apache Server,PHP解析,Mysql DB的架構(gòu),請(qǐng)求經(jīng)過(guò)了Nginx->Apache->PHP->Mysql&Api,在各節(jié)點(diǎn)上點(diǎn)擊可以查看:

· 請(qǐng)求當(dāng)時(shí)各服務(wù)的運(yùn)行狀態(tài)

· 請(qǐng)求的代碼堆棧,SQL連接,異常信息,連接狀態(tài)

實(shí)現(xiàn)原理如下(默認(rèn)各節(jié)點(diǎn)已經(jīng)安裝了我們的SmartAgent):

請(qǐng)求到Nginx時(shí),Nginx在請(qǐng)求中添加唯一id標(biāo)志,然后轉(zhuǎn)發(fā)到Apache,Apache在請(qǐng)求中收到我們的id標(biāo)志,則會(huì)延用此id,請(qǐng)求交到PHP,同理PHP,Mysql等也會(huì)在請(qǐng)求中延用此id標(biāo)志。

PHP獲取數(shù)據(jù)處理完成后請(qǐng)求結(jié)束,開(kāi)始響應(yīng)過(guò)程,PHP在響應(yīng)信息中添加相同的id標(biāo)志,交還給Apache,Apache返回Nginx時(shí)會(huì)在響應(yīng)信息中延用此id,Nginx把內(nèi)容發(fā)送到瀏覽器靜態(tài)頁(yè)面時(shí),連同id與我們的JS文件發(fā)送到用戶(hù)端,用戶(hù)端JS捕獲瀏覽器數(shù)據(jù)后發(fā)送到我們的后端DataSource處理。

透視寶獲取到PHP應(yīng)用帶有此id的請(qǐng)求數(shù)據(jù)時(shí),可以查到Nginx,Apache的請(qǐng)求信息,也可以獲取Mysql,Api的請(qǐng)求信息,端到端的拓?fù)鋱D也就形成了,通過(guò)id可心獲取終端用戶(hù)的信息。如果終點(diǎn)的Api也使用了我們的CodeAgent,則會(huì)轉(zhuǎn)化成應(yīng)用,與前面的PHP一樣繼續(xù)向后延伸,否則只顯示請(qǐng)求的Api信息,獲取不到Code詳情。

在上述過(guò)程中,Nginx Agent,Apache Agent,Mysql Agent一直持續(xù)發(fā)送數(shù)據(jù),所以當(dāng)點(diǎn)擊Nginx時(shí)就可以根據(jù)請(qǐng)求時(shí)間獲取Nginx的即時(shí)狀態(tài),為用戶(hù)端到端的分析提供強(qiáng)有力的支持。

下面提供一個(gè)前后端數(shù)據(jù)交互的完整點(diǎn)的簡(jiǎn)圖,其中DataSource對(duì)Mysql的操作是通過(guò)透視寶應(yīng)用的接口實(shí)現(xiàn)的

極客網(wǎng)企業(yè)會(huì)員

免責(zé)聲明:本網(wǎng)站內(nèi)容主要來(lái)自原創(chuàng)、合作伙伴供稿和第三方自媒體作者投稿,凡在本網(wǎng)站出現(xiàn)的信息,均僅供參考。本網(wǎng)站將盡力確保所提供信息的準(zhǔn)確性及可靠性,但不保證有關(guān)資料的準(zhǔn)確性及可靠性,讀者在使用前請(qǐng)進(jìn)一步核實(shí),并對(duì)任何自主決定的行為負(fù)責(zé)。本網(wǎng)站對(duì)有關(guān)資料所引致的錯(cuò)誤、不確或遺漏,概不負(fù)任何法律責(zé)任。任何單位或個(gè)人認(rèn)為本網(wǎng)站中的網(wǎng)頁(yè)或鏈接內(nèi)容可能涉嫌侵犯其知識(shí)產(chǎn)權(quán)或存在不實(shí)內(nèi)容時(shí),應(yīng)及時(shí)向本網(wǎng)站提出書(shū)面權(quán)利通知或不實(shí)情況說(shuō)明,并提供身份證明、權(quán)屬證明及詳細(xì)侵權(quán)或不實(shí)情況證明。本網(wǎng)站在收到上述法律文件后,將會(huì)依法盡快聯(lián)系相關(guān)文章源頭核實(shí),溝通刪除相關(guān)內(nèi)容或斷開(kāi)相關(guān)鏈接。

2016-04-12
云智慧透視寶前端架構(gòu)那些事兒
當(dāng)移動(dòng)互聯(lián)網(wǎng)與云計(jì)算出現(xiàn)后,用戶(hù)不必再和企業(yè)的服務(wù)人員打交道,而是通過(guò)移動(dòng)APP來(lái)直接獲取服務(wù),這就造成用戶(hù)體驗(yàn)前置。傳統(tǒng)的ITOM產(chǎn)品由于缺少有效的移動(dòng)端和云端監(jiān)管手段,難以發(fā)現(xiàn)用戶(hù)體驗(yàn)前置帶來(lái)的性能瓶頸,云智慧面向業(yè)務(wù)的端到端性能管理平臺(tái)透視寶以業(yè)務(wù)的視角,對(duì)整個(gè)用

長(zhǎng)按掃碼 閱讀全文