微店陳建:運維工程師眼中的移動端優(yōu)化之路
原創(chuàng)本文是WOT2016互聯(lián)網(wǎng)運維與開發(fā)者大會的現(xiàn)場干貨, 新一屆主題為WOT2016企業(yè)安全技術(shù)峰會將在2016年6月24日-25日于北京珠三角JW萬豪酒店隆重召開!
陳建是微店的運維工程師,主要從事移動運維和運維自動化方向的一些工作。
相比其他的演講,陳建的話題更偏向于運維方面,主要從技術(shù)的角度來總結(jié)。他從基礎(chǔ)服務、自動化和監(jiān)控等角度展開解讀:
基礎(chǔ)服務
基礎(chǔ)服務這一塊,陳建是從NGINX、PHP、DNS、TOMCAT等方面解讀微店移動端是如何搭建、如何優(yōu)化的。
NGINX。NGINX的服務很多,通過它可以在NAT模式下如何通過remote_addr獲取真實IP,Header增加請求鏈路信息,Location rewrite 順序優(yōu)化,廢棄域名更優(yōu)雅的跳轉(zhuǎn),實現(xiàn)全局跨域支持等等。大部分國內(nèi)的服務都是在NGINX下構(gòu)建的。
PHP。PHP是后端編程語言的核心,所有承擔外部服務API接口是用PHP寫的。
我們通過實時分析可以看到一些監(jiān)控數(shù)據(jù),能通過這些可以發(fā)現(xiàn)哪些接口可能有問題,不管是由開發(fā)造成的還是下游服務造成的,***時間發(fā)現(xiàn)一些慢請求。
DNS,現(xiàn)在還是跟傳統(tǒng)一些互聯(lián)網(wǎng)一樣,優(yōu)先使用DNS來做內(nèi)網(wǎng)解析,但是在DNS前面掛了一層DNSmasq。先說一下配置,默認時間改成了1秒,最小值也是1秒,總共是配了一個本地加三個主DNS。原來DNS在做壓力測試的時候會明顯感覺很多接口性會比較差,后來通過改造之后,內(nèi)網(wǎng)DNS比原來健壯了很多,而且對DNS主站的壓力也減輕了很多。這個服務在裝機的時候默認會配置好,通過程序把它啟動起來,一旦它掛了會自動拉起,但是到目前為止是沒有遇到過主動掛的情況。
TOMCAT,各個公司根據(jù)自己的業(yè)務情況都存在不同的調(diào)優(yōu)。在TOMCAT這塊主要做了這些:端口做了一下自己的自定義,把它的范圍控制在2200-2300之間,單機我們?nèi)菰S一個機器上不超過十個TOMCAT,一旦某個程序有問題不會影響到別的服務。現(xiàn)在新的架構(gòu)全部都是一臺機器單實力、單TOMCAT這樣去跑的,走的是類似于KM這樣的程序。首先先取到本機的IP,這個值用來做JMX監(jiān)控,我們會通過動態(tài)腳本制作方式把這個機器的監(jiān)控權(quán)加起來,包括TOMDIR取出來,這個變量后面會用到,主要用來刪除緩存鍵,保證每次TOMCAT只要重啟都是一個完全干凈的環(huán)境。
網(wǎng)絡優(yōu)化。首先核心網(wǎng)絡是BGP,另外有聯(lián)通、電信,還有移動專線。好多人可能會覺得為什么有BGP之后還要用其它線路,成本考慮是一方面,更多的是BGP現(xiàn)在沒有我們想象中那么好,尤其是涉及到網(wǎng)間結(jié)算時,對一些地方的網(wǎng)絡會影響比較大。在沒有做自動域名鏈路拆分的時候,每天可能都有幾個投訴說微店打不開,或者某一個活動詳盡頁有問題。后來對所有的鏈路進行全部拆開,然后多機房多鏈路全部都打開。微店發(fā)展到今天也就是三年左右的時間,我們的規(guī)模可能跟大部分大型的互聯(lián)網(wǎng)公司相比還是差很多,目前這樣的結(jié)構(gòu)對我們來說是相對比較合理的一個方案。
陳建從HTTPDNS、HTTPS內(nèi)容攔截、圖畫優(yōu)化以及自動化等方面來闡述微店構(gòu)建過程中遇到的問題以及后續(xù)是如何解決的。
審批機制。對于開發(fā)來說每天上線時間是工作日的早晨9點到下午6點,這段時間是可以提交代碼的,某些項目,像核心服務會要求完全審批。
監(jiān)控。監(jiān)控對于運維來說是非常重要的事情,基礎(chǔ)監(jiān)控就不說了,主要說一說目前在做的應用級別的監(jiān)控。
這是一個分鐘級監(jiān)控,實際上每個圖有兩根線。在手機端的監(jiān)控頁面,好多時候我們跟用戶溝通,想知道一些基礎(chǔ)信息,類似于你的IP是多少,DNS是多少,包括現(xiàn)在訪問的CDN節(jié)點是多少,這些信息實際上是非常難獲取的。后來想辦法開發(fā)了一套類似這樣的監(jiān)控系統(tǒng),用戶只需要在微信或者是瀏覽器里面訪問這個地址,就能取到這些基礎(chǔ)信息。
大數(shù)據(jù)監(jiān)控系統(tǒng)。我們每一個業(yè)務都是由接口,所有的UL組成。選一個UL之后就可以知道這個UL一些基礎(chǔ)信息,錯誤率包括QUVS等,這是大數(shù)據(jù)方面正在做的事情。
演講視頻:http://edu.51cto.com/lesson/id-100754.html
【講師簡介】
講師簡介:陳建,微店運維專家,***批次加入微店的人員,見證了微店的發(fā)展史,也一直努力在為微店的"穩(wěn)定"、"高效"、"安全"在不聽的奮斗,對網(wǎng)絡、操作系統(tǒng)及應用等都非常精通,目前主要致力于微店的訪問的持續(xù)優(yōu)化。