《逆流而上:阿里巴巴技術成長之路》是阿里巴巴集團榮耀背后的技術血淚史。《逆流而上:阿里巴巴技術成長之路》通過分享業(yè)務運行過程中各個領域發(fā)生的典型“踩坑”案例,幫助大家快速提升自我及團隊協(xié)作,學習到寶貴的處理經驗及實踐方案,為互聯(lián)網生產系統(tǒng)的穩(wěn)定共同努力。從基礎架構、中間件、數據庫、云計算、大數據等技術領域中不斷積累經驗,顛覆技術瓶頸,不斷創(chuàng)新以適應不斷增長的需求。
《逆流而上:阿里巴巴技術成長之路》主要面向互聯(lián)網技術從業(yè)人員和在校師生,使讀者能夠通過此書基本了解阿里在各技術領域的能力,學習在如此規(guī)模下可能出現(xiàn)的問題以及解決方案的探討和沉淀分享。
本書主要面向互聯(lián)網技術從業(yè)人員和在校師生,使讀者能夠通過此書基本了解阿里在各技術領域的能力,學習在如此規(guī)模下可能出現(xiàn)
阿里巴巴集團成長集編委會
由阿里巴巴集團不同業(yè)務線及不同技術領域內的人員組成的虛擬組織。技術人員都知道軟件開發(fā)過程中的八二原則,理解大多數問題發(fā)生在何處,發(fā)生的原因,如何解決,變得尤為重要。阿里巴巴集團業(yè)務飛速發(fā)展,技術人員積累了大量豐富的線上問題排查及解決的案例和經驗。
成長集編委會從中挑選了一些的技術案例,側重于對問題的還原和分析。我們希望,曾經踩過的坑都能具有其意義和使命,而后來者通過學習前人的經驗,防微杜漸,快速成長。
第1 章 基礎架構高可用 1
1.1 明察秋毫,域名解析排查技巧 2
1.2 智能定位,網絡端到端靜默丟包點迅速鎖定 .14
1.3 靈活調度,對接運營商網絡流量的容災策略 21
1.4 抽絲剝繭,深挖云盤掛起背后的真相 . 25
1.5 存儲的底線,SSD 數據不一致 34
第2 章 中間件使用常見隱患與預防 . 40
2.1 高并發(fā)“熱點”緩存數據快速“退火” 41
2.2 自我保護,讓系統(tǒng)堅如磐石 45
2.3 機房容災,VIPServer 軟負載流量調度實例 51
2.4 山洪暴發(fā),高流量觸發(fā)Tomcat bug 引起集群崩潰 .65
第3 章 數據庫常見問題 . 80
3.1 性能殺手,SQL 執(zhí)行計劃 . 81
3.2 波譎云詭,數據庫延遲 . 92
3.3 風暴來襲,AliSQL 連接池調優(yōu) 102
3.4 防患于未然,ORM 規(guī)約變更案例 110
3.5 云數據庫,SQL 優(yōu)化經典案例 114
第4 章 業(yè)務研發(fā)經典案例 . 133
4.1 冪等控制,分布式鎖超時情況和業(yè)務重試的并發(fā) 134
4.2 另類解法,分布式一致性 139
4.3 大道至簡,從故障模型的邊界狀態(tài)切換到原始狀態(tài) 143
4.4 疑案追蹤,JSON 序列化不一致 154
4.5 從現(xiàn)象到本質,不保障順序的Class.getMethods JVM 實現(xiàn) . 163
4.6 破解超時迷局,淺析啟動初期load 飆高問題 172
4.7 洞悉千絲萬縷,淺談JIT 編譯優(yōu)化的誤區(qū) 180
第5 章 運行管理域穩(wěn)定性建設 187
5.1 洞若觀火,讓故障無處遁形 188
5.2 體系化思考,高效解決運營商問題 197
5.3 以戰(zhàn)養(yǎng)兵,以故障演練提升系統(tǒng)穩(wěn)定性 203
第1 章
基礎架構高可用
互聯(lián)網、電子商務、云計算、大數據等領域都離不開基礎設施建設,基礎設施的建設包含從服務器到IDC、網絡等一系列的過程。技術日新月異變化的過程,也給基礎設施的建設帶來了巨大的挑戰(zhàn)。如何用研發(fā)能力解決基礎設施穩(wěn)定性是基礎架構不斷提升核心競爭力的關鍵。本章從線上案例入手,從基礎架構角度介紹了問題排查思路和創(chuàng)新設計概念,希望給讀者帶來啟迪。
1.1 明察秋毫,域名解析排查技巧
背景
網站服務是現(xiàn)在眾多互聯(lián)網服務中應用最廣泛的服務之一,而且中國的網絡環(huán)境更為復雜,幾乎每個應用都會使用到域名。域名在互聯(lián)網應用中是非常重要的一環(huán),萬一出現(xiàn)問題可能會導致整個網站無法訪問,并且由于各地DNS(Domain Name System,域名系統(tǒng))緩存,有時候恢復解析所需時間會比較長。本節(jié)針對幾種典型的域名解析問題,做了簡單的排查
思路介紹,以期與讀者交流。域名解析的過程
用戶使用終端(電腦、手機、Pad 等)上網時,電腦會設置一組DNS(即緩存DNS,又叫Local DNS)作為一層“”、“緩存”,為當地局域
網或其他用戶提供高性能的解析迭代查詢。這個緩存DNS 一般是在用戶連上網時自動分配的, 不需要手工配置。當用戶訪問網站時, 如www.example.com,會向緩存 DNS 發(fā)送example 對應的地址的查詢請求。當緩存DNS 收到請求后,如果其有相應的緩存且沒過期,則直接響應;否則,向根DNS、頂級域DNS、主域名對應的DNS 或更下級的DNS
進行查詢,直到查詢到最終的地址,然后返回給客戶端。對網站管理者(更地說,是域名的管理者)來說,需要為域名設置解析,將域名指向自己的網絡服務器。購買了域名,一般會使用注冊商的DNS(即將注冊商提供的DNS 服務器作為購買的域名的DNS 服務
器),或者使用第三方的DNS。如果使用注冊商的DNS,設置解析的流程會比較便捷;但如果使用第三方的DNS,需要在第三方添加域名、解析記錄,然后在注冊商處修改域名的DNS 作為第三方提供的DNS 名字。
在上述描述域名解析的過程中,有兩種DNS 的角色:
? 緩存DNS,又叫Local DNS 或Cache DNS,一般是由網絡接入服務提供商在近上網用戶端做的緩存DNS 服務器,主要用于迭代查詢的緩存,其中的數據均來自向上級的查詢得到,本身并無實際的數據,這既增加了解析速度,又減少了對DNS 的查詢數量,
就好比是數據庫中的Memcache。
? DNS,又叫Authority DNS。由域名管理者負責管理,或委托其他DNS 服務提供商進行管理,其中的記錄均是由負責本域的管理員添加進來的。DNS 是由上到下一級級授權的,如根DNS(ROOT DNS)將各個后綴授權到各個后綴管理機構的頂級域DNS
(即注冊局的DNS),而各個頂級域DNS 中又有指向下級域對應的DNS。
如何判斷是否是解析異常
網站無法訪問有多種原因,如網絡異常、服務器異常、網站配置不正確、服務器異常等。
當你訪問網站時,如果打開的頁面內容和預期的不同,或報錯信息中含有“resolve”相關字樣,或提示“找不到網站服務器”時,就應該懷疑是不是解析方面的問題了。排查解析問題用到的基本方法是用dig(或nslookup,本文以dig 為例來說明,nslookup 相關命令請參考其對應的幫助文檔)看能否正常解析到最終的IP。__如果無法獲取到最終的IP,或者獲取到最終的IP 不是網站的實際IP(這個由域名網站管理員判斷),就是解析異常了。如下是一個正常的解析(部分域名用example.com/bar.com/bar.net 等指代,部分IP 地址使用1.1.1.1、2.1.1.1、2.2.2.2 等代替,后續(xù)類同)。
這本《逆流而上:阿里巴巴技術成長之路》總結了近年來阿里巴巴集團在重要領域中遇到的故障和排查方法。從故障中得到的教訓,剖析出來的架構缺陷,折射出來的實現(xiàn)問題以及運維過程中的疏忽和錯誤都是很真實的,很具有說服力。他山之石,可以攻玉,希望為廣大開發(fā)和運維工程師帶來幫助。
—— 阿里云博學總監(jiān) 吳結生
古語說:前人栽樹,后人乘涼。本書創(chuàng)作旨在讓歷史的經驗傳承下去,幫助到更多的人。它匯集了阿里巴巴集團各個BU技術人員在日常工作中所遇到的典型踩坑案例,這些案例全部來自線上生產實踐,涉及基礎設施、中間件、數據庫、業(yè)務開發(fā)以及穩(wěn)定性建設,基本涵蓋了阿里巴巴所有的技術兵種,這是一本非常的技術踩坑實踐書,具有很重要的參考意義。
—— 阿里云研究員 褚霸
阿里巴巴的技術人員日常的研發(fā)運維過程,就是不斷和新問題斗智斗勇的過程,我們會鼓勵把遇到的挑戰(zhàn)和問題總結出來,所以在這個過程中積累了大量的總結資料,這些資料有些總結到了產品里,成為架構、系統(tǒng)的一部分,有些不斷被學習變成了其他更多同事的新能力。
—— 中間件技術部研究員 小邪
在我?guī)ьI阿里巴巴GOC(全球運行指揮中心)團隊期間,天天面對不斷發(fā)生的大小故障,尤其是重復發(fā)生的故障。而此書恰恰是在這種思考之下所采取的行動之一。成功難以模仿,教訓可以學習。每篇文章的背后都是血淋淋的教訓,值得每一個技術人員好好閱讀。
—— 菜鳥博學專家 王樂