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

你,緩存,一致性?

開發 前端
消息隊列保證消息成功投遞:下游從隊列拉取消息,成功消費后才會刪除消息,否則還會繼續投遞消息給消費者(符合我們重試的場景)。

哈嘍,大家好,我是指北君。不知道大家出去面試有沒有被問到過如何保證數據庫與緩存一致性問題呢?大家又是如何回答的呢?

緩存一致性 每次逢年過節的時候搶票非常艱難,放票的時候那么多人同時去搶票,如果所有人查詢、購票等都去訪問數據庫,那數據庫的壓力得有多大,這時候很多都會引入緩存, 把車票信息放入緩存,這樣可以減少數據庫壓力。當乘客購買成功之后,數據庫發生了變化,需要及時更新緩存中的數據,以便于其他乘客能從緩存中及時獲取最新車票信息。這就是緩存一致性。

解決數據庫與緩存一致性主要思路:

1、同步雙寫:也就是修改db的時候同時修改一下緩存,這種模式下會出現無法保證數據庫與緩存的原子性。
如果出現多線程同時修改db的情況,網絡延遲導致數據庫修改順序與請求順序錯位
例如:A 先操作數據庫修改 x=1
B也修改數據庫 x=2
但是網絡延遲導致
B先修改緩存 x=2
A再修改緩存 x=1
這樣就導致了數據庫中x=2,而緩存中則是 x=1,導致數據庫與緩存不一致。

2、設置有效期:給緩存設置有效期,到期后自動刪除。再次查詢時更新
優勢:簡單、方便
缺點:時效性差,緩存過期之前可能不一致
場景:更新頻率較低,時效性要求低的業務

那我們有沒有什么更加好的解決方案呢?

阿里云的canal就為我們很好的解決了這一問題:

canal: 是Alibaba旗下的一款開源項目,純Java開發.它是基于數據庫增量日志解析,提供增量數據訂閱&消費,目前主要支持mysql。

canal工作原理

mysql的主從復制原理:

 MySQL master 將數據變更寫入二進制日志( binary log , 其中記錄叫做二進制日志事件 binary log events ,可以通過 show binlog events 進行查看) 
MySQL slave 將 master 的 binary log events 拷貝到它的中繼日志( relay log )
MySQL slave 重放 relay log 中事件,將數據變更反映它自己的數據

canal工作原理

 canal模擬mysql salve的交互協議,偽裝自己為mysql slave,向mysql master發送dump協議;
mysql master收到dump請求,開始推送binary log給slave(也就是canal);
canal解析binary log對象(原始byte流).

canal的安裝配置(以windows為例)

一、登進Mysql后,使用show variables like'log_bin';查詢是否開啟binlog,如果開啟(ON),進行下一步,如果沒開啟(OFF),在數據庫的my.ini配置文件添加配置

 [mysqld]
# 開啟 binlog
log-bin=mysql-bin
# 選擇 ROW 模式
binlog-format=ROW
# 配置 MySQL replaction 需要定義,不要和 canal 的 slaveId 重復
server_id=1

二、binlog開啟后,創建一個canal用戶并授權,官網配置是@%,表示所有服務器,所以改為localhost就可以,在mysql中,運行如下代碼,設置完成之后重啟:

   CREATE USER canal IDENTIFIED BY 'canal'; 
GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'canal'@'localhost' identified by 'canal';
FLUSH PRIVILEGES;

三、安裝canal

下載地址:https://github.com/alibaba/canal/releases/tag/canal-1.1.6-alpha-1

在conf文件夾里找到\conf\canal.properties

 canal.id = 1
canal.ip =
canal.port = 11111
canal.metrics.pull.port = 11112
canal.zkServers =
# flush data to zk
canal.zookeeper.flush.period = 1000
canal.withoutNetty = false
# tcp, kafka, RocketMQ
canal.serverMode = tcp
# flush meta cursor/parse position to file

說明:這個文件是 canal 的基本通用配置,canal 端口號默認就是 11111,修改 canal 的輸出 model,默認 tcp,改為輸出到 kafka

重點關注上面的:canal.serverMode = tcp 這個配置,默認情況,如果是使用mysql,可以不做修改,如果需要將數據同步到kafka,或者rocketmq,可以分別修改即可,此處暫不做修改

解壓到適當位置,解壓后在conf文件夾里找到\example\instance.properties,

  canal.instance.mysql.slaveId=20   #只要和mysql的master的不一樣即可
# enable gtid use true/false
canal.instance.gtidon=false
# position info
canal.instance.master.address=127.0.0.1:3306

canal.instance.mysql.slaveId=20 #只要和mysql的master的不一樣即可

canal.instance.master.address=127.0.0.1:3306 ,監聽的mysql的master節點信息

配置連接 MySQL 的用戶名和密碼,默認就是我們前面授權的 canal

修改數據庫配置信息,canal.instance.dbUsername、canal.instance.dbPassword為數據庫賬戶密碼,均為canal,剛剛創建賬號密碼,

圖片

到bin目錄下啟動 startup.bat,出現如下界面表示啟動成功

圖片

四、spring boot中整合canal maven依賴

 <dependency>
<groupId>com.alibaba.otter</groupId>
<artifactId>canal.client</artifactId>
<version>1.1.4</version>
</dependency>

java 示例:

 public class CanalService {
public static void main(String[] args) throws Exception{

//1.獲取 canal 連接對象,我在本機上部署的,所以是127.0.0.1
CanalConnector canalConnector =
CanalConnectors.newSingleConnector(new
InetSocketAddress("127.0.0.1", 11111), "example", "", "");

System.out.println("canal啟動并開始監聽數據 ...... ");
while (true){
canalConnector.connect();
//訂閱表 test數據庫下的所有表
canalConnector.subscribe("test.*");
//獲取數據
Message message = canalConnector.get(100);
//解析message
List<CanalEntry.Entry> entries = message.getEntries();
if(entries.size() <=0){
System.out.println("未檢測到數據");
Thread.sleep(1000);
}
for(CanalEntry.Entry entry : entries){
//1、獲取表名
String tableName = entry.getHeader().getTableName();
//2、獲取類型
CanalEntry.EntryType entryType = entry.getEntryType();
//3、獲取序列化后的數據
ByteString storeValue = entry.getStoreValue();

//判斷是否rowdata類型數據
if(CanalEntry.EntryType.ROWDATA.equals(entryType)){
//對第三步中的數據進行解析
CanalEntry.RowChange rowChange = CanalEntry.RowChange.parseFrom(storeValue);
//獲取當前事件的操作類型
CanalEntry.EventType eventType = rowChange.getEventType();
//獲取數據集
List<CanalEntry.RowData> rowDatasList = rowChange.getRowDatasList();
//便利數據
for(CanalEntry.RowData rowData : rowDatasList){
//數據變更之前的內容
JSONObject beforeData = new JSONObject();
List<CanalEntry.Column> beforeColumnsList = rowData.getAfterColumnsList();
for(CanalEntry.Column column : beforeColumnsList){
beforeData.put(column.getName(),column.getValue());
}
//數據變更之后的內容
List<CanalEntry.Column> afterColumnsList = rowData.getAfterColumnsList();
JSONObject afterData = new JSONObject();
for(CanalEntry.Column column : afterColumnsList){
afterData.put(column.getName(),column.getValue());
}
System.out.println("Table :" + tableName +
",eventType :" + eventType +
",beforeData :" + beforeData +
",afterData : " + afterData);
//操作緩存
}
}else {
System.out.println("當前操作類型為:" + entryType);
}
}
}
}
}

我手動在book表中操作數據,可以看到程序監控輸出結果

圖片

五、 最后我們拿到數據之后可以放入消息隊列,這樣可以加入重試機制,還可以防止冪等問題,最后再寫入緩存。

圖片

消息隊列保證可靠性:寫到隊列中的消息,成功消費之前不會丟失(重啟項目也不擔心)。

消息隊列保證消息成功投遞:下游從隊列拉取消息,成功消費后才會刪除消息,否則還會繼續投遞消息給消費者(符合我們重試的場景)。

責任編輯:武曉燕 來源: Java技術指北
相關推薦

2020-05-12 10:43:22

Redis緩存數據庫

2020-06-01 22:09:48

緩存緩存同步緩存誤用

2017-07-25 14:38:56

數據庫一致性非鎖定讀一致性鎖定讀

2024-12-26 15:01:29

2019-03-27 13:56:39

緩存雪崩穿透

2025-08-08 07:09:58

2023-07-27 08:29:09

2023-08-14 08:10:33

CPU緩存RFO

2021-06-11 09:21:58

緩存數據庫Redis

2021-02-05 08:00:48

哈希算法?機器

2021-02-02 12:40:50

哈希算法數據

2023-05-09 10:59:33

緩存技術派MySQL

2024-04-23 08:22:58

Meta緩存系統

2024-05-28 00:50:00

RedisMySQL緩存

2024-04-11 13:45:14

Redis數據庫緩存

2020-10-26 19:25:23

CPU緩存Cache

2024-10-28 12:41:25

2024-01-15 10:38:20

多級緩存數據一致性分布式緩存

2022-03-29 10:39:10

緩存數據庫數據

2025-09-08 07:25:16

點贊
收藏

51CTO技術棧公眾號

在线视频欧美精品| 91蝌蚪porny成人天涯| 最近2019免费中文字幕视频三 | 成人勉费视频| 欧美国产日产图区| 91精品国产99久久久久久红楼| 精品无码黑人又粗又大又长| 另类ts人妖一区二区三区| 色哟哟国产精品免费观看| 在线不卡日本| 午夜小视频在线播放| 人人狠狠综合久久亚洲| 欧美乱大交做爰xxxⅹ性3| 久久一区二区电影| 日韩免费大片| 欧美日韩美女视频| 国产又爽又黄ai换脸| 香蕉视频黄色片| 久久91精品国产91久久小草| 91精品国产乱码久久久久久蜜臀| 永久av免费网站| 午夜精品福利影院| 欧美一区二区三区在线| 黄色a级片免费| 在线黄色网页| 欧美韩日一区二区三区四区| 国产精品二区三区| 国产一区二区波多野结衣 | 国产精品久久久久9999小说| 污影院在线观看| 日本一区二区三级电影在线观看| 国产福利不卡| 97在线公开视频| 日韩影院在线观看| 97激碰免费视频| a在线视频播放观看免费观看| 国产成人av| 91精品欧美一区二区三区综合在 | 亚洲成人av在线| 亚洲18在线看污www麻豆| 中文av在线全新| 亚洲一级在线观看| 操bbb操bbb| 免费av不卡| 国产色91在线| 欧洲成人一区二区| 偷拍自拍在线视频| 不卡的av在线| 国产精品一 二 三| 91一区二区视频| 日韩av一区二区三区四区| 18性欧美xxxⅹ性满足| 久久久一二三区| 亚洲精品99| 最近2019好看的中文字幕免费| 精品人妻少妇嫩草av无码| aiss精品大尺度系列| 日韩欧美电影一区| 亚洲高清av一区二区三区| 爱情电影网av一区二区| 91精品国产综合久久国产大片| www.超碰97.com| 日韩精品第二页| 在线不卡中文字幕| 欧美精品 - 色网| 国产一区二区| 日韩女优av电影| 欧洲熟妇的性久久久久久| jizz性欧美2| 亚洲国产精品嫩草影院久久| 在线免费观看a级片| 欧美日韩导航| 一区二区三区日韩在线| 永久免费毛片在线观看| 四虎国产精品免费观看| 日韩视频在线免费| 日韩a级片在线观看| 国产综合激情| 9.1国产丝袜在线观看| 国产又大又粗又爽| 七七婷婷婷婷精品国产| 亚洲a在线播放| 六月婷婷综合网| 久久久久久久综合狠狠综合| 亚洲欧美精品| 欧美videos另类精品| 黑人巨大精品欧美一区免费视频 | 性色av免费观看| 日韩电影免费一区| 91在线观看免费观看| 亚洲xxx在线| 久久综合九色综合97婷婷| 日韩精品大片| 性xxxxfjsxxxxx欧美| 性久久久久久久久| 男女男精品视频站| 视频欧美一区| 亚洲色图五月天| 国产精品嫩草影院俄罗斯| 亚洲欧洲视频| 国产欧美va欧美va香蕉在| 亚洲国产av一区二区| 久久久久久一二三区| 亚洲一区 在线播放| 咪咪网在线视频| 在线不卡欧美精品一区二区三区| 国产在线不卡av| 成人在线一区| 久久久久久久国产精品视频| 中文在线资源天堂| 激情小视频在线观看| 裸体一区二区| 成人免费视频97| 欧美大秀在线观看| 日韩免费一二三区| 日本va欧美va欧美va精品| 亚洲综合在线播放| 国产黄色片在线播放| 亚洲一区成人在线| 免费av不卡在线| 蜜桃国内精品久久久久软件9| 久久久成人的性感天堂| 91丝袜一区二区三区| 粉嫩13p一区二区三区| 亚洲一区三区在线观看| 亚洲最新无码中文字幕久久| 日韩精品一区二区三区四区| 99精品中文字幕| 亚洲高清成人| 国产精品你懂得| 青青草在线视频免费观看| 亚洲一区二区在线免费观看视频| 一区二区三区韩国| 免费看成人哺乳视频网站| 久久理论片午夜琪琪电影网| 国产精品怡红院| 欧美国产精品专区| 国产精品草莓在线免费观看| 欧美亚洲免费在线| 成人日日夜夜| 欧美夫妻性生活| 毛片视频免费播放| 日av在线不卡| 亚洲精品中文字幕乱码三区不卡 | 亚洲美女屁股眼交3| 亚洲一级片免费| 欧美午夜精品一区二区三区电影| 欧美中文字幕在线观看| 熟妇人妻av无码一区二区三区| 亚洲一区二区三区国产| 99国产精品免费视频| 亚洲有吗中文字幕| 成人欧美一区二区三区黑人| 日本中文字幕在线播放| 欧美日本不卡视频| 五月婷婷综合激情网| 美女网站视频久久| 正在播放91九色| 国产精品成人**免费视频| 久久精品国产99国产精品澳门| 国产精品伊人久久| 夜色激情一区二区| 国产免费一区二区三区最新6| 在线成人h网| 久久96国产精品久久99软件| 成人勉费视频| 最近2019中文字幕mv免费看| 国产日产亚洲系列最新| 有坂深雪av一区二区精品| 亚洲成人激情小说| 99精品视频免费观看| 蜜桃精品久久久久久久免费影院| 亚洲深夜视频| 中文国产成人精品久久一| 国产又爽又黄又嫩又猛又粗| 亚洲精品免费看| 亚洲制服丝袜在线播放| 日本不卡的三区四区五区| 一区二区三区四区久久| 亚洲国产高清在线观看| 91成人在线播放| jizz日韩| 日韩精品影音先锋| 色一情一乱一伦| 亚洲欧洲成人av每日更新| 丰满少妇中文字幕| 国产欧美二区| 亚洲三级一区| 理论片一区二区在线| 国产精品永久免费观看| 日韩av激情| 亚洲天堂一区二区三区| av av片在线看| 疯狂欧美牲乱大交777| 亚洲国产精品一区二区久久hs| 国产成人久久精品77777最新版本| 中文字幕无码精品亚洲35| 日韩精品诱惑一区?区三区| 99精品国产高清在线观看| 成人免费无遮挡| 欧美高清视频一区二区| 国产三级视频在线| 欧美mv和日韩mv的网站| 亚洲第一区av| 午夜精品123| 一级片一级片一级片| 91视视频在线直接观看在线看网页在线看| 国产一区二区在线免费播放| 在线观看一区视频| 在线一区亚洲| 九一精品国产| 国产精品一区视频| 日韩精品一级毛片在线播放| 57pao成人永久免费视频| 国产激情视频在线| 夜夜嗨av色一区二区不卡| 日本波多野结衣在线| 欧美猛男男办公室激情| 天堂网免费视频| 香蕉成人伊视频在线观看| www欧美com| 国产精品嫩草影院com| 蜜桃传媒一区二区亚洲av| 国产精品一区二区视频| 国产一伦一伦一伦| 久久高清国产| 日本网站免费在线观看| 欧美精品国产一区| 韩国黄色一级大片| 久久密一区二区三区| 欧美日韩精品免费观看视一区二区| 91精品日本| 91网站免费观看| 日本一区二区中文字幕| 国产精品美女无圣光视频| 欧美xo影院| 2021久久精品国产99国产精品| 国产探花视频在线观看| 欧美大码xxxx| 18+激情视频在线| 美日韩精品免费视频| 日本精品一区二区三区在线播放| 中文字幕欧美国内| av男人的天堂在线| 国产亚洲一区二区精品| 国产午夜精品一区理论片| 亚洲人成77777在线观看网| 日韩精品一二| 亚洲天堂av在线免费| 国产大片在线免费观看| 国产一区二区三区久久精品 | 久久久av网站| av激情在线| 欧美夫妻性生活视频| 高清电影在线免费观看| 久久免费视频观看| 高潮在线视频| 国产99在线|中文| 欧美性片在线观看| 国产欧美一区二区三区在线| 欧美高清xxx| 91在线视频九色| 9l视频自拍九色9l视频成人| 国模精品娜娜一二三区| 妖精视频一区二区三区| 日韩激情视频| 中文精品久久| 男女猛烈激情xx00免费视频| 日韩视频一区| 日韩一级片播放| 精品在线亚洲视频| 农村末发育av片一区二区| www.日韩av| 中文字幕黄色网址| 一区二区三区色| 久久久国产高清| 欧美日韩在线播放三区四区| 国产99视频在线| 日韩精品在线观| 在线看黄色av| 欧美激情日韩图片| 日韩精品99| 91久久国产精品| 人人精品亚洲| 亚洲欧美99| 亚洲美女少妇无套啪啪呻吟| 亚洲激情在线观看视频| 成人午夜短视频| 一区二区三区久久久久| 亚洲女同女同女同女同女同69| 日韩av女优在线观看| 欧美偷拍一区二区| 亚洲精品一区二区三区四区| 国产亚洲精品激情久久| a级片国产精品自在拍在线播放| 69av在线播放| 亚洲最大的免费视频网站| 九九九九精品| 午夜精品毛片| 92看片淫黄大片一级| 黄色精品一二区| 中文字幕5566| 亚洲精品久久7777| 蜜臀尤物一区二区三区直播| 日韩精品自拍偷拍| 高清在线观看av| 97国产在线观看| 国产免费区一区二区三视频免费 | 亚洲AV无码久久精品国产一区| 91蝌蚪porny| 久久久久久久久久久网| 欧美日韩一区三区四区| 香蕉久久国产av一区二区| 久久久精品国产网站| 国产另类xxxxhd高清| 国产精品三区在线| 久久久久国产精品| 五月婷婷深爱五月| 久久综合久久鬼色| 麻豆国产尤物av尤物在线观看 | 国产九九在线观看| 久久综合狠狠综合| 日韩成人在线免费视频| 日韩一区二区在线看片| 日本在线免费看| 国产精品av网站| 亚洲婷婷伊人| 日本www在线视频| 成人激情免费网站| www.色小姐com| 欧美日本在线视频| 第一福利在线| 国产精品99久久久久久www| 网曝91综合精品门事件在线| 欧美精品久久久久久久久久久| 国产真实乱子伦精品视频| 999久久久国产| 欧美性色综合网| 91se在线| 国产精品免费久久久| 精品国产乱码久久久久久果冻传媒| 69堂免费视频| 91麻豆精品一区二区三区| 免费在线观看黄网站| 亚洲国产欧美一区二区三区同亚洲| 黄色av免费在线| 91亚洲人电影| 欧美成人有码| 潘金莲一级淫片aaaaa| 亚洲精品视频一区| 午夜久久久久久噜噜噜噜| 欧美俄罗斯乱妇| 一区二区三区国产好| 国产一二三区在线播放| 成人黄色国产精品网站大全在线免费观看 | 日韩在线播放av| 日韩欧乱色一区二区三区在线| 亚洲一区bb| 国产在线精品免费| 91视频免费在线看| 精品国偷自产国产一区| 国产夫妻在线播放| 欧美一进一出视频| 奇米综合一区二区三区精品视频| 成人黄色短视频| 日韩视频一区二区| sm捆绑调教国产免费网站在线观看| 国产一区二区在线网站| 美女日韩在线中文字幕| 中文字幕第69页| 日韩欧美亚洲国产精品字幕久久久 | 国产丝袜欧美中文另类| 中文人妻熟女乱又乱精品| 久久久精品网站| 国产在线播放精品| 成人羞羞国产免费网站| 国产精品无码永久免费888| 国产美女无遮挡永久免费| 久久久久免费精品国产| 国产99亚洲| 一级淫片在线观看| 午夜精品久久久久久不卡8050| 蜜芽tv福利在线视频| 成人黄在线观看| 亚洲日本免费| 精品伦精品一区二区三区视频密桃 | 欧美激情视频网站| 国产精品嫩草影院在线看| 亚洲免费黄色录像| 激情亚洲一区二区三区四区| 超碰免费97在线观看| 99视频国产精品免费观看| 久久精品综合| 26uuu成人网| 亚洲欧美中文日韩v在线观看| 99综合99| 国产成人精品无码播放| 一区二区三区国产精品| 高清在线观看av| 国产一区国产精品|