精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

国产伦一区二区| 黄色国产在线播放| 女海盗2成人h版中文字幕| 成人av免费在线观看| 97av视频在线| 日韩视频在线观看免费视频| 日日夜夜精品| 亚洲动漫第一页| 品久久久久久久久久96高清| 一级特黄录像免费看| 欧美日本一区| 亚洲色图13p| 黄色片免费网址| 草草在线视频| 国产精品初高中害羞小美女文| 91丝袜脚交足在线播放| 久久夜色精品亚洲| 久久性感美女视频| 日韩国产激情在线| 国产福利精品一区二区三区| 大桥未久在线播放| 中国色在线观看另类| www日韩av| 欧美视频xxxx| 一区二区国产在线观看| 久久精品国产91精品亚洲| 亚洲色偷偷色噜噜狠狠99网| 欧美韩国日本| 欧美性极品xxxx做受| 在线观看视频黄色| 黄色在线免费观看大全| 成人性色生活片免费看爆迷你毛片| 日本电影亚洲天堂| 日韩高清免费av| 91不卡在线观看| 国产亚洲欧洲黄色| 懂色av粉嫩av蜜乳av| 韩国三级成人在线| 欧美伊人久久久久久久久影院| 大荫蒂性生交片| 毛片在线不卡| 国产精品天美传媒| 欧美成人dvd在线视频| www.久久久久久| 久久国产精品色婷婷| 国产成人av在线| 日韩精品一区二区在线播放| 亚洲最大av| 中文字幕日韩欧美精品在线观看| 特大黑人巨人吊xxxx| 精品网站aaa| 精品国产区一区| 老司机av网站| 日韩在线精品强乱中文字幕| 欧美精选一区二区| 亚洲这里只有精品| 日本久久久久| 欧美酷刑日本凌虐凌虐| 午夜视频你懂的| 成人开心激情| 欧美天天综合网| 国产成人黄色网址| 久久麻豆视频| 69堂成人精品免费视频| 亚洲精品mv在线观看| 亚洲ww精品| 欧美一区二区三区精品| 三大队在线观看| 91嫩草精品| 亚洲精品一区二区三区福利 | 黑人巨大精品一区二区在线| 91亚洲国产成人久久精品| 日韩视频免费大全中文字幕| 91香蕉视频污在线观看| 亚洲h色精品| 久久伊人91精品综合网站| 中文字幕在线观看成人 | 国产黄色片免费在线观看| 欧美韩日亚洲| 天天色天天操综合| 国产免费视频传媒| 国产精品久久久久久av公交车 | 亚洲黄色一级大片| av动漫一区二区| 欧美不卡在线一区二区三区| 在线国产情侣| 夜色激情一区二区| 久久综合色视频| 国产综合色在线观看| 欧美精品 国产精品| 色悠悠在线视频| 先锋影音国产精品| 精品国产一区二区三区久久狼黑人| 日韩一区二区三区四区在线| 亚洲三级电影在线观看| 国产精品久久久久久久久久免费| 国产精品欧美亚洲| 9久草视频在线视频精品| 亚洲国产日韩欧美| 欧美xxxx少妇| 欧美午夜一区二区| 欧美人与性动交α欧美精品| 九一精品国产| 欧美成人中文字幕| 国产伦精品一区二区三区视频网站| 日韩专区中文字幕一区二区| 1卡2卡3卡精品视频| 黄色美女网站在线观看| 亚洲精选一二三| 日本免费黄视频| 国产美女精品视频免费播放软件| 亚洲精品mp4| 神马久久精品综合| 米奇777在线欧美播放| 亚洲综合在线播放| 成年人在线观看视频| 亚洲国产成人91porn| 欧美成人福利在线观看| 久久久久久久久久久久久久久久久久久久| 一区二区亚洲精品国产| 日韩乱码一区二区| 国产在线看一区| 天天好比中文综合网| 老色鬼在线视频| 欧美一级xxx| 久久久久久久久福利| 国产亚洲精品v| 不卡日韩av| 在线免费av网站| 日本国产一区二区| 亚洲一区二区观看| 亚洲成色精品| 91久色国产| 国产在线激情| 欧美另类一区二区三区| 天天躁夜夜躁狠狠是什么心态| 亚洲美女黄色| 99久热re在线精品视频| 成人ww免费完整版在线观看| 欧美色视频一区| 亚洲精品视频久久久| 中日韩男男gay无套| 99视频在线播放| a毛片在线播放| 欧美精品日韩精品| 日韩精品一区二区三区在线视频| 日韩精品成人一区二区在线| 麻豆成人小视频| 中文字幕在线高清| 亚洲毛片在线观看| 日本中文字幕在线| 久久久精品中文字幕麻豆发布| 久久久亚洲精品无码| 国产精品乱战久久久| 久久久久久久久久婷婷| 亚洲卡一卡二卡三| 亚洲国产日韩在线一区模特| 久久久精品人妻一区二区三区| 欧美一区91| 北条麻妃高清一区| 久草在线新免费首页资源站| 精品日韩欧美在线| 国产污片在线观看| 91玉足脚交白嫩脚丫在线播放| 鲁一鲁一鲁一鲁一澡| 狼人天天伊人久久| 欧美影院久久久| 大乳在线免费观看| 欧美日韩日日摸| 成人高潮免费视频| 国产ts人妖一区二区| 日韩精品 欧美| 在线日韩一区| 国产精品永久免费| av在线网址观看| 精品国产一区二区三区av性色 | 国产在线电影| 欧美三级视频在线观看| 男人av资源站| 国产电影一区二区三区| 国产96在线 | 亚洲| 伊人久久大香线蕉无限次| 国产精品自拍网| a黄色片在线观看| 精品亚洲aⅴ在线观看| 日本黄色中文字幕| 亚洲美女一区二区三区| a级一a一级在线观看| 日韩高清欧美激情| 玖玖精品在线视频| 色综合久久中文| 国产欧亚日韩视频| 国产丝袜精品丝袜| 国产一区二区三区在线免费观看 | 精品免费一区二区三区| 天天干天天干天天| 一区在线观看视频| 国产精品久久久久久久无码| 男人的天堂亚洲一区| 一二三在线视频| 国产99亚洲| 亚洲一区二区三区四区视频| 亚洲天堂av影院| 久久久极品av| 女人天堂在线| 日韩美女在线视频| 高潮无码精品色欲av午夜福利| 樱桃视频在线观看一区| 欧美 日韩 国产 成人 在线观看| 国产成人午夜电影网| 老头吃奶性行交视频| 欧美国产免费| 亚洲一区尤物| 日韩伦理一区二区三区| 97人人干人人| 国产激情欧美| 国产999在线| 狠狠操一区二区三区| 久久av.com| 99免在线观看免费视频高清| 亚洲精品久久视频| 国产成人av免费看| 欧美日韩你懂的| 久久亚洲精品石原莉奈| 亚洲第一福利一区| 欧美 日韩 国产 一区二区三区| 国产亚洲一区二区三区四区| 黄色av电影网站| 国产美女视频一区| 日本在线观看免费视频| 日韩视频免费| 欧美又粗又长又爽做受| 91久久久精品国产| 亚洲精品免费在线看| 免费看日本一区二区| 国产一区二区高清视频| 香蕉成人app| 5g国产欧美日韩视频| 国产va免费精品观看精品| 国产精品久久久久久中文字| 国产高清不卡| 55夜色66夜色国产精品视频| 波多野结衣在线播放| 久久99热精品| 免费看电影在线| 欧美精品情趣视频| a级在线观看| 欧美巨乳美女视频| 欧美人与性动交α欧美精品图片| 九九精品在线视频| 污污的网站在线免费观看| 久久在线视频在线| av软件在线观看| 欧美精品一区二区免费| 国产精品扒开做爽爽爽的视频| 在线日韩中文字幕| 日本视频在线观看| 日韩亚洲成人av在线| 日本福利在线| 精品国产一区久久久| 免费网站免费进入在线| 精品国产拍在线观看| av网址在线看| 久久久久久久999| 91破解版在线观看| 欧美中文字幕在线| 欧美与亚洲与日本直播| 国产欧美韩国高清| 国产精品久久久久久久久久辛辛 | 国产乱码精品一区二区三区忘忧草| 青娱乐国产精品视频| 成人视屏免费看| 中文字幕影片免费在线观看| 91看片淫黄大片一级在线观看| 少妇特黄一区二区三区| 国产三级欧美三级日产三级99 | 欧在线一二三四区| 日本在线不卡视频一二三区| 久久婷婷综合色| 国产精品一二一区| 超碰97在线资源站| 国产欧美日韩三级| 污污的视频在线免费观看| 亚洲国产日产av| 中文字幕一区二区人妻视频| 欧美精品日日鲁夜夜添| 日本高清视频在线| 亚洲品质视频自拍网| 免费人成在线观看播放视频| 欧美刺激性大交免费视频| av电影一区| 91精品在线国产| 欧美日韩大片免费观看| 天堂社区 天堂综合网 天堂资源最新版 | 欧美亚洲高清一区| www.午夜激情| 亚洲一区二区久久久| 污污片在线免费视频| 国产成人免费av| 欧美欧美在线| 日产国产精品精品a∨| 欧美在线三级| 国产一区视频免费观看| 国产福利视频一区二区三区| 无码 人妻 在线 视频| 亚洲免费观看高清完整版在线 | 欧美日韩国产精品专区| 中国a一片一级一片| 亚洲第一免费网站| 免费a级在线播放| 欧美一区二区三区免费观看| 精品久久国产一区| 色涩成人影视在线播放| 一区二区久久| 日本特黄在线观看| 中文字幕欧美国产| 亚洲欧美综合另类| 精品国产一区二区三区久久影院| 在线免费观看黄色网址| 欧美一区二区三区免费视| 嫩呦国产一区二区三区av| 天天爽天天狠久久久| 国产精品亚洲综合久久| 91精品人妻一区二区三区蜜桃2| 国产精品污污网站在线观看| 久草国产精品视频| 精品日韩在线观看| av片哪里在线观看| 国产啪精品视频| 成人嫩草影院| 欧美少妇性生活视频| 91视频.com| 欧美一级高潮片| 欧美一级精品在线| 黄色片网站在线观看| 国产精品视频免费在线| 精品国产日韩欧美| 日韩久久一级片| 97se狠狠狠综合亚洲狠狠| 久久久精品人妻一区二区三区四| 91精品一区二区三区久久久久久 | 中文久久电影小说| 超级碰在线观看| 国产福利精品一区| 日日骚一区二区三区| 555夜色666亚洲国产免| 免费黄色电影在线观看| 成人免费xxxxx在线观看| 久久国产成人精品| 奇米影视四色在线| 国产精品欧美经典| 88av在线视频| 久久精品久久久久久国产 免费| 色综合一区二区日本韩国亚洲 | 欧美日韩蜜桃| 古装做爰无遮挡三级聊斋艳谭| 亚洲欧美一区二区三区极速播放| 国产精品探花视频| 欧美www在线| 盗摄牛牛av影视一区二区| 男人插女人视频在线观看| 成人av电影免费观看| 欧美另类一区二区| 亚洲精品中文字幕女同| 亚洲一区二区三区四区| 亚洲ai欧洲av| 国产毛片精品视频| 麻豆影视在线播放| 日韩精品视频在线播放| 成人做爰视频www网站小优视频| 日韩av电影免费在线| 美女诱惑一区| 美国一级片在线观看| 日韩欧美国产综合| 手机在线观看av| 日本一区免费看| 久久成人av少妇免费| 久草视频在线资源站| 国产丝袜一区二区| 亚洲精品aa| 国产一区二区三区小说| 久久夜色精品一区| 一卡二卡三卡在线观看| 欧美日韩国产123| 亚欧洲精品视频在线观看| www.99在线| 一区二区三区四区在线播放| 天堂中文在线看| 成人福利网站在线观看11| 狠色狠色综合久久| 夫妇交换中文字幕| 日韩精品中文字幕一区| 欧美日韩视频网站| 好吊色视频988gao在线观看| 久久色在线视频| 国产免费无遮挡| 日本电影亚洲天堂| 欧美日韩一区二区国产| 亚洲天堂最新地址| 亚洲国产成人久久综合|