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