阿里P7聯與京東T6出版:深度解構分布式緩存技術原理,實踐及電商

2020-12-11 Java小碼神

前言

緩存和算法一樣,幾乎是所有大廠的敲門磚。對於後端開發來說,算法會影響你是否可以接到 Offer,而你對緩存知識的理解程度,則會影響你 Offer 的薪資水平。可以說,對緩存的掌握程度,在某種意義上決定了後端開發者的職業高度

之前和很多大廠面試官聊天,大家都有這個共識。因為網際網路公司基本都是直面用戶的業務,要想改善用戶體驗,就要持續確保系統的訪問性能和可用性,而使用緩存最常見且有效的手段。你要是不懂緩存,就很難寫出高性能大並發的代碼來滿足業務需求。所以,面試官通常會通過應聘者對緩存相關知識的理解深入程度,來判斷其開發經驗和學習能力。

在這裡推薦一份數位一線用阿里P7聯手京東T6自己的項目經驗編寫的:深入分布式緩存從原理到實踐,深度解構分布式緩存技術原理及其在電商、社交、廣告等

典型場最中的應用

在文章開始前先放一份知識點圖譜,整個圖譜以 10 年分布式緩存經驗分享為主,相信有不少乾貨,值得一看。

文章簡介

本書圍繞分布式緩存的基礎概念、開源框架、應用案例三方面進行講解,從理論到實戰,循序漸進,深入淺出。

首先介紹分布式緩存的背景知識,對「分布式」和「緩存」這兩個關鍵詞進行了全面闡述,從而為後續章節的敘述打下基礎;接著介紹業界主流的緩存,關注其原理與實現,囊括了Ehcache.Memcached, Redis、Tair, EVCache,Aerospike等六個緩存或類緩存系統;最後討論緩存在網際網路系統中的實踐。從廣告、社交、新聞、電商、營銷等五類典型的網際網路應用入手,分析它們面臨的性能穩定性問題以及如何利用分布式緩存解決這些問題。第一章

在商業的世界中,常說的一句話是「現金為王"。在網際網路、移動網際網路乃至整個軟體技術世界中,與之相近的一一個說法就是「緩存為王」。什麼是緩存呢?

私信小編【資料】即可獲取這份阿里P7聯手京東T6出版的深入分布式緩存從原理到實踐PDF版。

什麼是緩存?為什麼使用緩存?從用戶體驗說起關於系統的性能從網站的架構發展看緩存客戶端緩存頁面緩存瀏覽器緩存APP上的緩存網絡中的緩存Web代理緩存邊緣緩存服務端緩存資料庫緩存平臺級緩存應用級緩存

第二章

分布式理論體系宏大精深,可以通過一大厚本專著來專門闡述,本書難以盡述之,本章擬從分布式系統概論、分布式系統概念、分布式系統理論,比如Paxos、分布式系統設計策略、心跳檢測、分布式系統設計實踐、全局ID生成等幾個方面略勾畫之。

分布式系統概論分布式系統概念進程與線程並發並行集群狀態特性系統重發與冪等性硬體異常分布式系統理論CAP理論CAP理論澄清Paxos2PC3PCRaftLease機制解決「腦裂」問題Quorum NWRMVCCGossip分布式系統設計策略心跳檢測高可用設計容錯性負裁均衡分布式系統設計實踐全局ID生成哈希取模一致性哈希路由表數據拆分

第三章

目前市面上已經有很多開源的緩存框架,比如Redis、Memcached. Eheache 等,那為什麼還要自己動手寫緩存?本章將帶領大家從0到1寫一個簡單的緩存框架,目的是讓大家對緩存的類型、緩存的標準、緩存的實現及原理有- -個系統的了解,做到知其然,知其所以然。

緩存定義的規範新規範的主要內容及特性?新規範的API介紹緩存框架的實現前期準備緩存的架構介紹設計思路以及知識點詳解緩存框架的使用示例

第四章

GuavaCache和Ehcache本地緩存,但在細分領域也有不同的應用場景,4.5節中將做詳細介紹。

Ehcache的主要特性Ehcache使用介紹Ehcache架構圖緩存數據過期策略Ehcache緩存的基本用法在Spring中使用EhcacheEhcache集群介紹集群的方式如何配置集群Ehcache的適用場景Guava Cache的使用Guava Cache的適用場景Guava Cache的創建方式緩存數據刪除並發場景下的使用

第五章

許多Web應用程式都將數據保存到RDB中,但隨著數據量的增大,RDB的負擔加重,資料庫響應惡化,性能嚴重下降。Memcached 是高性能的分布式內存緩存伺服器,一般用來緩存訪問的熱點數據,減輕資料庫的負擔。

Memcached基本知識Memcached的操作命令Memcached使用場景Memcached特徵Memcached的一些問題Memcached內存存儲Slab Allocation機制使用Growth Factor進行調優Item典型問題解析過期機制哈希算法熱點問題緩存與資料庫的更新問題別把緩存當存儲命名空間CASMemcached客戶端分析Memcached的ClientSpymemcached設計思想解析Memcached周邊工具發展

第六章

本章主要介紹基於Memcached的周邊技術,重點對Memcached的定製版Twemcache,對開源的緩存集群方案Twemproxy,以及Mcrouter等進行解析,以便充分地利用分布式緩存服務。

TwemcacheTwemcache的設計原理Twemcache的安裝及命令行詳解基於Java的Twemcache用法TwemproxyTwemproxy的常用部署模式Twemproxy的可擴展性Twemproxy原始碼簡析McrouterMcrouter路由算法典型的使用場景Mcrouter的可擴展性源碼簡要解析

第七章

Redis運行於獨立的進程,通過網絡協議和應用交互,將數據保存在內存中,並提供多種手段持久化內存數據。Redis具備跨伺服器的水平拆分、複製的分布式特性。

數據結構value對象的通用結構StringListMapSetSorted-Set客戶端與伺服器的交互.客戶端/伺服器協議請求/響應模式事務模式腳本模式發布/訂閱模式單機處理邏輯多路復用定時任務處理持久化基於全量模式的持久化基於增量模式的持久化基於增量模式持久化的優化

第八章

本章的編寫目的就是,幫助讀者了解如何通過Redis實現上述解決方案,本章包含的主要知識如下:

水平拆分(sharding)數據分布請求路由主備複製(replication)主備複製流程斷點續傳故障轉移(failover)sentinel間的相互感知master的故障發現failover決策Redis Cluster拓撲結構配置的一致性shardingfailover可用性和性能

第九章

Tair分為持久化和非持久化兩種使用方式。非持久化的Tair可以看成是-一個分布式緩存。持久化的Tair將數據存放於磁碟中。在最新版本的Tair項目中實現了以下4種存儲引擎。非持久化: mdb持久化: fdb、kdb和ldb這4種存儲引擎分別基於四種開源的key/value 資料庫: Memcached、 Firebird、 KyotoCabinet和LevelDB。其中Firebird 是關係型存儲資料庫,Memcached、Kyoto Cabinet和LevelDB是NoSQL資料庫。

Tair總體架構Config Server簡介Data Server簡介Tair高可用和負載均衢!對照表?數據遷移存儲引擎Tair的API key/value相關APIprefix相關的API

第十章

雲服務不僅為軟體系統的開發和部署帶來了更多的敏捷性,而且提供了更多創新的可能性。當分布式緩存技術遇到雲服務會是怎樣的情形呢?EVCache就是這樣的一種技術。

EVCache項目介紹EVCache的由來EVCache的發展EVCache的演進EVCache的使用場景典型用例典型部署EVCache的性能EVCache集群的性能全局化複製時的性能問題Moneta項目中的組件性能EVCache的高可用性AWS的多可用區EVCache對AWS高可用性的增強源碼與示例源碼淺析EVCache示例

第十一章

本章將會介紹Aerospike的架構原理,集群部署,基本用法以及在廣告行業中的具體應用;本章基於Aerospike的3.8.4版本(主要針對具體的部署操作部分,而對於原理,架構的描述則不局限於此)。接下來開始介紹Aerospike整體的架構實現和原理。

Aerospike架構Aerospike具體實現Aerospike集群管理數據分布Aerospike集群配置和部署搭建集群的方式與配置部署集群Aerospike與Redis的對比Aeropsike在廣告行業的具體應用Aerospike在個性化推薦廣告中的應用Aerospike在實時競價廣告中的應用

第十二章

本章以一個典型的社交類應用為例,基於-一個簡化的領域模型和業務場景,敘述該應用在面臨不斷增加的業務吞吐量時,傳統的基於資料庫的方案將面臨的性能風險,隨後闡述如何利用緩存技術對這些典型的性能問題進行解決。

社交業務示例業務模型業務場景業務特點關係(relation) 的存儲基於DB的最簡方案DB的sharding方案引入緩存緩存的優化方案帖子(post) 的存儲基於DB的方案引入服務端緩存本地緩存時間線(timeline) 的存儲基於DB的方案一push模式基於DB的方案一pull模式增量查詢引入服務端緩存

第十三章

本章將以新浪微博Feed系統架構的發展歷程作為背景,基於一個典型的社交網絡Feed系統架構,介紹Feed系統的緩存模型、緩存體系架構,以及緩存體系如何伴隨業務規模來擴展及演進。

Feed系統架構Feed緩存模型Feed緩存架構的設計簡單數據類型的緩存設計集合類數據的緩存設計其他類型數據的緩存設計Feed緩存的擴展Redis的擴展計數器的擴展存在性判斷的擴展Feed緩存的服務化

第十四章

分布式系統的CAP理論首先把分布式系統中的三個特性進行了如下歸納:一致性(C):在分布式系統中的所有數據備份,在同- -時刻是否是同樣的值(等同於所有節點訪問同一份最新的數據副本)。可用性(A):在集群中一部分節點故障後,集群整體是否還能響應客戶端的讀寫請求(對數據更新具備高可用性)。分區容忍性(P):以實際效果而言,分區相當於對通信的時限要求。系統如果不能在時限內達成數據一致性,就意味著發生了分區的情況,必須就當前操作在C和A之間做出選擇。

電商類應用的挑戰及特點應用數據靜態化架構高性能單頁Web應用整體架構CMS系統前端展示系統控制系統應用多級緩存模式支撐海量讀服務多級緩存介紹如何緩存數據分布式緩存與應用負載均衡熱點數據與更新緩存更新緩存與原子性緩存崩潰與快速修復構建需求響應式億級商品詳情頁商品詳情頁前端結構產品頁技術架構發展詳情頁架構設計原則遇到的一些問題

第十五章

本章和大家分享一下同程鳳凰緩存系統在基於Redis方面的設計與實踐。在本章中除了會列舉我們工作過程中遇到各種問題和誤區外,還會給出我們相應的解決辦法,希望能夠拋磚引玉為大家帶來一定的啟示。

同程鳳凰緩存系統要解決什麼問題Redis用法的凌亂從實際案例再看Redis的使用如何改變Redis用不好的誤區鳳凰緩存系統對Redis系統化改用好Redis先運維好它傳統的Redis運維方式Redis的Docker化部署鳳凰緩存系統對Redis的監控鳳凰緩存系統對Redis的集群分片優化客戶端在運維中的作用鳳凰緩存系統在Redis運維上的工具鳳凰緩存系統的使用效果

第十六章

在介紹了分布式理論體系、自己動手寫緩存、若干開源緩存框架等內容之後,如同一段美好的旅程,本書也需要-一個總結性的停頓。談及緩存我們會情不自禁地想起淘汰算法過期處理等,但開發設計中如何更好地引入緩存技術,完整的緩存知識體系又是怎樣的,筆者嘗試梳理一下,算是為本書做-一個收尾。

關注+分享+私信【資料】領取這份阿里P7聯手京東T6出版的深入分布式緩存從原理到實踐PDF版。

更好的引入緩存技術緩存引入前的考量緩存組件的選擇緩存架構的設計緩存系統的監控及演進緩存分類總結緩存知識結構更多Tips緩存使用模式緩存協議緩存連接池幾個關注點管理緩存緩存可用性數據致性熱點數據處理注意事項Tips

相關焦點

  • 完美,這兩份由5位阿里大神編寫的1000頁可伸縮分布式筆記
    水一手近十年來,網際網路服務在社交網絡、搜索、電商、O2O、視頻、移動和雲計算等領域呈現了井噴式發展,伴隨而來的是數千萬的日訂單量、數億的日活躍用戶、數百億的日消息發送量等海量的業務規模。支撐這些海量的業務規模的則是基於廉價伺服器集群的高可用、可伸縮的分布式網際網路技術。
  • 阿里P8技術官總結698頁:分布式服務架構 原理+設計+實戰
    、消息隊列、大數據查詢系統、分布式定時任務調度系統、微服務等層面詳細講解如何設計可伸縮、可擴展的框架,並給出在各個領域解決特定問題的方法論和實踐總結。隨著本書的出版,我們還開源了4個行之有效的網際網路可伸縮框架,包括資料庫分庫分表dbsplit、緩存分片 redic、專業的發號器vesta和消息隊列處理機框架kelient,每個框架都開箱即用,也可以作為學習網際網路平臺化框架搭建的素材,更可以作為開發開源項目的示例。
  • 阿里雲原生實踐:基於 Alluxio 數據緩存大規模深度學習性能優化
    AI 訓練新趨勢:基於 Kubernetes 的雲上深度學習1. 背景介紹近些年,以深度學習為代表的人工智慧技術取得了飛速的發展,正落地應用於各行各業。隨著深度學習的廣泛應用,眾多領域產生了大量強烈的高效便捷訓練人工智慧模型方面的需求。
  • 騰訊內容首發:分布式核心原理解析+分布式消息中間件實踐筆記
    分布式消息中間件實踐筆記首先,這份分布式消息中間件實踐筆記是以Java語言編寫。下面會為大家分享分布式消息中間件實踐筆記+分布式核心原理解析筆記,為了不影響大家的閱讀體驗,免費的獲取方式放在了文末!所以,我又和你分析了典型的電商、loT、 電信、HPC (高性能計算)、大數據、 雲計算、區塊鏈等業務或系統的不同訴求,進而得出了系統設計者需要關注哪些指標。你在設計其他類型的系統時,可以按照這個思路進行取捨。
  • 阿里雙11萬億流量的分布式緩存設計實踐,電子版參考指南
    在這一流量戰場上,阿里可謂是華山論劍的最大贏家。今天我把阿里針對淘寶雙十一萬億級流量下的分布式緩存文檔共享出來,全面解析阿里雙11的武功秘籍。阿里雙十一的四種應用場景MDB 典型應用場景用於緩存,降低對後端資料庫的訪問壓力。臨時數據存儲,部分數據丟失不會對業務產生較大影響。
  • 沸騰了,阿里雙11萬億流量分布式緩存設計實踐,電子版參考指南
    在這一流量戰場上,阿里可謂是華山論劍的最大贏家。今天我把阿里針對淘寶雙十一萬億級流量下的分布式緩存文檔共享出來,全面解析阿里雙11的武功秘籍。阿里雙十一的四種應用場景MDB 典型應用場景用於緩存,降低對後端資料庫的訪問壓力。臨時數據存儲,部分數據丟失不會對業務產生較大影響。
  • 解密「達達-京東到家」的訂單即時派發技術原理和實踐
    最後,防止由於重啟等一些操作導致數據的丟失,哨兵節點的維護也會在緩存中維護一份數據,在重啟的時候重新讀取。2)緩存的key統一加上IP標識:由於我們的時間調度器是依附於自身系統的,通過將緩存的key統一加上IP的標識,這樣就可以保證各臺伺服器消費屬於自身的數據,從而防止分布式環境下的並發問題,也可以減輕遍歷整個列錶帶來的時間損耗(時間複雜度為O(N))。
  • 解讀JIMDB 京東分布式緩存與高速KV存儲
    下午的專場中,來自京東的高級架構師袁航給我們帶來了《深入解讀JIMDB—京東分布式緩存與高速NoSQL服務》的主題演講,從技術的演進以及解決實際問題的角度做了詳細的闡述。▲dtcc大會官網  京東作為中國電子商務領域的重要一員,已經被廣為熟知。但是,京東也是不折不扣的技術型公司,通過技術為用戶帶來便捷用戶體驗。
  • 緩存架構技術:Redis+MongDB,阿里P7面試必跳的坑
    前幾日有個小老弟找我哭訴,擠破腦袋進Alibaba,三輪技術下來倒在了緩存技術(Redis+MongDB)上。聽完我這小老弟的一番肺腑之言,這...緩存架構技術:Redis+MongDB,不就是阿里P7面試必跳的坑?
  • 阿里內部首發「分布式、可伸縮架構筆記」,帶你從0到1構建系統
    引言網際網路的技術核心其實源於分布式,這是網際網路具備高性能、高並發特性的基礎,掌握這些核心內容後,你會發現駕馭技術變得如此輕鬆!近十年來,網際網路服務在社交網絡、搜索、電商、O2O、視頻、移動和雲計算等領域呈現了井噴式發展,伴隨而來的是數千萬的日訂單量、數億的日活躍用戶、數百億的日消息發送量等海量的業務規模。
  • 看DTCC2015:阿里、360、京東 NoSQL實踐
    「大數據技術交流和價值發現」是大會的核心主題,DTCC 2015大會規模將達到2500人,分3天21個專場,近百場精彩演講,大會將雲集了國內外最頂尖的數據專家,共同探討MySQL、NoSQL、Oracle、緩存技術、快閃記憶體技術、國產資料庫、Hadoop、數據挖掘、推薦系統、機器學習等領域的前瞻性熱點技術。
  • 2020年,年薪50W的阿里P7高級架構師需要掌握哪些技術棧
    本章節主要包含分布式網絡(Nginx、Lvs)、分布式一致性(一致性基礎理論BASE/CAP、Zookeeper、Consul、Etcd)、分布式消息(RabbitMQ、Kafka、RockeMQ)、分布式緩存(EhCache、Redis、Memcached)、分布式存儲(MongoDB、Fastdfs、OSS雲存儲、實現一個分布式文件存儲系統)五個部分。
  • 為什麼程式設計師都喜歡阿里P7,Android架構師做出了神總結
    而在網際網路行業的職位當中,阿里的p7崗卻又是大家所嚮往和鍾愛的,因為和千夫所指的阿里P8相比,阿里P7無疑是一個真香的存在,騰訊想要阿里P7,字節想要阿里P7,快手想要阿里P7,拼多多,小紅書,滴滴大家都喜歡要阿里P7,甚至阿里自己,都想多招1萬個阿里P7。
  • 看完阿里架構師推薦10本必讀書,我從碼農轉到了產品
    第二部分介紹各大網際網路公司是如何做系統架構落地實踐,個人對電商業務比較熟悉,所以以阿里和京東的技術實踐為主,還添加了博客留言中大家推薦的幾本。這本書對分布式服務框架做了拆解,依託工作實踐,從分布式服務框架的架構設計原理到實踐經驗總結,涵蓋了服務化架構演進、訂閱發布、路由策略、集群容錯和服務治理等多個專題
  • 京東架構師談人生,說進BATJ必須要會的技術,我聽完直接懵逼
    話說:就昨天,和朋友出去吃宵夜,他帶上了他的一個朋友,一問,才曉得之前是京東架構師現在自己開公司了。擼了串喝了酒,就和我們說起來自己當年為了當一個合格的程式設計師學習的技術,果然大佬就是謙虛。分布式技術1:分布式調用Dubbo:Dubbo後臺管理,負載均衡,容錯機制,協議模塊,內核SPI機制等分布式協同Zookeeper
  • 百度、騰訊、阿里海量乾貨等你來拿
    ,每個Java核心技術的優選文章都整理成了一個又一個的文檔。Redis哨兵、複製、集群的設計原理,以及區別Spring+Redis+Docker+Dubbo深入了解redis如何解決Redis緩存雪崩、緩存穿透、緩存並發等5大難題
  • 分布式緩存Hazelcast詳解及原理探究
    Hazelcast簡介Hazelcast 是由Hazelcast公司開發的一款開源的分布式內存級別的緩存資料庫,可以為基於JVM環境運行的各種應用提供分布式集群和分布式緩存服務。利用Hazelcast可以滿足「分布式」、「集群服務」、「網格式內存數據」、「分布式緩存「、「彈性可伸縮服務」等的要求。2.
  • 一篇讀懂分布式架構下的負載均衡技術:分類、原理、算法、常見方案等
    附錄:更多架構設計方案的文章精選[1] 有關IM架構設計的文章:《淺談IM系統的架構設計》《簡述移動端IM開發的那些坑:架構設計、通信協議和客戶端》《一套海量在線用戶的移動端IM架構設計實踐分享(含詳細圖文)》《一套原創分布式即時通訊(IM)系統理論架構方案》《從零到卓越:京東客服即時通訊系統的技術架構演進歷程》
  • 挖一個阿里p7程式設計師需要多少錢?
    我認為國內巨頭企業是阿里、騰訊的大企業。許多程式設計師將這種企業視為他們的目標,不為別的。一是薪水高,二是有很多技術人才,你可以學習到很多東西。就有一家獵頭公司在網上說35k到50k可以挖一個阿里p7嗎?工資低嗎?
  • 阿里年薪百萬的P7架構師簡歷都長什麼樣?他們都是怎麼學習的?
    2、突出了技術解決方案,技術應用在哪,為了解決什麼問題寫的明明白白。「Redis緩存、ES、RocketMQ 」等每一項都是現在大廠看中的主流技術。3、在項目中,自己承擔的角色描述十分清晰。我總結了 7 個標準看你有沒有:1、有大廠背景(已被其他大廠證明過) 2、熱門開源軟體的發起人或貢獻者 3、開源框架原理與源碼爛熟於胸 4、主導解決過大數據量高並發的實際問題 5、對多項技術的底層原理研究的比較透徹,在工作中有借鑑其思想解決過問題 6、能描述出技術方案核心關鍵點