乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      陳科:河貍家運維系統(tǒng)監(jiān)控系統(tǒng)的實現(xiàn)方案

       命運之輪 2016-01-19

      河貍家運維發(fā)展的歷程

      河貍家運維發(fā)展歷程,是從無到有的過程。河貍家起初聘請了一家外包公司幫助開發(fā)早期的產(chǎn)品,但使用中出現(xiàn)了一些問題。后來逐漸發(fā)現(xiàn)原來軟件部署上去之后,不只要進(jìn)行增刪改查功能,還要有專門的運維工程師去線上運維做相關(guān)的工作。

      運維團(tuán)隊的職責(zé)也經(jīng)歷了從不清晰到明確的過程。之前有的工程師同時兼做很多工作,日常工作 40% 、 50% 的時間都是做幫領(lǐng)導(dǎo)導(dǎo)報表,久而久之他變得非常郁悶,本職工作也很難做得好。

      圖片描述

      河貍家的運維,其實也是從黑盒到白盒的過程。作為一個程序員,個人會有很強的控制欲:如果說不知道要上線的東西源碼是怎么寫的,心里會很是慌兮兮的。運維希望各個數(shù)據(jù)都可以看得到,又全部都可以串起來。之前可能只是用簡單地監(jiān)控讀取一些數(shù)據(jù),但是其中整個請求串起來之后,代碼中出了什么問題,比如說活動的場景出現(xiàn)問題,可能就束手無策了。

      此外,這還是從混亂到規(guī)范的過程。什么是混亂?大家很多都是從創(chuàng)業(yè)公司出來的,遇到過很多創(chuàng)業(yè)公司發(fā)展中的問題。在創(chuàng)業(yè)公司,包括團(tuán)隊、人員、項目,都需要不斷地進(jìn)行自我學(xué)習(xí)、提升和修煉,是一個不停成長的過程,因此不可能一下子都很完美。所以說在這個過程當(dāng)中,公司整個項目,包括項目管理開發(fā)流程等等都是缺失的。

      舉個例子,團(tuán)隊做一個簡單的版本發(fā)布,怎么做呢?發(fā)布之前,產(chǎn)品和運維的同學(xué)給了你一些不同的功能提議,結(jié)果確定下來之后發(fā)布日期馬上就到了,這時候只能加班加點去開發(fā)。這種情況下去發(fā)布,運維半夜三更被叫起來去做,結(jié)果發(fā)布上去出現(xiàn)一堆問題,頓時傻眼了。這樣下來,運維的黑鍋越背越多,就被別人說成“不靠譜”。

      這個時候需要反思。當(dāng)團(tuán)隊把來龍去脈想通之后,會認(rèn)識到項目管理的過程都是一環(huán)扣一環(huán),而往往最后一道環(huán)節(jié)是產(chǎn)品、技術(shù)、運維可以看見的這一部分。因此一旦出了問題,就得背黑鍋,前面的環(huán)節(jié)干了“壞事”的人都逃之夭夭了。把這個東西梳理清楚之后,規(guī)范就可以推行起來。項目管理到底要怎么管?提下我們的想法和思路。

      項目管理的想法和思路

      圖片描述

      首先,是從業(yè)余到標(biāo)準(zhǔn)運維的思路。什么叫從業(yè)余到標(biāo)準(zhǔn)?之前線上的服務(wù)端用 java 的代碼比較多。以部署為例,在之前的部署當(dāng)中,發(fā)包的過程是把手工的包丟過來,而后是手工腳本。有些同學(xué)改了代碼,發(fā)現(xiàn)線上跑的代碼跟你的對不起來。所以就要制定標(biāo)準(zhǔn),這個標(biāo)準(zhǔn)是什么?包括軟件怎么打包、怎么部署、怎么成為一個標(biāo)準(zhǔn)的軟件上線,都需要去梳理;在框架方面,比如 java 工程能一鍵生成一個可執(zhí)行、可交互的軟件。

      此外,關(guān)于上線流程也研發(fā)了統(tǒng)一的系統(tǒng),用這個流程去對接,包括 SVN 開發(fā)標(biāo)準(zhǔn)梳理等。前期推行時,開發(fā)同學(xué)可能不太適應(yīng),因為不管怎么說,從作坊式的走向規(guī)范化都不是件容易事。另外還建立了緊急發(fā)布環(huán)節(jié):可以讓你通過審核,但是要找領(lǐng)導(dǎo)去批。當(dāng)然大家一開始不適應(yīng)找領(lǐng)導(dǎo)簽字。過了幾個月之后,統(tǒng)計緊急發(fā)布了多少,正常發(fā)了多少,為什么每天都是緊急發(fā)布?真的業(yè)務(wù)到了每天都需要發(fā)的情況嗎?這些問題都有據(jù)可查了。所以這個東西不僅僅是個標(biāo)準(zhǔn),也可以作為記錄,充當(dāng)是否合理的有力評判依據(jù)。

      要從被動往主動去發(fā)展。我們一直希望運維能反過來推進(jìn)一些事情:包括提前預(yù)測一些業(yè)務(wù)上的情況,以及未來業(yè)務(wù)的發(fā)展規(guī)劃等。當(dāng)然這個實現(xiàn)起來可能很困難。

      BAT 有些系統(tǒng)很牛逼,做得很完美。但公司通過某個渠道把它拿過來,納為己用是不是就高枕無憂了呢?不是這樣的,技術(shù)沒有牛逼不牛逼、高大上不高大上,只有合適不合適,能不能在自己的場景里面適用。

      運維在這個系統(tǒng)上線之后,不停地發(fā)現(xiàn)線上的問題,包括技術(shù)的、業(yè)務(wù)的,因而不停地去優(yōu)化,讓公司軟件業(yè)務(wù)不斷地往好的方向發(fā)展。因為問題永遠(yuǎn)不可能消除,學(xué)過矛盾各位的都知道,矛盾只可以轉(zhuǎn)移,不可以消滅,一個矛盾接著一個矛盾,我們只能兵來將擋、水來土掩。后臺有報警系統(tǒng)、用戶投訴、客戶投訴、后臺分析等,現(xiàn)在會統(tǒng)一提交到運維做綜合性的分析,再去判斷問題的可能性。比如是自身的問題就去做修復(fù),如果不是我們這里的問題,就要跟研發(fā)等相應(yīng)的團(tuán)隊同學(xué)去溝通、配合。

      運維在整個公司項目管理過程當(dāng)中,其實是最后一個環(huán)節(jié)。所以運維把工作做好的前提是:把整個流程全部都串起來。只有把這個工作做好了,運維的工作才能做好。而如果這個工作不做好,運維永遠(yuǎn)沒有話語權(quán)去反推其他部門。因此,流程可能不一定按照這種方式去走,但是一定要找到一條適合自己公司、自己場景的道路,去把這個流程規(guī)范好。

      為什么要做監(jiān)控系統(tǒng)?

      圖片描述

      在做這個系統(tǒng)之前,團(tuán)隊曾面臨一些問題。第一,運維系統(tǒng)之前只是針對服務(wù)器,用 zabbix 等做了一些監(jiān)控,接入了短信的報警。但后來發(fā)現(xiàn)監(jiān)控一旦報警之后,首先沒人處理;其次報警沒有分類,具體報了什么無從知曉,沒什么意義;再次研發(fā)人員不關(guān)注運維,只是需求功能的疊加。之前研發(fā)團(tuán)隊只關(guān)注開發(fā)功能,不關(guān)注上線之后代碼到底產(chǎn)生什么作用,運維好不容易把工作做好了,結(jié)果隔了一段時間,這些問題又來了。因為開發(fā)不關(guān)注這些東西,也不去審查這些問題,運維根本就沒法做到。

      第二,研發(fā)團(tuán)隊自身的能力也很難得到成長,因為他們永遠(yuǎn)只是在開發(fā)功能,但是不知道功能上去之后對業(yè)務(wù)有什么影響,也根本不關(guān)注。久而久之,團(tuán)隊也很難更好地成長,并且人員歸屬感、能力提升等等都會受到一系列的制約。最后,公司的系統(tǒng)成了一個黑盒,如果真的出了問題,除了底層 zabbix 可以報警之外,其他一無所知。只能隨便亂搞,不知道到底是哪里的問題,這時候真的是抓狂的。

      提出這些問題之后,這個平臺開始建立,設(shè)想有這么幾個初衷:

      第一,系統(tǒng),基礎(chǔ)軟件,服務(wù)狀態(tài)等都是可以可視化的。
      第二,整個流程是可以跟蹤到的。
      第三,能對線上的流量,包括 PV 、 UV 進(jìn)行統(tǒng)計和分析。
      第四,可以定期跟蹤到線上的代碼性能情況,比如說代碼執(zhí)行站最終性能卡在哪里,哪個函數(shù)調(diào)用比較慢等。
      第五,希望對數(shù)據(jù)庫的慢查做一些分析。
      第六,業(yè)務(wù)穩(wěn)定性監(jiān)測,比如說商品訂單支付可以做一些穩(wěn)定性的監(jiān)測。
      第七,對報警做分級,做到可分支,多個通道都可以接入,可以短信、郵件包括微信報警。
      第八,從運維的角度便于業(yè)務(wù)分析數(shù)據(jù)。
      

      考慮自己的問題。不管是業(yè)務(wù)還是技術(shù),可能運維只是考慮到系統(tǒng)服務(wù)器怎么運維,但產(chǎn)品也需要運維,如果沒有一些可視化的東西,你都不知道自己的數(shù)據(jù)是怎么回事。產(chǎn)品上線之后,久了也不知道問題出在哪里,這從廣義的角度也是一個運維的過程。

      監(jiān)控系統(tǒng)的解決方案

      第一版的解決方案是這樣的:首先 LVS 請求進(jìn)來,通過 APP 協(xié)議分發(fā)再到后端的 agent 、 ngx ,給它加了 ID 的概念,自己隨機生成,一直把后面的 ID 把整個請求流程貫穿起來。

      圖片描述

      河貍家在 server 端開發(fā)了一個 agent 功能,對 java 產(chǎn)品的日志做一些采集,采集完之后丟到后端里面去。與 APP應(yīng)用服務(wù)器部署在一塊。 MonitorServer 主要用于監(jiān)控系統(tǒng)級軟件,通過 MonitorServer 定期去交互,取一些數(shù)據(jù)丟到隊列里面。

      報警服務(wù)器其實是一個流失計算的過程,收到數(shù)據(jù)之后適時做一些 Ctrl 工作,有一些規(guī)則觸發(fā)之后,會激活后面進(jìn)行報警處理。我們有一些 rebport-server ,也可以通過流失的方式,對一些報表,比如每日匯總的數(shù)據(jù),通過這種方式計算,錄入到匯總表里面去。

      第二個是采集模塊,采集 java 的內(nèi)容,目前比較粗放,通過 java agent ,嵌入一些采集數(shù)據(jù)的功能,把 java 業(yè)務(wù)相關(guān)的數(shù)據(jù),代碼執(zhí)行站通過這種方式采過來之后,丟往后端。 MonitorServer ,像 redis 就是基于 Info&monitor 命令實現(xiàn)的。我們沒有自己寫代碼,直接把別人的東西改了改,直接分到自己的 MonitorServer 里面去了。

      圖片描述

      此外,現(xiàn)在對于后端的 dao/jdbc 也做了一個工作,主要把傳輸執(zhí)行的參數(shù)以及執(zhí)行時間這一塊拿過來放到后端。當(dāng)然這個東西不是實時去取,因為不管怎么弄,這塊數(shù)據(jù)無法實時獲取。java agent 通過自解碼能做的功能相對有限,因為在 agent 系統(tǒng)沒啟動之前,想做一些現(xiàn)成詞的工作會遇到很多問題。

      在這種情況面,只能簡單地去實現(xiàn)幾個預(yù)估的現(xiàn)成丟在里面,預(yù)估的現(xiàn)成除非在硬件級別支持后臺異步,否則異步就是假的,隊列大小能搞多少呢?搞得再大,也不能解決在業(yè)務(wù)高峰期有很多數(shù)據(jù)丟過來時,隊列會撐滿的情況。這個時候,異步就變成了同步,后面全部都會被堵塞掉。所以在這種場景下面,采集的工作其實是,在一臺機器上面抽樣,在某個時間點取得一部分?jǐn)?shù)據(jù),通過這個時間點來采集。

      數(shù)據(jù)完成之后,需要統(tǒng)計業(yè)務(wù)各個層次的情況。我們分裝了一個 IP 庫,主要是將 GeoLite2 、純真庫、 Ip.cn 貫穿起來,幾年日志里的 IP 地址和 Geo 地址都包含在里面。

      圖片描述

      這樣,平時的流量分析就可以統(tǒng)計到各個維度?,F(xiàn)在,IP 地址的排名、網(wǎng)絡(luò)狀態(tài),還有哪個業(yè)務(wù)最高等都可以監(jiān)控到。

      圖片描述

      做了這個監(jiān)控之后,也發(fā)現(xiàn)了一些問題:4 點鐘的時候,流量會很奇怪地突然下降,因此發(fā)現(xiàn)有人定期 4 點鐘來查我們的列表,因為 IP 地址都是零散的,所以不能直接通過肉眼觀察到這些問題。比如雙 11 那天,因為后端還用比較老的連接詞,但那時候連接詞堵不住了,有些代碼就堵住。在這種情況下,運維就可以直接排查, C3P0 的隊列就可以重新排名。

      圖片描述

      另外,針對 java 的進(jìn)程也做了一個健康度的采集,比如說 CPU 內(nèi)存、 YGC 等等,都可以在這里展示出來。像數(shù)據(jù)庫慢查,每秒鐘的時間點都可以在這里看到?,F(xiàn)在可以做郵件、手機、微信報警的配置。

      架構(gòu)的改進(jìn)

      圖片描述

      隊列數(shù)據(jù)多了之后,由于隊列不是專用的,因此如果把它當(dāng)隊列使用的話,做拓展、做集群都會遇到一些問題。后來改為直接用 Spark-streaming 來更換計算服務(wù),用 filter 和 aop 替代 javaagent 來做字節(jié)碼增強。

      上文提到一鍵生成可以運行的 java 工程,這是我們開發(fā)了一個 jee-template ,后期也會針對發(fā)布系統(tǒng)和監(jiān)控系統(tǒng)開發(fā)源代碼。

      分享人:陳科,河貍家架構(gòu)師。他負(fù)責(zé)河貍家后端系統(tǒng)的架構(gòu)工作,在架構(gòu)和系統(tǒng)運維方面有著豐富的經(jīng)驗。
      

      本文整理自河貍家架構(gòu)師陳科日前在“UPYUN架構(gòu)與運維大會·北京站” 上的主題演講。UPYUN 架構(gòu)與運維大會是國內(nèi)領(lǐng)先的新一代云CDN服務(wù)商UPYUN獨家主辦的大型技術(shù)會議。大會面向全國運維和架構(gòu)從業(yè)者,邀請業(yè)內(nèi)一線的架構(gòu)師和運維專家進(jìn)行純干貨分享,旨在推動各項運維技術(shù)、產(chǎn)品架構(gòu)等在互聯(lián)網(wǎng)和移動互聯(lián)網(wǎng)的研發(fā)和應(yīng)用。

      「CSDN 高級架構(gòu)師群」,內(nèi)有諸多知名互聯(lián)網(wǎng)公司的大牛架構(gòu)師,歡迎架構(gòu)師加微信qshuguang2008入群,備注姓名+公司+職位。

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多