摘要:等研發(fā)介入時(shí),現(xiàn)場(chǎng)已經(jīng)不復(fù)存在。因此,我要求戒律一凡是中間件,不管是自主研發(fā)的,還是以開源軟件為內(nèi)核構(gòu)建出來的,都必須自帶監(jiān)控報(bào)警,否則不允許上線。
鄭昀(公眾號(hào):老兵筆記) 20180411
如果你在繁忙的業(yè)務(wù)迭代中開始系統(tǒng)重構(gòu),恭喜你,說明你的業(yè)務(wù)已經(jīng)完成了從0到1,正在從1走向10,或者從10走向100。
至于重構(gòu)后的技術(shù)棧是 Spring MVC+Dubbo,還是 Spring Boot+Spring Cloud?
是 Vue+ElementUI,是 React,還是 Ant.design,抑或就是上古時(shí)代的 JQuery+Bootstrap?
是 k8s,還是 mesos+marathon?是 Thrift,還是 Hessian,抑或 Protobuf?我并不在意。
我并不 care 這些東西,每個(gè)技術(shù)團(tuán)隊(duì)都可以有自己的技術(shù)選型思路。
我在意的是兩個(gè)“是否有利于”:
一,是否有利于發(fā)布部署。
二,是否有利于排除故障(是否有利于快速定位線上問題和解決問題)。
為什么要強(qiáng)調(diào)它倆?
因?yàn)槲覀冊(cè)谶^去六七年間,經(jīng)歷了太多的生死折磨。如履薄冰如臨深淵。
我們?cè)亲霰镜厣罘?wù)電商的,餐飲/電影/酒店/景點(diǎn)門票/美容美發(fā)……
節(jié)假日往往也是本地生活服務(wù)的峰值日,飯點(diǎn)兒就相當(dāng)于秒殺。
太多次在假期被召回。
太多次打電話給各個(gè) TeamLeader,有時(shí)電腦不在身邊,有時(shí)深山老林無法上網(wǎng),有時(shí)無人接聽,有時(shí) VPN 連不進(jìn)去~
多少次翹首期盼 DBA、SA、QA、DevManager 們給我回報(bào)到底出啥事兒了。
請(qǐng)先閱讀一下我寫的《經(jīng)歷不可抗力是一種什么體驗(yàn)》,了解一下什么是 too young too naive。
以至于我有兩個(gè)怨念:
怨念一,Centreon 爛到渣,Zabbix 也不咋的,基礎(chǔ)運(yùn)維的那些神兵利器,都不考慮做業(yè)務(wù)的人,尤其是業(yè)務(wù)集群規(guī)模龐大的人,到底是怎么排查問題排除故障的。
SA 是怎么工作的?
一旦出現(xiàn)連接數(shù)暴漲,Web/App 服務(wù)長(zhǎng)時(shí)間無響應(yīng),應(yīng)用內(nèi)存飆升,SA 拍馬趕到,一定是先重啟相關(guān)應(yīng)用(不管是容器還是虛擬機(jī)),如果還不管用,就立即將相關(guān)應(yīng)用悉數(shù)回滾到上一個(gè)穩(wěn)定版本上,爭(zhēng)取以最短時(shí)間恢復(fù)。
等研發(fā)介入時(shí),現(xiàn)場(chǎng)已經(jīng)不復(fù)存在。
六七年前,事發(fā)后,我們登入 Centreon 和 ELK,按機(jī)器組、按機(jī)器、按指標(biāo),用肉眼,用大腦,結(jié)合各個(gè)業(yè)務(wù)集群里的日志,結(jié)合 Nagios 報(bào)警短信,理出來一個(gè)因果證據(jù)鏈。
你可能需要打開幾百個(gè)監(jiān)控頁面,你還需要精通業(yè)務(wù)集群的分組、調(diào)用關(guān)系和IP(那時(shí)候還沒有 Docker 容器,都是虛擬機(jī))。
這也就是為什么我定下我司研發(fā)哲學(xué)第一條:Don"t make me think……
怨念二,開源軟件的開發(fā)者是好人也往往是性情中人,不太考慮排除故障成本低、可視化、高可用、可伸縮、監(jiān)控報(bào)警等商業(yè)系統(tǒng)必備的運(yùn)維屬性,拿來主義必死無葬身之地。
舉個(gè)例子吧,ActiveMQ 和 RabbitMQ 有生產(chǎn)者流量控制,如果你沒有聽說過,沒有遇到過,恭喜你,但也表明你的業(yè)務(wù)量還是太小。
你可能會(huì)說,遇到了生產(chǎn)者流量控制,說明下游消費(fèi)者消費(fèi)得太慢,加快速度不就完了?
在電商服務(wù)中,異步消息隊(duì)列的消費(fèi)者往往是與第三方系統(tǒng)網(wǎng)絡(luò)通訊,第三方系統(tǒng)可就不在你控制范圍之內(nèi)了,一個(gè)第三方系統(tǒng)掛了,或者突然擁塞,就會(huì)憋住你的消費(fèi)者集群的所有線程,造成消息積壓。因此就將上游生產(chǎn)者掛起?開玩笑呢吧?!咋想的這都是?讓災(zāi)難從下游蔓延到上游?!
那么我們應(yīng)該怎么思考系統(tǒng)重構(gòu)呢?
隨著業(yè)務(wù)規(guī)模越來越大,隨著應(yīng)用越來越多,隨著 Docker 容器集群的引入,隨著前后端分離導(dǎo)致內(nèi)部接口越來越多,隨著 API 網(wǎng)關(guān)的引入,我們?cè)絹碓诫y以在5分鐘之內(nèi)斷定系統(tǒng)出了什么事兒。
因此,我要求:
戒律一:凡是中間件,不管是自主研發(fā)的,還是以開源軟件為內(nèi)核構(gòu)建出來的,都必須自帶監(jiān)控報(bào)警,否則不允許上線。
戒律二:本著 Don"t make me think 的哲學(xué)思路,所有對(duì)排除故障有幫助的信息,都必須一站式展示在交互界面上,也就是在中間件的控制臺(tái)上,或運(yùn)維自動(dòng)化平臺(tái)上,或研發(fā)協(xié)作平臺(tái)上。
下面舉一些具體的例子,幫助大家理解。
我司的技術(shù)支撐體系如下圖所示(或點(diǎn)擊查看原圖):
其中:
1,定時(shí)任務(wù)管理與調(diào)度平臺(tái)有運(yùn)行情況展示,自帶監(jiān)控報(bào)警:
2,異步消息可靠推送系統(tǒng)有可視化的內(nèi)部詳情展示,自帶監(jiān)控報(bào)警:
3,分布式并行計(jì)算調(diào)度與管理平臺(tái)一站式展示工作流下每一個(gè)任務(wù)在所有節(jié)點(diǎn)上的運(yùn)行日志,并自帶監(jiān)控報(bào)警:
4,大數(shù)據(jù)協(xié)作平臺(tái)自帶監(jiān)控報(bào)警:
5,我們甚至要把所有 PC 客戶端,所有智能設(shè)備都監(jiān)管起來:
6,研發(fā)協(xié)作平臺(tái)一站式展示應(yīng)用部署的方方面面:
可以說我們打造的每一個(gè)中間件、協(xié)作平臺(tái)都體現(xiàn)了戒律一和戒律二。
不需要東奔西走,四處收集蛛絲馬跡。
不需要一次性點(diǎn)開幾百個(gè)指標(biāo)頁面,腦補(bǔ)推演。
不需要精通集群部署結(jié)構(gòu)。
不需要熟知應(yīng)用日志的路徑。
對(duì),這就是為我這樣的“旁觀者”、“小白”準(zhǔn)備的。
有了這些系統(tǒng),即使大家都出去玩了,我一個(gè)人也能看出問題所在,同時(shí)也能有效應(yīng)對(duì)鐵打營(yíng)盤流水兵的情況。
當(dāng)你完成了從0到1的跨越,正在從1走向10,走向100,請(qǐng)記住下面的忠言:
兩個(gè)“是否有利于”:
一,是否有利于發(fā)布部署。
二,是否有利于排除故障(是否有利于快速定位問題和解決問題)。
兩個(gè)戒律:
戒律一:凡是中間件,不管是自主開發(fā)的,還是以開源軟件為內(nèi)核構(gòu)建出來的,都必須自帶監(jiān)控報(bào)警,否則不允許上線。
戒律二:本著 Don"t make me think 的哲學(xué)思路,所有對(duì)排除故障有幫助的信息,都必須一站式展示在交互界面上,也就是中間件的控制臺(tái)上,或運(yùn)維自動(dòng)化平臺(tái)上,或研發(fā)協(xié)作平臺(tái)上。
-EOF-
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/8034.html
摘要:關(guān)于與的區(qū)別,網(wǎng)上已經(jīng)有不少文章了,在此不多談。主要想談的是在制作網(wǎng)頁時(shí),什么時(shí)候設(shè)定字體大小用,什么時(shí)候用先談結(jié)論,再講為什么。一般情況下,還是以用為主,只有當(dāng)需要在不同設(shè)備上顯示不同大小的字體時(shí),再用。 關(guān)于rem與px的區(qū)別,網(wǎng)上已經(jīng)有不少文章了,在此不多談。主要想談的是:在制作網(wǎng)頁時(shí),什么時(shí)候設(shè)定字體大小用px,什么時(shí)候用rem? 先談結(jié)論,再講為什么。一般情況下,還是以用px...
摘要:本章我們來聊聊重構(gòu)造成的災(zāi)難性毀滅??吹竭@里即可明白重構(gòu)造成的災(zāi)難性毀滅是在年的時(shí)期發(fā)生的,那個(gè)階段在技術(shù)不夠扎實(shí)但還有一股子改變世界的勁頭發(fā)生的問題。 showImg(https://segmentfault.com/img/bVbjDK2?w=1734&h=682); 前言 這章我在7月20號(hào)的時(shí)候就準(zhǔn)備好了標(biāo)題,在那之前有寫過一篇重構(gòu)的文章,這段時(shí)間一直在等重構(gòu)造成的弊端。 慶幸...
摘要:本章我們來聊聊重構(gòu)造成的災(zāi)難性毀滅??吹竭@里即可明白重構(gòu)造成的災(zāi)難性毀滅是在年的時(shí)期發(fā)生的,那個(gè)階段在技術(shù)不夠扎實(shí)但還有一股子改變世界的勁頭發(fā)生的問題。 showImg(https://segmentfault.com/img/bVbjDK2?w=1734&h=682); 前言 這章我在7月20號(hào)的時(shí)候就準(zhǔn)備好了標(biāo)題,在那之前有寫過一篇重構(gòu)的文章,這段時(shí)間一直在等重構(gòu)造成的弊端。 慶幸...
摘要:前端切圖神器前端掘金安裝前端的基礎(chǔ)工作就是把設(shè)計(jì)師的設(shè)計(jì)稿還原成前端頁面,所以切圖是作為一個(gè)前端的基本技能。 騰訊 Web 工程師的前端書單 - 閱讀 - 掘金作者:link 2014年一月以來,自己接觸web前端開發(fā)已經(jīng)兩年多了,記錄一下自己前端學(xué)習(xí)路上看過的,以及道聽途說的一些書,基本上按照由淺入深來介紹。 JavaScript 入門 《JavaScript權(quán)威指南(第六版)》 ★...
摘要:服務(wù)端任需要進(jìn)行校驗(yàn)來達(dá)到數(shù)據(jù)的可靠性前端的路由可能在服務(wù)端并不存在等等這一系列重用性的問題。串行并行,大幅縮短請(qǐng)求時(shí)間。關(guān)于作者本人主頁本文部分圖片段落參考文章淘寶前后端分離實(shí)踐微信公眾號(hào)會(huì)不定期推送前端技術(shù)文章,歡迎關(guān)注 一、背景 書接上文,淺談前后端分離與實(shí)踐(一) 我們用mock服務(wù)器搭建起來了自己的前端數(shù)據(jù)模擬服務(wù),前后端開發(fā)過程中只需定義好接口規(guī)范,便可以相互進(jìn)行各自的開發(fā)...
閱讀 1718·2023-04-25 18:19
閱讀 2140·2021-10-26 09:48
閱讀 1207·2021-10-09 09:44
閱讀 1813·2021-09-09 11:35
閱讀 3093·2019-08-30 15:54
閱讀 2130·2019-08-30 11:26
閱讀 2343·2019-08-29 17:06
閱讀 964·2019-08-29 16:38