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

中文字幕一区二区三区有限公司 | aaa一区二区三区| 亚洲精品网址| 日韩av在线网站| 黄色aaa级片| 超碰中文在线| 久久久91精品国产一区二区精品| 久久久噜噜噜久久| 91精品人妻一区二区三区蜜桃欧美| 草美女在线观看| 日本一区二区三区视频视频| 亚洲综合av影视| wwwwww国产| 欧美激情视频一区二区三区在线播放 | 亚洲成人av在线| 中文久久久久久| wwwww在线观看免费视频| 国产大陆a不卡| 国产精品久久久| 日本一级片免费看| 午夜精品久久| 亚洲成人激情在线| 亚洲欧美日韩综合网| 美女的胸无遮挡在线观看 | 成人做爰www看视频软件| 久久99亚洲网美利坚合众国| 中文一区二区在线观看| 老牛影视免费一区二区| 午夜久久久久久久久久| 久久精品免费看| 欧美尤物巨大精品爽| 久久国产在线视频| 午夜欧美在线| 日日骚久久av| 免费网站在线高清观看| 免费看久久久| 亚洲国产精品久久| 男人女人拔萝卜视频| 天堂综合在线播放| 欧美视频一区二区三区| 成人精品视频一区二区| 在线黄色的网站| 黑人巨大精品欧美一区二区一视频| 色吧亚洲视频| 看电影就来5566av视频在线播放| 男女男精品网站| 国产97在线播放| 国产91精品一区| 国产精品人人爽人人做我的可爱 | 在线观看的网站你懂的| 国产精品你懂的| 亚洲一区二区三区在线观看视频| 国精产品乱码一区一区三区四区| 久久久久网站| 国产不卡一区二区在线播放| 黄色片中文字幕| 欧美91精品| 欧美激情国产精品| 日本午夜小视频| 亚洲黄色影院| 欧美一级淫片aaaaaaa视频| 日本中文字幕在线免费观看| 国产精品久久久久久久免费软件 | 日韩欧美久久久| av在线免费观看不卡| 精品国产18久久久久久二百| 欧美一区二区播放| 久久久久99人妻一区二区三区| 香蕉成人影院| 精品久久香蕉国产线看观看亚洲| 伊人婷婷久久| 在线中文免费视频| 午夜精品久久久久久久蜜桃app| 制服国产精品| 午夜羞羞小视频在线观看| 一区二区三区不卡在线观看| 国产二区视频在线| 综合在线影院| 欧美高清视频一二三区 | 亚洲一区区二区| 国产精品www网站| 国产色片在线观看| jizz一区二区| 偷拍视频一区二区| 91精品久久久| 色综合激情久久| 五月激情婷婷在线| 国产亚洲一区二区手机在线观看| 亚洲国产综合视频在线观看| 鲁一鲁一鲁一鲁一色| 日本成人伦理电影| 日韩三级在线免费观看| 天天操精品视频| 极品尤物一区| 日韩中文在线不卡| 国产午夜精品无码| 免费一级片91| 国产一区国产精品| 自拍视频在线网| 亚洲高清久久久| 天堂8在线天堂资源bt| 性xxxfreexxxx性欧美| 欧美性生活大片免费观看网址| 免费成人午夜视频| 在线观看的黄色| 91精品在线观看入口| 天堂久久久久久| 亚洲精品久久| 国产精品一区二区三区成人| 日批免费在线观看| 国产精品白丝在线| 国产中文字幕在线免费观看| 99精品国产九九国产精品| 91精品国产综合久久久蜜臀图片| 欧美大尺度做爰床戏| 欧美性生活一级| 日韩精品一区二区三区第95| 欧美交换国产一区内射| 青青青爽久久午夜综合久久午夜| 91精品国产综合久久久久久蜜臀 | 欧美变态凌虐bdsm| 毛片久久久久久| 一区二区三区四区五区精品视频 | 激情视频极品美女日韩| 日韩视频免费观看| 亚洲国产无线乱码在线观看| 94色蜜桃网一区二区三区| 成人午夜免费剧场| 色综合一区二区日本韩国亚洲 | 国产精品美女午夜av| 亚洲色大成网站www| 亚洲一区二区在线免费观看视频| 免费超爽大片黄| 成人性教育av免费网址| 精品国产一区二区精华| 天天躁日日躁aaaa视频| 国产精品一卡| 国产视频一区二区不卡| 免费在线观看的电影网站| 9191久久久久久久久久久| 精品少妇一区二区三区密爱| 麻豆国产91在线播放| 99在线首页视频| a毛片在线观看| 69p69国产精品| 中文字幕乱码在线| 欧美激情理论| 国产欧美精品日韩| 欧美人xxx| 都市激情亚洲色图| 182在线视频| 午夜综合激情| 欧美日韩日本网| 欧美aaa视频| 精品久久久久久久久久久久久久久久久 | 免费看一级大黄情大片| 国产精品久久久久av蜜臀| 久久久久久久网站| 熟妇人妻av无码一区二区三区| 国产精品美女www爽爽爽| 国产三级三级看三级| 久久人人99| 亚洲va欧美va国产综合久久| 性欧美1819sex性高清大胸| 亚洲第一黄色网| 久艹在线观看视频| 国产精品一区二区免费不卡| 男女激情免费视频| 日韩大尺度在线观看| 日本欧美一二三区| 日本中文在线观看| 日韩欧美电影一区| 伊人久久久久久久久久久久久久| 西西人体一区二区| 新呦u视频一区二区| 一级欧美视频| 97色伦亚洲国产| 成人午夜影视| 日韩手机在线导航| 国产成人精品网| 中文字幕一区二区三区不卡| 91亚洲一线产区二线产区 | 亚洲电影免费| 精品三级久久久| 78m国产成人精品视频| 东凛在线观看| 欧美不卡一区二区三区| 校园春色 亚洲| 91视频在线看| 六月丁香婷婷激情| 久久精品国产www456c0m| 99re国产在线播放| 粉嫩一区二区三区| 欧美另类第一页| 国模精品一区二区| 色综合久久中文字幕综合网| 国产精品嫩草影院俄罗斯| 91亚洲国产成人精品一区二区三| 91专区在线观看| 欧美黄色大片在线观看| 久久99精品久久久久久秒播放器| 草草在线观看| 久久精品人人做人人爽| 外国精品视频在线观看| 在线观看日韩av先锋影音电影院| 少妇人妻好深好紧精品无码| 视频一区欧美日韩| 免费高清一区二区三区| 久久国产亚洲| 欧美一区二区三区四区在线观看地址 | 欧美军人男男激情gay| 99精品国产高清一区二区| 亚洲第一会所| 2020国产精品视频| 中文字幕在线日韩| 久久精品a一级国产免视看成人| 在线观看91视频| 99国产精品无码| 91久色porny| 人妻换人妻a片爽麻豆| 国产在线精品一区在线观看麻豆| 欧美极品少妇无套实战| 日韩影视在线观看| 99一区二区三区| 国产视频一区二区在线播放| 欧美大荫蒂xxx| 黄在线免费观看| 综合激情国产一区| 免费黄网站在线观看| 亚洲第一页在线| 国产在线一级片| 日韩欧美在线一区| www.中文字幕在线观看| 亚洲成人tv网| 国产一级做a爰片在线看免费| 久久天堂av综合合色蜜桃网| 精品久久久久一区二区| 国产sm精品调教视频网站| 香蕉视频色在线观看| 韩国三级在线一区| 亚洲黄色av片| 国产美女精品在线| www.久久com| 日本一不卡视频| 日本a√在线观看| 久久精品99国产精品| 亚洲综合色在线观看| 老司机午夜精品| 国产福利在线免费| 国产在线麻豆精品观看| 性生活一级大片| 成人性色生活片免费看爆迷你毛片| 青青在线免费观看视频| 首页国产欧美久久| 日日噜噜夜夜狠狠| 国产精品久久久久久久免费软件 | 69堂国产成人免费视频| 国产又粗又长又大视频| 91麻豆精品国产91久久久资源速度 | 99热超碰在线| 99re热这里只有精品免费视频| 人人爽人人爽av| 国产伦理精品不卡| 久久久久国产免费| 91亚洲精华国产精华精华液| 日本中文字幕在线不卡| 成人三级在线视频| 亚洲自拍偷拍一区二区| 成人久久18免费网站麻豆| 色婷婷精品久久二区二区密| 91在线观看视频| 视频免费在线观看| 久久久久久久精| 免费一级黄色录像| 亚洲另类中文字| 日本五十路女优| 欧美在线观看一区二区| 国产特黄一级片| 欧美老人xxxx18| 亚洲经典一区二区三区| 亚洲跨种族黑人xxx| 亚洲图片88| 国a精品视频大全| 国产精品99| 国产精品国产三级欧美二区 | 日韩午夜在线观看| 天堂中文在线看| 搡老女人一区二区三区视频tv| 国产黄在线看| 欧美另类在线播放| 日韩成人av电影| 成人综合电影| 日韩欧美视频| 国产免费黄色小视频| 精品在线播放免费| 污污的视频免费观看| 久草这里只有精品视频| 亚洲图片综合网| 国产精品久久久久久福利一牛影视| 一级片黄色录像| 亚洲成人精品一区二区| 国产精品久久久久久免费播放| 3atv一区二区三区| 飘雪影视在线观看免费观看 | 在线观看一区二区精品视频| 国产草草影院ccyycom| 亚洲视频在线观看视频| 激情av在线| 亚洲tv在线观看| 成人av国产| 免费高清在线观看免费| 成人免费黄色在线| 欧洲第一无人区观看| 色综合天天做天天爱| 欧美综合视频在线| 美女少妇精品视频| 国产精品xxx| 成人看片视频| 久久精品亚洲人成影院| 五月婷婷深爱五月| 久久综合999| 中文在线观看免费网站| 色悠久久久久综合欧美99| 最新国产中文字幕| 国产亚洲精品激情久久| 在线视频cao| 狠狠色综合色区| 狠狠88综合久久久久综合网| 一级黄色免费毛片| 亚洲色图制服丝袜| 国产又黄又粗又硬| 日韩一区二区精品视频| 2020国产在线| 国产精品久久久久久久7电影| 国产亚洲高清一区| 久久免费视频2| 老司机精品视频一区二区三区| 欧美一级片黄色| 亚洲国产精品久久一线不卡| 99久久国产免费| 久久最新资源网| 欧美精品影院| 国产精品国产三级国产专区51| 视频一区视频二区在线观看| 偷拍女澡堂一区二区三区| 欧美天堂在线观看| 无码国产精品一区二区色情男同 | ass极品国模人体欣赏| 日本韩国欧美一区| 国产视频第一页在线观看| 国产mv免费观看入口亚洲| 中文字幕区一区二区三| 日韩aⅴ视频一区二区三区| 鲁大师成人一区二区三区| 少妇欧美激情一区二区三区| 国产欧美精品一区二区色综合 | 精品麻豆一区二区三区| 91在线视频成人| 国产精品xvideos88| 午夜剧场免费看| 亚洲卡通欧美制服中文| 国产1区在线观看| 5278欧美一区二区三区| 日韩中文字幕视频网| 久草免费福利在线| 99精品久久只有精品| 草莓视频18免费观看| 日韩一区二区福利| 加勒比色老久久爱综合网| 国产极品美女高潮无套久久久| 成人av午夜电影| 久久久黄色大片| 久久久国产精品视频| 粉嫩久久久久久久极品| 不卡av免费在线| 2020日本不卡一区二区视频| 亚洲av无码不卡| 欧美床上激情在线观看| 韩国三级大全久久网站| 老司机av福利| eeuss影院一区二区三区 | 日韩电影免费网站| 波多野结衣三级视频| 一区二区三区蜜桃| 日韩av成人| 国产成人精品av在线| 91精品秘密在线观看| 欧美污在线观看| 亚洲精选一二三| 免费黄色片在线观看| www.久久艹| 蜜桃av一区二区三区电影| 精品无码人妻一区二区三区品| 精品免费日韩av| 99精品国自产在线| 免费毛片网站在线观看| 中文字幕综合网| 精品久久久久一区二区三区| 91影院未满十八岁禁止入内| 日韩精品每日更新|