国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

基于Canal+kafka監(jiān)聽(tīng)數(shù)據(jù)庫(kù)變化的最佳實(shí)踐

這篇具有很好參考價(jià)值的文章主要介紹了基于Canal+kafka監(jiān)聽(tīng)數(shù)據(jù)庫(kù)變化的最佳實(shí)踐。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

1、前言

??????? 工作中,我們很多時(shí)候需要根據(jù)某些狀態(tài)的變化更新另一個(gè)業(yè)務(wù)的邏輯,比如訂單的生成,成交等,需要更新或者通知其他的業(yè)務(wù)。我們通常的操作通過(guò)業(yè)務(wù)埋點(diǎn)、接口的調(diào)用或者中間件完成。

????????但是狀態(tài)變化的入口比較多的時(shí)候,就很容易漏掉某些地方。代碼維護(hù)起來(lái)也比較麻煩。今天介紹阿里出品的 【canal】中間件完成數(shù)據(jù)庫(kù)字段的監(jiān)聽(tīng)。

2、canal的簡(jiǎn)單介紹

??????? canal詳見(jiàn)介紹件官網(wǎng):https://github.com/alibaba/canal

基于Canal+kafka監(jiān)聽(tīng)數(shù)據(jù)庫(kù)變化的最佳實(shí)踐

?

2.1 家族成員:

基于Canal+kafka監(jiān)聽(tīng)數(shù)據(jù)庫(kù)變化的最佳實(shí)踐

【canal.adapter】:客戶端落地的適配以及功能

??????基于Canal+kafka監(jiān)聽(tīng)數(shù)據(jù)庫(kù)變化的最佳實(shí)踐

?【canal.admin】:提供WebUI的管理界面

基于Canal+kafka監(jiān)聽(tīng)數(shù)據(jù)庫(kù)變化的最佳實(shí)踐

?【canal.deployer】:canal服務(wù)

?【canal.example】:客戶端提供的demo

2.2 工作原理

基于Canal+kafka監(jiān)聽(tīng)數(shù)據(jù)庫(kù)變化的最佳實(shí)踐

?3、 實(shí)踐目標(biāo)

??????? 使用canal監(jiān)控mysql數(shù)據(jù)的變化,將變化的數(shù)據(jù)推送到kafka,并使用canal-admin動(dòng)態(tài)管理需要監(jiān)控的數(shù)據(jù)庫(kù)表。

?4、工具準(zhǔn)備

基于Canal+kafka監(jiān)聽(tīng)數(shù)據(jù)庫(kù)變化的最佳實(shí)踐

其中kafka是依賴zookeeper的,所以也需要zookeeper。

5、配置并啟動(dòng)kafka

Kafka QuickStart

5.1 修改配置

vim config/server.properties

換成自己的IP

基于Canal+kafka監(jiān)聽(tīng)數(shù)據(jù)庫(kù)變化的最佳實(shí)踐

替換成自己zookeeper的地址

基于Canal+kafka監(jiān)聽(tīng)數(shù)據(jù)庫(kù)變化的最佳實(shí)踐

?5.2 啟動(dòng)server

  • 啟動(dòng)zookeeper腳本

# bin/zkServer.sh start

  • 啟動(dòng)kafka腳本

# bin/kafka-server-start.sh -daemon config/server.properties &

  • ?查看是否啟動(dòng)成功腳本

# jps -ml

?基于Canal+kafka監(jiān)聽(tīng)數(shù)據(jù)庫(kù)變化的最佳實(shí)踐

此時(shí)kafka啟動(dòng)成功。

5.3 注意事項(xiàng)

值得注意的是官方文檔中查看topic的命令,

# bin/kafka-topics.sh --list --zookeeper 192.168.1.110:2181

在心的kafka版本中已經(jīng)改變,可移步kafka官方文檔: Apache Kafka

新版本中使用bootstrap-server,如下

# bin/kafka-topics.sh --list --bootstrap-server localhost:9092 

6、啟動(dòng)canal-admin

6.1 修改配置

改成對(duì)應(yīng)的ip

基于Canal+kafka監(jiān)聽(tīng)數(shù)據(jù)庫(kù)變化的最佳實(shí)踐

?6.2 執(zhí)行 conf/canal.manage.sql

???????? 該腳本是canal-admin的管理腳本。

?6.3 啟動(dòng)canal-admin

sh bin/startup.sh

?6.4 查看啟動(dòng)狀態(tài)

基于Canal+kafka監(jiān)聽(tīng)數(shù)據(jù)庫(kù)變化的最佳實(shí)踐

?6.5 訪問(wèn)頁(yè)面

此時(shí)代表canal-admin已經(jīng)啟動(dòng)成功,可以通過(guò) http://127.0.0.1:8089/ 訪問(wèn),

默認(rèn)密碼:admin/123456

基于Canal+kafka監(jiān)聽(tīng)數(shù)據(jù)庫(kù)變化的最佳實(shí)踐

7、啟動(dòng)canal-server

7.1 修改配置腳本

# vim conf/canal_local.properties

換成canal-admin的IP

基于Canal+kafka監(jiān)聽(tīng)數(shù)據(jù)庫(kù)變化的最佳實(shí)踐

7.2 啟動(dòng)服務(wù) 指定local

# sh bin/startup.sh local

7.3 查詢啟動(dòng)狀態(tài)

基于Canal+kafka監(jiān)聽(tīng)數(shù)據(jù)庫(kù)變化的最佳實(shí)踐

8、管理平臺(tái)配置

8.1 查看canal服務(wù)的狀態(tài)

基于Canal+kafka監(jiān)聽(tīng)數(shù)據(jù)庫(kù)變化的最佳實(shí)踐

?8.2 配置實(shí)例

基于Canal+kafka監(jiān)聽(tīng)數(shù)據(jù)庫(kù)變化的最佳實(shí)踐

?修改監(jiān)聽(tīng)的數(shù)據(jù)庫(kù)信息:

canal.instance.master.address=192.168.88.111:3306

canal.instance.dbUsername=***
canal.instance.dbPassword=***

#默認(rèn)監(jiān)聽(tīng)全庫(kù)

canal.instance.filter.regex=test.test_user

#配置不可訪問(wèn)的庫(kù)表

canal.instance.filter.black.regex=

#配置mq的主題/路由

canal.mq.topic=example

?保存即可。

8.3 啟動(dòng)實(shí)例

基于Canal+kafka監(jiān)聽(tīng)數(shù)據(jù)庫(kù)變化的最佳實(shí)踐

9、編寫(xiě)客戶端監(jiān)聽(tīng)kafka的客戶端

@Test
public void test01(){
	// 修改打印日志的級(jí)別,不然會(huì)不停的打印debug日志,影響閱讀
	LoggerContext loggerContext = (LoggerContext) LoggerFactory.getILoggerFactory();
	Logger root = loggerContext.getLogger("root");
	root.setLevel(Level.INFO);

	//設(shè)置消費(fèi)者屬性
	Properties properties = new Properties();
	properties.put("bootstrap.servers","192.168.88.111:9092");
	//反序列化器,與生產(chǎn)者的序列化器相對(duì)應(yīng)
	properties.put("key.deserializer", StringDeserializer.class);
	properties.put("value.deserializer", StringDeserializer.class);
	//設(shè)置消費(fèi)者的消費(fèi)者群組
	properties.put(ConsumerConfig.GROUP_ID_CONFIG,"example");
	// properties.put(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG, "earliest"); // 默認(rèn)值是 lastest
	KafkaConsumer<String,String> consumer = new KafkaConsumer<String, String>(properties);
	try {
		//消費(fèi)者訂閱主題(可以多個(gè),支持正則表達(dá)式,進(jìn)行模糊匹配)
		consumer.subscribe(Collections.singletonList("example"));
		System.out.println("-------------------------消費(fèi)端準(zhǔn)備就緒,等待消息接受------------------------------------");
		//kafka消費(fèi)者是通過(guò)拉取的方式獲得服務(wù)端消息
		while(true){
			//循環(huán)調(diào)用poll方法,獲取數(shù)據(jù)。
			ConsumerRecords<String, String> records = consumer.poll(Duration.ofMillis(1000));
			for(ConsumerRecord<String, String> record:records){
				String topic = record.topic();
				String value = record.value();
				if (StringUtils.isNotEmpty(value)) {
					System.out.println(String.format("topic:%s;" + "value:%s", topic,value));
				}
			}
		}
	} finally {
		consumer.close();
	}
}

?10、驗(yàn)證

修改數(shù)據(jù)庫(kù)字段,可以接收到修改的信息

基于Canal+kafka監(jiān)聽(tīng)數(shù)據(jù)庫(kù)變化的最佳實(shí)踐文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-403225.html

到了這里,關(guān)于基于Canal+kafka監(jiān)聽(tīng)數(shù)據(jù)庫(kù)變化的最佳實(shí)踐的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Oracle運(yùn)維(數(shù)據(jù)庫(kù)、監(jiān)聽(tīng)、重啟)

    shutdown有四個(gè)參數(shù),四個(gè)參數(shù)的含義如下: Normal 需要等待所有的用戶斷開(kāi)連接 Immediate 等待用戶完成當(dāng)前的語(yǔ)句 Transactional 等待用戶完成當(dāng)前的事務(wù) Abort 不做任何等待,直接關(guān)閉數(shù)據(jù)庫(kù) normal需要在所有連接用戶斷開(kāi)后才執(zhí)行關(guān)閉數(shù)據(jù)庫(kù)任務(wù),所以有的時(shí)候看起來(lái)好象命令沒(méi)

    2024年02月06日
    瀏覽(90)
  • 數(shù)據(jù)庫(kù)監(jiān)聽(tīng)器停止與啟動(dòng)

    切換至安裝oracle數(shù)據(jù)庫(kù)的那個(gè)用戶,一般為oracle(在root下是安裝或是啟動(dòng)不了oracle的); # su oracle 然后啟動(dòng)監(jiān)聽(tīng)器 # lsnrctl start 會(huì)看到啟動(dòng)成功的界面; 停止監(jiān)聽(tīng)器命令. lsnrctl stop 可以修改oracle的ora文件,對(duì)數(shù)據(jù)庫(kù)進(jìn)行配置,在opt/oracle/product/9.2.0/network/admin 目錄中,修改相應(yīng)的ora文件即

    2024年02月07日
    瀏覽(21)
  • Java 實(shí)現(xiàn)實(shí)時(shí)監(jiān)聽(tīng)MySQL數(shù)據(jù)庫(kù)變更MySQLBinListener

    Java 實(shí)現(xiàn)實(shí)時(shí)監(jiān)聽(tīng)MySQL數(shù)據(jù)庫(kù)變更MySQLBinListener

    目錄 1、導(dǎo)出需要的類和接口 2、 定義?MySQLBinlogListener類 3、私有方法,啟動(dòng)重連定時(shí)器 4、完整代碼 ? 編寫(xiě)一個(gè)MySQL數(shù)據(jù)庫(kù)實(shí)時(shí)變更的監(jiān)聽(tīng)器。 為什么要編寫(xiě)這個(gè)一個(gè)監(jiān)聽(tīng)器:為了實(shí)時(shí)監(jiān)測(cè)和響應(yīng)MySQL數(shù)據(jù)庫(kù)中的變更事件 實(shí)時(shí)數(shù)據(jù)同步:通過(guò)監(jiān)聽(tīng)MySQL Binlog,可以捕獲數(shù)據(jù)庫(kù)的

    2024年02月16日
    瀏覽(18)
  • Linux下Oracle的數(shù)據(jù)庫(kù)和監(jiān)聽(tīng)啟動(dòng)關(guān)閉命令

    Linux下Oracle的數(shù)據(jù)庫(kù)和監(jiān)聽(tīng)啟動(dòng)關(guān)閉命令

    sqlplus /nolog conn /as sysdba connect sys/123456 as sysdba; (123456為用戶密碼) startup startup命令它有三種情況: 第一種:不帶參數(shù),啟動(dòng)數(shù)據(jù)庫(kù)實(shí)例并打開(kāi)數(shù)據(jù)庫(kù),以便用戶使用數(shù)據(jù)庫(kù),在多數(shù)情況下,使用這種方式! 第二種:帶nomount參數(shù),只啟動(dòng)數(shù)據(jù)庫(kù)實(shí)例,但不打開(kāi)數(shù)據(jù)庫(kù),在你希

    2024年02月04日
    瀏覽(102)
  • 【W(wǎng)eb開(kāi)發(fā) | Django】數(shù)據(jù)庫(kù)分流之道:探索Django多數(shù)據(jù)庫(kù)路由最佳實(shí)踐

    【W(wǎng)eb開(kāi)發(fā) | Django】數(shù)據(jù)庫(kù)分流之道:探索Django多數(shù)據(jù)庫(kù)路由最佳實(shí)踐

    ???♂? 個(gè)人主頁(yè): @AI_magician ??主頁(yè)地址: 作者簡(jiǎn)介:CSDN內(nèi)容合伙人,全棧領(lǐng)域優(yōu)質(zhì)創(chuàng)作者。 ?????景愿:旨在于能和更多的熱愛(ài)計(jì)算機(jī)的伙伴一起成長(zhǎng)!!????? ???♂?聲明:本人目前大學(xué)就讀于大二,研究興趣方向人工智能硬件(雖然硬件還沒(méi)開(kāi)始玩,但一直

    2024年02月07日
    瀏覽(196)
  • SpringBoot整合Canal+RabbitMQ監(jiān)聽(tīng)數(shù)據(jù)變更

    需求 步驟 環(huán)境搭建 整合SpringBoot Canal實(shí)現(xiàn)客戶端 Canal整合RabbitMQ SpringBoot整合RabbitMQ ? 我想要在SpringBoot中采用一種與業(yè)務(wù)代碼解耦合的方式,來(lái)實(shí)現(xiàn)數(shù)據(jù)的變更記錄,記錄的內(nèi)容是新數(shù)據(jù),如果是更新操作還得有舊數(shù)據(jù)內(nèi)容。 經(jīng)過(guò)調(diào)研發(fā)現(xiàn),使用Canal來(lái)監(jiān)聽(tīng)MySQL的binlog變化可

    2024年02月11日
    瀏覽(16)
  • docker安裝達(dá)夢(mèng)數(shù)據(jù)庫(kù)最佳實(shí)踐

    下載地址:產(chǎn)品下載 | 達(dá)夢(mèng)數(shù)據(jù)庫(kù) 安裝博客地址:安裝前準(zhǔn)備 | 達(dá)夢(mèng)技術(shù)文檔 到官網(wǎng)docker部署那一章節(jié),下載鏡像tar包,上傳到服務(wù)器上后,運(yùn)行下面的命令 docker安裝啟動(dòng)腳本: 說(shuō)明: CASE_SENSITIVE=0 設(shè)置大小寫(xiě)不敏感 LENGTH_IN_CHAR=1 VARCHAR 類型對(duì)象的長(zhǎng)度以字符為單位 UNICO

    2023年04月16日
    瀏覽(46)
  • openGauss學(xué)習(xí)筆記-200 openGauss 數(shù)據(jù)庫(kù)運(yùn)維-常見(jiàn)故障定位案例-表文件大小無(wú)變化

    openGauss學(xué)習(xí)筆記-200 openGauss 數(shù)據(jù)庫(kù)運(yùn)維-常見(jiàn)故障定位案例-表文件大小無(wú)變化

    200.1 VACUUM FULL一張表后,表文件大小無(wú)變化 200.1.1 問(wèn)題現(xiàn)象 使用VACUUM FULL命令對(duì)一張表進(jìn)行清理,清理完成后表大小和清理前一樣大。 200.1.2 原因分析 假定該表的名稱為table_name,對(duì)于該現(xiàn)象可能有以下兩種原因: table_name表本身沒(méi)有delete過(guò)數(shù)據(jù),使用VACUUM FULL table_name后無(wú)需清

    2024年01月18日
    瀏覽(25)
  • SQLAlchemy ORM指南:簡(jiǎn)化數(shù)據(jù)庫(kù)操作的最佳實(shí)踐

    SQLAlchemy ORM指南:簡(jiǎn)化數(shù)據(jù)庫(kù)操作的最佳實(shí)踐

    背景: ? SQLAlchemy是一個(gè)數(shù)據(jù)庫(kù)的ORM框架,讓我們操作數(shù)據(jù)庫(kù)的時(shí)候不要再用SQL語(yǔ)句了,跟直接操作模型一樣。操作十分便捷,其實(shí)SQLAlchemy應(yīng)該是在Flask和Django應(yīng)用的特別多,而且在flask中已經(jīng)集成了flask_sqlalchemy ,好像是 SQLAlchemy的作者和 Flask是同一個(gè),背景了解到這里就可

    2024年01月20日
    瀏覽(57)
  • SpringCloud 整合 Canal+RabbitMQ+Redis 實(shí)現(xiàn)數(shù)據(jù)監(jiān)聽(tīng)

    SpringCloud 整合 Canal+RabbitMQ+Redis 實(shí)現(xiàn)數(shù)據(jù)監(jiān)聽(tīng)

    Canal 指的是阿里巴巴開(kāi)源的數(shù)據(jù)同步工具,用于數(shù)據(jù)庫(kù)的實(shí)時(shí)增量數(shù)據(jù)訂閱和消費(fèi)。它可以針對(duì) MySQL、MariaDB、Percona、阿里云RDS、Gtid模式下的異構(gòu)數(shù)據(jù)同步等情況進(jìn)行實(shí)時(shí)增量數(shù)據(jù)同步。 當(dāng)前的 canal 支持源端 MySQL 版本包括 5.1.x , 5.5.x , 5.6.x , 5.7.x , 8.0.x Canal是如何同步數(shù)據(jù)庫(kù)

    2024年02月03日
    瀏覽(19)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包