精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

聊聊本地緩存和分布式緩存

存儲 數據管理
緩存是把雙刃劍,一方面我們享受緩存帶來的系統性能提升,另一方面引入緩存會提高系統復雜度,因為你要考慮緩存的失效、更新、一致性等問題。

緩存,消息隊列,分庫分表是高并發解決方案三劍客。

緩存之所以能夠讓系統“更快”,本質上做到了如下兩點:

  • 減小 CPU 消耗
    將原來需要實時計算的內容提前算好、把一些公用的數據進行復用,這可以減少 CPU 消耗,從而提升響應性能。
  • 減小 I/O 消耗
    將原來對網絡、磁盤等較慢介質的讀寫訪問變為對內存等較快介質的訪問,從而提升響應性能。

對于應用系統來講,我們經常將緩存劃分為本地緩存和分布式緩存。

本地緩存 :應用中的緩存組件,緩存組件和應用在同一進程中,緩存的讀寫非常快,沒有網絡開銷。但各應用或集群的各節點都需要維護自己的單獨緩存,無法共享緩存。

分布式緩存:和應用分離的緩存組件或服務,與本地應用隔離,多個應用可直接共享緩存。

這篇文章,聊聊本地緩存和分布式緩存,希望大家讀完之后,在面對不同的業務場景時,能夠做出合理的緩存選型。

一、本地緩存 JDK Map

JDK Map 經常用于緩存實現:

  • HashMap
    HashMap 是一種基于哈希表的集合類,它提供了快速的插入、查找和刪除操作。可以將鍵值對作為緩存項的存儲方式,將鍵作為緩存項的唯一標識符,值作為緩存項的內容。
  • ConcurrentHashMap
    ConcurrentHashMap 是線程安全的 HashMap,它在多線程環境下可以保證高效的并發讀寫操作。
  • LinkedHashMap
    LinkedHashMap 是一種有序的 HashMap ,它保留了元素插入的順序,可以按照插入順序或者訪問順序進行遍歷。
  • TreeMap
    TreeMap 是一種基于紅黑樹的有序 Map,它可以按照鍵的順序進行遍歷。

筆者曾經負責藝龍紅包系統,紅包活動就是存儲在 ConcurrentHashMap 中 ,通過定時任務刷新緩存 。

圖片

核心流程:

1、紅包系統啟動后,初始化一個 ConcurrentHashMap 作為紅包活動緩存 ;

2、數據庫查詢所有的紅包活動 , 并將活動信息存儲在 Map 中 ;

3、定時任務每隔 30 秒 ,執行緩存加載方法,刷新緩存。

為什么紅包系統會將紅包活動信息存儲在本地內存 ConcurrentHashMap 呢 ?

  • 紅包系統是高并發應用,快速將請求結果響應給前端,大大提升用戶體驗;
  • 紅包活動數量并不多,就算全部放入到 Map 里也不會產生內存溢出的問題;
  • 定時任務刷新緩存并不會影響紅包系統的業務。

筆者見過很多單體應用都使用這種方案,該方案的特點是簡潔易用,工程實現也容易 。

二、本地緩存框架

雖然使用 JDK Map 能快捷構建緩存,但緩存的功能還是比較孱弱的。

因為現實場景里,我們可能需要給緩存添加緩存統計、過期失效、淘汰策略等功能。

于是,本地緩存框架應運而生。

流行的 Java 緩存框架包括:Ehcache , Google Guava ,  Caffeine Cache 。

圖片

下圖展示了 Caffeine 框架的使用示例。

圖片

雖然本地緩存框架的功能很強大,但是本地緩存的缺陷依然明顯。

1、高并發的場景,應用重啟之后,本地緩存就失效了,系統的負載就比較大,需要花較長的時間才能恢復;

2、每個應用節點都會維護自己的單獨緩存,緩存同步比較頭疼。

三、分布式緩存

分布式緩存是指將緩存數據分布在多臺機器上,以提高緩存容量和并發讀寫能力的緩存系統。分布式緩存通常由多臺機器組成一個集群,每臺機器上都運行著相同的緩存服務進程,緩存數據被均勻地分布在集群中的各個節點上。

Redis 是分布式緩存的首選,甚至我們一提到緩存,很多后端工程師首先想到的就它。

下圖是神州專車訂單的 Redis 集群架構 。將 Redis 集群拆分成四個分片,每個分片包含一主一從,主從可以切換。應用 A 根據不同的緩存 key 訪問不同的分片。

圖片

與本地緩存相比,分布式緩存具有以下優點:

1、容量和性能可擴展

通過增加集群中的機器數量,可以擴展緩存的容量和并發讀寫能力。同時,緩存數據對于應用來講都是共享的。

2、高可用性

由于數據被分布在多臺機器上,即使其中一臺機器故障,緩存服務也能繼續提供服務。

但是分布式緩存的缺點同樣不容忽視。

1、網絡延遲

分布式緩存通常需要通過網絡通信來進行數據讀寫,可能會出現網絡延遲等問題,相對于本地緩存而言,響應時間更長。

2、復雜性

分布式緩存需要考慮序列化、數據分片、緩存大小等問題,相對于本地緩存而言更加復雜。

舉一個真實的案例,這次案例讓筆者對于分布式緩存的認知提上了另一個臺階。

2014年,同事開發了比分直播的系統,所有的請求都是從分布式緩存 Memcached 中獲取后直接響應。常規情況下,從緩存中查詢數據非常快,但在線用戶稍微多一點,整個系統就會特別卡。

通過 jstat 命令發現 GC 頻率極高,幾次請求就將新生代占滿了,而且 CPU 的消耗都在 GC 線程上。初步判斷是緩存值過大導致的,果不其然,緩存大小在 300k 到 500k 左右。

解決過程還比較波折,分為兩個步驟:

  1. 修改新生代大小,從原來的 2G 修改成 4G,并精簡緩存數據大小 (從平均 300k 左右降為 80k 左右);
  2. 把緩存拆成兩個部分,第一部分是全量數據,第二部分是增量數據(數據量很小)。頁面第一次請求拉取全量數據,當比分有變化的時候,通過 websocket 推送增量數據。

經過這次優化,筆者理解到:緩存雖然可以提升整體速度,但是在高并發場景下,緩存對象大小依然是需要關注的點,稍不留神就會產生事故。另外我們也需要合理地控制讀取策略,最大程度減少 GC 的頻率 , 從而提升整體性能。

四、多級緩存

開源中國網站最開始完全是用本地緩存框架 Ehcache 。后來隨著訪問量的激增,出現了一個可怕的問題:“因為 Java 程序更新很頻繁,每次更新的時候都要重啟。一旦重啟后,整個 Ehcache 緩存里的數據都被清掉。重啟后若大量訪問進來的話,開源中國的數據庫基本上很快就會崩掉”。

于是,開源中國開發了多級緩存框架  J2Cache,使用了多級緩存 Ehcache + Redis 。

多級緩存有如下優勢:

  1. 離用戶越近,速度越快;
  2. 減少分布式緩存查詢頻率,降低序列化和反序列化的 CPU 消耗;
  3. 大幅度減少網絡 IO 以及帶寬消耗。

本地緩存做為一級緩存,分布式緩存做為二級緩存,首先從一級緩存中查詢,若能查詢到數據則直接返回,否則從二級緩存中查詢,若二級緩存中可以查詢到數據,則回填到一級緩存中,并返回數據。若二級緩存也查詢不到,則從數據源中查詢,將結果分別回填到一級緩存,二級緩存中。

圖片

2018年,筆者服務的一家電商公司需要進行 app 首頁接口的性能優化。筆者花了大概兩天的時間完成了整個方案,采取的是兩級緩存模式,同時利用了 Guava 的惰性加載機制,整體架構如下圖所示:

圖片

緩存讀取流程如下:

1、業務網關剛啟動時,本地緩存沒有數據,讀取 Redis 緩存,如果 Redis 緩存也沒數據,則通過 RPC 調用導購服務讀取數據,然后再將數據寫入本地緩存和 Redis 中;若 Redis 緩存不為空,則將緩存數據寫入本地緩存中。

2、由于步驟1已經對本地緩存預熱,后續請求直接讀取本地緩存,返回給用戶端。

3、Guava 配置了 refresh 機制,每隔一段時間會調用自定義 LoadingCache 線程池(5個最大線程,5個核心線程)去導購服務同步數據到本地緩存和 Redis 中。

優化后,性能表現很好,平均耗時在 5ms 左右。最開始我以為出現問題的幾率很小,可是有一天晚上,突然發現 app 端首頁顯示的數據時而相同,時而不同。

也就是說:雖然 LoadingCache 線程一直在調用接口更新緩存信息,但是各個 服務器本地緩存中的數據并非完成一致。說明了兩個很重要的點:

1、惰性加載仍然可能造成多臺機器的數據不一致

2、LoadingCache 線程池數量配置的不太合理,  導致了線程堆積

最終,我們的解決方案是:

1、惰性加載結合消息機制來更新緩存數據,也就是:當導購服務的配置發生變化時,通知業務網關重新拉取數據,更新緩存。

2、適當調大 LoadigCache 的線程池參數,并在線程池埋點,監控線程池的使用情況,當線程繁忙時能發出告警,然后動態修改線程池參數。

五、總結

Fred Brooks 在 1987 年所發表的一篇關于軟件工程的經典論文《沒有銀彈:軟件工程的本質性與附屬性工作》。

論文強調真正的銀彈并不存在,而所謂的銀彈則是指沒有任何一項技術或方法可以能讓軟件工程的生產力在十年內提高十倍。

通俗來講:在技術領域中沒有一種通用的解決方案可以解決所有問題。技術本質上是為了解決問題而存在的,每個問題都有其獨特的環境和限制條件,沒有一種通用的技術或工具可以完美地解決所有問題。

緩存是把雙刃劍,一方面我們享受緩存帶來的系統性能提升,另一方面引入緩存會提高系統復雜度,因為你要考慮緩存的失效、更新、一致性等問題。

在面臨緩存選型時,一定要結合業務場景,研發效率,運維成本,人力模型,技術儲備等因素,做出合理的選擇。

責任編輯:武曉燕 來源: 勇哥java實戰分享
相關推薦

2024-05-20 08:08:00

分布式系統緩存C#

2025-09-01 08:28:41

2018-02-07 10:46:20

數據存儲

2023-02-28 07:01:11

分布式緩存平臺

2019-02-18 11:16:12

Redis分布式緩存

2013-06-13 11:29:14

分布式分布式緩存

2017-12-12 14:51:15

分布式緩存設計

2009-11-09 09:25:24

Memcached入門

2015-09-21 09:20:11

C#Couchbase使用

2019-07-04 15:13:16

分布式緩存Redis

2022-04-07 17:13:09

緩存算法服務端

2018-12-14 10:06:22

緩存分布式系統

2023-01-13 07:39:07

2023-05-05 06:13:51

分布式多級緩存系統

2009-02-10 08:57:01

分布式緩存.Net開發

2009-02-06 09:38:38

memcached分布式緩存系統ASP.NET

2013-04-19 11:03:32

memcahce入門教分布式緩存系統

2025-06-09 08:00:37

分布式文件系統

2011-11-29 09:49:16

數據庫其他數據庫NoSQL

2017-09-27 10:53:53

分布式數據集SparkRDD
點贊
收藏

51CTO技術棧公眾號

韩国三级电影久久久久久| 欧美日韩视频在线一区二区| 国产99在线免费| 欧美做受xxxxxⅹ性视频| 午夜精品成人av| 粉嫩久久99精品久久久久久夜| 国内揄拍国内精品| 久久成人激情视频| 黑人精品一区| 91小视频免费观看| 久久久久久久色| av在线网站观看| 青青久久精品| 午夜精品久久久久久久99樱桃| 91在线免费视频| 青青操在线视频观看| 91p九色成人| 亚洲激情欧美激情| 147欧美人体大胆444| 日本少妇做爰全过程毛片| 99re6热只有精品免费观看| 欧美性猛交xxxx免费看漫画| 中文字幕在线亚洲三区| 日本xxxxxwwwww| 另类小说欧美激情| 精品国产一区二区三区久久久狼| 国产性猛交96| 国内精品伊人| 色先锋资源久久综合| 少妇一晚三次一区二区三区| 成人免费高清在线播放| 久久精品国产99国产精品| www.日韩.com| 91久久免费视频| 东京久久高清| 欧美性猛交xxxx| 一区二区三区欧美成人| 亚洲天堂手机在线| 麻豆精品网站| 午夜精品www| 国产高清一区二区三区四区| 高清精品视频| 欧美一区二区啪啪| 精品久久久久久无码中文野结衣| 色av男人的天堂免费在线| 日韩精品一区第一页| 欧美黑人国产人伦爽爽爽| 黄色工厂在线观看| 国产精品无码久久久久| 玉米视频成人免费看| 亚洲欧洲精品一区二区三区波多野1战4| 一区二区三区精| 黄色成人精品网站| 一区二区欧美亚洲| 30一40一50老女人毛片| 日韩mv欧美mv国产网站| 欧美三级在线视频| 男女污污的视频| 手机在线免费观看av| 亚洲美女视频一区| 国模精品一区二区三区| 亚洲国产成人一区二区| 国产精品一二三区在线| 91成人理论电影| 国产黄色高清视频| 日韩精品一级二级 | 亚洲国产欧美日韩在线观看第一区| 日本乱人伦一区| 黄色动漫网站入口| 亚洲美女久久精品| 一本到不卡免费一区二区| 国产视频一区二区三区在线播放 | 一级特黄特色的免费大片视频| 日日夜夜精品视频天天综合网| 久久av在线看| 久久久国产精品人人片| 亚洲激情偷拍| 日本sm极度另类视频| 久久久精品一区二区涩爱| 成人6969www免费视频| 一区二区中文字幕| 欧美熟妇一区二区| 盗摄牛牛av影视一区二区| 亚洲第一精品福利| 色婷婷av777| 色综合天天综合网中文字幕| 不卡伊人av在线播放| 精品无码久久久久| 欧美日韩影院| 26uuu亚洲国产精品| 精品无码免费视频| 国内自拍一区| 国产成人av在线| 国产精品九九九九| www.欧美日韩| 亚洲国产精品日韩| 好久没做在线观看| 一区二区成人在线观看| 欧美黑人经典片免费观看| 伦理在线一区| 色欧美88888久久久久久影院| 911福利视频| 日韩欧美美女在线观看| 日韩亚洲欧美成人| 四虎永久免费在线| 自拍日韩欧美| 欧美xxxx18性欧美| 加勒比av在线播放| 久久久久久穴| 99re在线| 亚洲欧美视频一区二区| 国产精品成人免费| 熟妇熟女乱妇乱女网站| 精精国产xxxx视频在线野外| 日韩欧美亚洲成人| 国产男女无遮挡猛进猛出| 亚洲大奶少妇| 一区二区三区久久精品| 日本一二三不卡视频| 欧美色女视频| 精品国产区一区二区三区在线观看| 国产午夜手机精彩视频| 国产日韩一区| 国产精品视频永久免费播放| 欧洲av在线播放| 91在线高清观看| 欧美亚洲另类在线一区二区三区| 国产精品剧情一区二区在线观看| 色综合一个色综合亚洲| 日本wwwwwww| 亚洲国产一成人久久精品| 国产精品91在线| 一级做a爱片久久毛片| 国产精品羞羞答答xxdd| 亚洲国产婷婷香蕉久久久久久99| 特黄毛片在线观看| 欧美日韩国产另类不卡| 久久av无码精品人妻系列试探| 伊人精品成人久久综合软件| 91高清视频免费| 在线观看不卡的av| 久久久久国产一区二区三区四区 | 欧美粗暴jizz性欧美20| 午夜精品在线观看| 久久久精品毛片| 久久99精品网久久| 国产经品一区二区| caopen在线视频| 欧美视频二区36p| 国产性生活毛片| 韩国自拍一区| 俄罗斯精品一区二区三区| 最新黄网在线观看| 日韩三级在线观看| 欧美日韩人妻精品一区二区三区| 国产亚洲毛片在线| 久久一区二区三区欧美亚洲| 天堂地址在线www| 欧美性一级生活| 免费在线观看a视频| 免费成人av在线| 国产一区二区三区四区五区在线| 成人高清免费在线播放| 亚洲一区二区三区四区中文字幕| 少妇丰满尤物大尺度写真| 欧美成熟视频| 国产一区福利视频| 91蜜桃在线视频| 欧亚一区二区三区| 免费黄色国产视频| 国产精品久久久久久模特 | 久久久久久av| 日韩在线观看视频一区二区三区| 国产精品欧美一区喷水| 91亚洲免费视频| 一区二区三区四区日韩| 99在线观看| 天堂av在线| 亚洲一二三在线| 日韩成人免费在线视频| 91在线国产福利| 黄色成人在线看| 免费国产自久久久久三四区久久| 国产成人午夜视频网址| 三区四区在线视频| 精品久久久久久亚洲综合网 | 麻豆tv在线观看| 99精品视频在线观看播放| 97中文在线| 1024在线播放| 6080亚洲精品一区二区| 亚洲激情图片网| 石原莉奈在线亚洲三区| 久久国产精品 国产精品| 中文另类视频| 亚洲日本成人女熟在线观看| 91精品视频免费在线观看| 亚洲国产一区视频| 国产主播av在线| 蜜桃视频在线一区| 丰满的少妇愉情hd高清果冻传媒| 日韩精品久久久久久久软件91| 91a在线视频| 青青草娱乐在线| 51精品秘密在线观看| 91麻豆精品成人一区二区| 韩日欧美一区二区三区| 穿情趣内衣被c到高潮视频| 免费萌白酱国产一区二区三区| 97精品视频在线| 色婷婷中文字幕| 黄色成人av在线| 成人18视频免费69| 91免费在线看| 色综合久久久无码中文字幕波多| 欧美99久久| 国产91一区二区三区| 成人精品国产亚洲| 亚洲3p在线观看| 国产欧美久久久久久久久| 亚洲视频在线观看视频| 人妻精品无码一区二区| 91精品黄色片免费大全| 欧美日韩 一区二区三区| 香港成人在线视频| 亚洲熟女www一区二区三区| 国产欧美综合在线| 免费看黄色aaaaaa 片| 国产成人在线免费观看| 欧美精品一区免费| 欧美午夜电影在线观看 | 一卡二卡三卡视频| 最新精品国产| 精品在线观看一区二区| 精品123区| 欧美在线视频导航| 日本不卡视频| 最近更新的2019中文字幕| 黄色av网址在线免费观看| 日韩精品亚洲精品| 日本免费网站在线观看| 精品日韩av一区二区| 国产女主播喷水视频在线观看 | 亚洲无av在线中文字幕| 日本ー区在线视频| 精品在线观看国产| 天堂成人在线观看| 亚洲黄色av女优在线观看 | 国产在线视频你懂的| 一区二区三区在线影院| 久久久久久久极品内射| 亚洲一区在线免费观看| 久久久久久久国产精品毛片| 夜夜爽夜夜爽精品视频| 久热这里只有精品在线| 国产精品理论在线观看| www.日本高清视频| 国产精品乱码久久久久久| 日本黄色免费片| 亚洲欧美色综合| a级大片在线观看| 久久久久久麻豆| www.黄色在线| 国产精品久久久久久妇女6080| 日本黄色免费观看| 91丨国产丨九色丨pron| 99国产精品免费视频| 成人免费黄色在线| 国产激情在线免费观看| 国产欧美精品一区| 婷婷久久综合网| 亚洲高清不卡在线观看| 国产又粗又长又黄的视频| 中文字幕一区二区三区精华液| 久热这里有精品| 国产精品久久久久一区二区三区共| 亚洲一区电影在线观看| 一区二区免费在线| 亚洲欧美精品aaaaaa片| 欧美激情在线一区二区三区| 美女视频久久久| 亚洲无人区一区| 四虎精品永久在线| 亚洲成人午夜电影| 无码人妻一区二区三区线| 欧美日本在线一区| 成人无码一区二区三区| 日韩一区二区在线看| 天天干,夜夜爽| 欧美精品一区二| 精品国产区一区二| 亚洲精品自产拍| 青青久在线视频免费观看| 日韩国产中文字幕| 亚欧在线观看视频| 亚洲精品国偷自产在线99热 | 日韩欧国产精品一区综合无码| 日本亚洲欧洲色| 自拍偷拍亚洲图片| 精品国产福利| 91欧美国产| 日本欧美黄色片| 激情成人综合网| 亚洲av无日韩毛片久久| 久久 天天综合| av网页在线观看| 99久久er热在这里只有精品15| 亚洲少妇一区二区三区| fc2成人免费人成在线观看播放| 我不卡一区二区| 亚洲福利视频一区| 欧美videossex极品| 在线91免费看| 国产专区在线| 2020国产精品视频| 成人三级av在线| 你懂的网址一区二区三区| 国产一区二区亚洲| 一本一道久久a久久精品综合| 亚洲国产专区| 九九九久久久久久久| 国产精品美女久久福利网站| 永久久久久久久| 在线观看日韩国产| 性xxxx搡xxxxx搡欧美| 久久综合电影一区| 欧美男男gaygay1069| 91在线免费看片| 精品国内亚洲2022精品成人| 欧美日韩大片一区二区三区 | 91色视频在线| 1024手机在线观看你懂的| 欧美视频在线免费| 五月天婷婷激情网| 91极品视频在线| 国产精品17p| 东北少妇不带套对白| 国产成人免费av在线| 免费在线观看一级片| 精品国产老师黑色丝袜高跟鞋| 波多野结衣毛片| 亚洲精选在线观看| 午夜影院在线观看国产主播| 日韩黄在线观看| av中文字幕网址| 99热超碰在线| 另类ts人妖一区二区三区| 精品91免费| 妖精视频一区二区三区| 欧美综合在线播放| 蜜桃av一区二区| 天堂在线中文视频| 欧美午夜精品久久久久久孕妇| 深夜福利视频在线免费观看| 97色在线观看| 天堂综合网久久| 无码精品国产一区二区三区免费| 狠狠色丁香久久婷婷综合_中| 亚洲色图第四色| 午夜视频一区在线观看| 亚洲天堂网在线观看视频| 亚洲黄色片网站| 黄色av网站在线播放| 777午夜精品福利在线观看| 韩国女主播一区二区三区| 精品欧美一区免费观看α√| 99精品欧美一区| 丁香社区五月天| 亚洲电影中文字幕| 欧美办公室脚交xxxx| av蓝导航精品导航| 999久久久精品国产| 91免费视频污| 亚洲国产综合视频在线观看| 国产精品人妻一区二区三区| 亚洲少妇中文在线| 成入视频在线观看| 国产一区二区三区四区五区在线| 综合av在线| 日本超碰在线观看| 国产喂奶挤奶一区二区三区| 中文字幕av影视| 亚洲一级片在线看| av在线精品| 国产一级爱c视频| 国产婷婷色一区二区三区| 日韩精品成人免费观看视频| 亚洲国模精品一区| 超级白嫩亚洲国产第一| 日本一区免费| 国产麻豆精品久久一二三| 97超碰人人干| 色伦专区97中文字幕| 国产精品任我爽爆在线播放| 中文字幕日韩精品无码内射| 久久综合99re88久久爱| www.伊人久久| 亚洲欧美日韩中文视频| 免费观看亚洲| 裸体大乳女做爰69|