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

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

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

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

服務(wù)布局

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

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

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

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

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

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

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

Cwop:Cwop的php客戶端

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

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

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

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

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

BootstrapCss框架,使前端頁面美觀自適

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

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

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

透視寶數(shù)據(jù)采集分為三個來源:

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

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

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

如下圖所示:

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

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

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

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

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

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

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

· 請求當(dāng)時各服務(wù)的運行狀態(tài)

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

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

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

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

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

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

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

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

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

長按掃碼 閱讀全文