感懷
一本歷時2年的書即將出版難免有些激動,同時亦有些忐忑。激動在於這是一次有意義的社會實踐,諸多作者參與其中。至完稿時,作者與發起計劃時已有些不同。一些朋友因為各種原因退出了,所以從堅持的角度看,完成就意味著第一層面的成功。忐忑在於從初心出發,通讀全稿仍有不足之處,諸位作者在具體實踐中所遇到的線上問題遠非本書所能盡數容納。而最後精華的實踐章節亦經過公司PR審核,略有刪減。再一層,設計和編碼很重要,運維管理同等重要。是否㓟好用、易用、穩定的運維工具支撐也是選擇一套開源元件的重要參考因素,為了集中註意力,本書基本未改寫運維部分的內容,且待有心人續之。寫一本書,面世之後,作者或喜或憂,因為臧否之權利在於讀者。
自覺而言,本書適合有一定研發經驗的朋友閱讀,它山之石,亦有攻玉之效。本書在邏輯上可分為三大篇章:基礎概念篇、開源框架篇、應用案例篇。基礎概念除了基礎知識,也介紹了一些分散式方面的方法和思路;開源框架篇遴選了近年來流行的框架(比如Redis),同時對淘寶Tair、EVCache也做了一些探索。在Redis大行其道之時,對於memcached及其周邊知識也做了介紹,某些公司還有大量的memcached實體,比如微博、Twitter等。工具的革新總是源自需求的不斷被滿足,而根據被滿足的特性可以歸納其共性,比如解決單點高可用問題就是一個普適性問題,涉及主從樣式、雙活樣式等,可用性同時又和效能、資料一致性相關。快取為效能而生,但“快取”設施的存在就決定了這個設施要符合分散式理論的要求。業界介紹理論和概要,或介紹設計原則的書不少,但拿出具體實踐的稀有,比如新浪微博、Twitter這樣的社交SNS具體如何設計快取。簡約而不簡單!在應用案例篇,筆者邀請了對應領域的專家為大家解讀案例,可以讓大家觸控到真實的設計意圖。重要的是大家可以獲得不同場景下不同設計策略的啟發。
參與本書作者有螞蟻金服於君澤、渡鴉科技曹洪偉、螞蟻金服邱碩、拍拍貸劉暻宇、愛農智惠程超、唯品會何濤、新浪微博陳波、時趣宋慧慶、京東張開濤、同程旅遊王曉波。
推薦序
快取技術的大規模使用是網際網路架構區別於傳統IT技術最大的區別,對快取的理解和使用深度決定了是否能架構出一個高價效比,高擴充套件性的系統。阿裡巴巴的系統大量的使用了快取技術(內部快取的產品名字叫Tair),有個指標是從07年開始快取伺服器的增長速度遠遠超過了資料庫伺服器規模的增長速度,而因為對快取的充分使用,系統具備的吞吐量能力的增速則又遠遠高於快取本身規模的增速,這是一件非常划算的事情,成本下降非常明顯,大概一臺快取伺服器的使用可以給整體叢集帶來3臺伺服器的節省。
快取是代表了高效能的一項技術,同時快取也是系統架構裡非常核心的部分,一個系統快取承擔著90%以上的熱點流量,快取出一點點問題,系統的可用性會馬上受到影響,一般在阿裡巴巴的系統架構討論會上,都會把做快取產品的同事叫上,要求其在瞭解系統架構規模的前提下給出流量規模、分割槽方案、熱點節點等方面的建議,負責快取產品的同學往往也需要對業務有所瞭解,否則就不能設計出一個更好的產品。快取的使用也使得架構更加清晰,更容易理解,流量走向變的更加簡單,這對於系統持續可用性有了明顯的提升。
本書比較系統的介紹了快取在各個層面的原因,作用和價值,透過對快取使用的理解,對架構一個高效能分散式系統有很大的幫助。
–阿裡研究員小邪(蔣江偉)
無處不在的快取,空間換時間的藝術
《分散式快取》書序
Cache這個詞,據說來自於法語,本意是當CPU處理資料時,先到Cache中去尋找,如果資料在之前的操作已經讀取而被暫存其中,就不需要從主記憶體(Main memory)中讀取。後來 Cache的範圍有所擴大,凡是位於速度相差較大的兩種硬體之間,用於協調兩者資料傳輸速度差異的結構,都稱之為Cache。
現在,我們談的快取,已經遠遠突破了原有的概念,在我看來,快取是一種通用的設計樣式:這種樣式利用增加儲存空間的方式,實現低速部件與高速部件之間的解耦。換而言之,只要實現瞭解耦的地方,就有存在快取的可能,既然解耦是計算機系統架構設計中最常用的手段,那麼快取就必將在計算機系統中無處不在。快取是以空間換時間的方式解決問題,而空間不可能無限使用,使用快取時我們通常會考慮如何選擇儲存方式,如何使用多級快取節省空間,如何有效提高快取的命中率,如何確定有效的更新策略等問題,這些思考會有相當普遍的適用性。
本書重點解讀了分散式系統下如何使用快取。分散式系統中大規模使用快取是從早期網際網路三大法寶(MemCache、反向代理、分庫分表)開始的,利用這種集中式、大規模的快取技術,我們解決了資料庫低速IO與高速應用之間的矛盾。我們也發現,除了快取的通用問題之外,分散式系統快取還需要解決更多的問題,例如如何對多種型別資料選擇不同的儲存方式,如何保證資料一致性,如何提高快取自身的可用性、如何增強系統的可維護性。為了系統性解決這些問題,分散式快取越來越變成了分散式架構系統中的一個基礎設施。
快取的使用雖然廣泛,但把快取作為一種基礎設施,發展歷史並不長,大多數的商業化軟體比較複雜,主要以記憶體資料庫為主,而輕量型分散式快取在不同場景下有不同的關註點和使用方式。右軍集合了一批老司機,為大家展示了多種分散式系統中快取的使用場景與方案,既有新浪微博這樣重量級社交平臺資訊聚合、分發快取方法,也有海量廣告業務資訊撮合的快取樣式,既有電商系統冷熱資料分離的快取策略,也有對完整分散式系統快取的技術選型和總結。
透過分散式、微服務架構,實現業務的雲化/數字化,建立起應用的生態,是一個複雜的體系結構,其中方方面面的著作很多,但專註在快取方面還沒有,右軍選擇了這個方向,就是希望能幫助我們形成一個完整的技術檢視,我相信這是他們做這件事的初衷。
–普元資訊CTO 焦烈焱
快取為王
君澤人很低調也很友善,第一次和他見面還是在2016年的年底。2017年的春夏之交,當我正在機場為飛機晚點心煩不已的時候,收到了君澤的一條微信。內容是說他自己正在忙著準備一本書,而且把主要的章節內容發給了我。在百無聊賴之間我就讀了起來。
這本書是君澤組織國內網際網路技術領域具有實戰經驗的部分專家,分工合作聯合撰寫的技術專著。以最常用、最有效果也最容易出問題的快取為主題。從基礎概念、開源框架和應用案例三個層次進行了討論。給我的感覺是既有理論也有實踐,既有廣度也有深度,既有國外的開源軟體也有國內的具體實踐案例,是非常值得深入閱讀和細心揣摩的一本工具書。
給我印象比較深刻的是開篇的“快取為王”,因為今年年初我也專門寫過一篇同名的文章,論述了從網路靠近使用者端的CDN,到內部網路快取,到應用快取,再到資料庫快取的一系列快取手段、技術和方法。不敢說英雄所見略同,至少大家的關註點差不多。我還記得在當初的文章中用了一句耐人尋味的話,“解決雪崩問題的最好辦法是不發生雪崩”。不論是在矽谷網際網路公司裡還是在國內的網際網路平臺上,曾多次遇到過海量規模的交易瞬間吞噬平臺的悲慘故事。核心的解決方案大同小異,都是透過快取,逐層減少流量的衝擊,保護使用者的體驗和平臺的服務可用。金融、財務行業有現金為王的說法,網際網路技術行業用“快取為王”清楚地概括了快取的重要性。
這本書還深入淺出地討論了Ehcache、Memcached、Redis、Tair、EVCache 等各種常用快取開源系統的方案及精粹。我讀過不少國外有關快取的技術專著,大多數偏原則和理論,具體實施方案和案例較少,特別是結閤中國網際網路技術實踐的更少。所以君澤組織的這本書實際上填補了快取技術文獻在這方面的空白。尤其是結合微博、社交和電商平臺的應用實踐探討,對想學習如何利用快取技術解決實踐中具體問題的讀者大有裨益。
–易寶支付CTO 陳斌
推薦語
本書圍繞分散式快取的基礎概念、開源框架、應用案例三方面進行講解,從理論到實戰,循序漸進,深入淺出。看完部分章節後,意猶未盡,欲罷不能。國內這樣真實應用案例的好書太少了,君澤以及他的朋友們填補了這一空白,十分期待這本書能早日上市。
—黃勇 特贊科技 CTO、《架構探險》作者
分散式快取,是任何一個網際網路公司在成長過程中都會面臨的技術難題,本書作者結合理論研究和長期的網際網路行業從業經驗,深入淺出的介紹了分散式系統理論和分散式快取實戰,給業界以借鑒和啟發,是作者的用心之作。
—朱攀 德比軟體架構師
使用快取是軟體效能最佳化的大殺器,分散式快取是網站架構的必殺技,玩轉快取就玩轉了網站架構的半邊天。遺憾的是目前市面上並沒有專門講述分散式快取的書籍,幸運的是現在終於有一本這方面的專著,作者都是在網站架構一線多年實踐的老司機,值得信賴,推薦給大家。
—李智慧 《大型網站技術架構:核心原理與案例分析》作者
從十幾年前的ehcache到最近幾年流行的Redis,從CDN、瀏覽器、API Gateway到後端微服務,以及資料訪問層的二級快取,快取無處不在,在體驗為王、唯快不破的時代,分散式快取是關鍵。本書從理論到實踐,詳細剖析了分散式快取的實現原理以及應用案例,是本接地氣的好書。
—李林鋒,華為PaaS平臺架構師、 公司總裁技術創新獎獲得者
隨著現代應用對速度的要求變得越來越高,對快取機制的使用也變得越來越常見、越來越頻繁。這本《分散式快取》以快取機制的基本原理為開始,逐漸過渡至快取系統的組建以及使用上面,全書分析和講解了多個快取系統,併列舉了快取的各種使用場景。如果你正準備構建自己的快取系統,又或者你想要進一步地學習更多與快取有關的知識,那麼這本《分散式快取》將是你不容錯過的一本書。
—黃健宏《Redis設計與實現》作者
在計算機的世界裡,不論硬體層面還是軟體層面,快取都被廣泛的應用於解決處理響應慢的瓶頸。我們在構建微服務架構系統的時候也一樣,快取也是提升效能的關鍵技術手段。然而,快取在不同場景下的應用都有所不同,如何用對快取、用好快取並不容易。本書針對不同的快取型別、實現手段、演演算法策略做了非常細緻入微的講解,所以我推薦開發者和架構師們可以透過本書來對快取做一次全面的學習,有助於更好的使用快取來最佳化我們的系統效能。
—翟永超《SpringCloud微服務實戰》作者
不同的儲存介質,讀寫效能有很大的差異,價格亦是如此,效能越好的介質,價格就越貴,把最常訪問的資料放在讀寫效能最好的裝置上,達到成本和效能的均衡,這便誕生了快取,本書的幾位作者都是大型分散式環境下歷練出來的沙場老將,豐富的經驗和詳實的案例,對於網際網路行業的技術人員來說,頗有裨益。
—陳康賢 《大型分散式網站架構設計與實踐》作者、阿裡巴巴技術專家
快取是網際網路架構的最關鍵的環節,陳波在快取的效能及高可用方面有豐富的經驗,很高興看到他透過本書分享了他在微博研發團隊多年的實踐精華。
—楊衛華 微博研發副總經理
網際網路高效能系統設計的核心關鍵之一就是快取系統的設計,本書集合快取理論、開源快取系統、大規模業務中快取的具體實踐,全方位解讀了分散式快取設計,既能夠幫助讀者深入理解分散式快取系統,又提供了很好的架構設計案例供參考,細細品讀,受益良多!
—李運華 阿裡遊戲資深技術專家 《面向物件葵花寶典》作者
點選“閱讀原文”購書!