自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

爺青回,Canal 1.1.6來(lái)了,幾個(gè)重要特性和bug修復(fù)

數(shù)據(jù)庫(kù) MySQL
這里簡(jiǎn)單介紹了幾個(gè)對(duì)我們生產(chǎn)中比較重要的優(yōu)化和修復(fù),具體更多內(nèi)容大家可以直接去github上看release note。

剛剛在群里看到消息說(shuō),時(shí)隔一年,canal 1.1.6正式release了,趕緊上去看看有什么新特性。

(居然才發(fā)布了6個(gè)小時(shí),前排圍觀)

一、什么是canal

canal [k?'n?l],譯意為水道/管道/溝渠,主要用途是基于 MySQL 數(shù)據(jù)庫(kù)增量日志解析,提供增量數(shù)據(jù) 訂閱 和 消費(fèi)。應(yīng)該是阿里云DTS(Data Transfer Service)的開(kāi)源版本。

如果想了解更多,可以上github上看官方文檔,或者我之前寫(xiě)過(guò)的系列基于canal 1.1.4版本的入門文檔。

二、重要新特性

我們現(xiàn)在生產(chǎn)用的還是1.1.4版本,用得還算穩(wěn)定,沒(méi)有什么特別大的bug。

這次,趁著升級(jí)了兩個(gè)版本,看看1.1.5和1.1.6版本有什么新特性可以值得升級(jí)引入。

1、MQ發(fā)送優(yōu)化

重點(diǎn)優(yōu)化MQ發(fā)送的性能,單topic最高峰值可支持3~8萬(wàn)的rps,接近數(shù)量級(jí)上的性能提升

這是1.1.5中的重要特性優(yōu)化。

為什么canal需要搭配MQ使用,甚至重點(diǎn)優(yōu)化MQ的投遞性能呢?

主要原因是 canal + MQ 可以打造強(qiáng)大的異構(gòu)存儲(chǔ)體系。

canal訂閱binlog后有兩種模式,一種是直接投遞到一種介質(zhì),如mysql,一種是投遞到MQ然后自定義消費(fèi)。

如果采用投遞到MQ的模式,那么我們就可以利用MQ進(jìn)行一份消息多端消費(fèi)(避免重復(fù)拉取binlog對(duì)MySQL造成影響),用于構(gòu)建二級(jí)索引ES或者構(gòu)建緩存Redis等等。

另一方面,投遞mq以后,對(duì)于消息的回溯、監(jiān)控都能提供更好的途徑。

總的來(lái)說(shuō),canal這個(gè)特性優(yōu)化給 canal + MQ 的模式帶來(lái)了更加強(qiáng)大的支持。

2、MQ發(fā)送特性支持

新增rabbitmQ的MQ發(fā)送支持 #2156。

支持不同topic設(shè)置不同的分區(qū)數(shù) #2173。

rocketMQ新增tag屬性的定義 #3438。

參數(shù)配置支持env環(huán)境變量 #3450。

這是1.1.5中的一個(gè)小優(yōu)化,但是我覺(jué)得非常重要。

比如rocketMQ新增tag屬性的定義。實(shí)際上在我們的測(cè)試環(huán)境,就非常需要這個(gè)特性。

我們使用rocketMQ的tag做路由,如果業(yè)務(wù)方自行生產(chǎn)和消費(fèi),可以完全根據(jù)tag進(jìn)行路由區(qū)分。而從canal訂閱的數(shù)據(jù)庫(kù)變更,1.1.4版本無(wú)法直接給消息打tag,業(yè)務(wù)消費(fèi)就無(wú)法通過(guò)tag進(jìn)行路由。

現(xiàn)在這個(gè)特性的優(yōu)化,正好可以解決這個(gè)問(wèn)題。

3、新增Puslar MQ支持

這是1.1.6中的一個(gè)小優(yōu)化,還是非常與時(shí)俱進(jìn)的。

目前的云原生消息隊(duì)列Puslar MQ,憑借存儲(chǔ)和計(jì)算分離的架構(gòu)在云原生體系下如日中天,而canal就在最新版本支持了對(duì)Puslar MQ的投遞,手動(dòng)點(diǎn)贊。

三、重要bug修復(fù)

1、修復(fù)gtid模式下位點(diǎn)持久不更新的問(wèn)題

這是1.1.5中修復(fù)的bug。

GTID又叫全局事務(wù)ID(Global Transaction ID),是一個(gè)已提交事務(wù)的編號(hào),并且是一個(gè)全局唯一的編號(hào)。MySQL5.6版本之后在主從復(fù)制類型上新增了GTID復(fù)制。

為什么要引入這個(gè)東西呢?

  • GTID使用master_auto_position=1代替了基于binlog和position號(hào)的主從復(fù)制搭建方式,更便于主從復(fù)制的搭建。
  • GTID可以知道事務(wù)在最開(kāi)始是在哪個(gè)實(shí)例上提交的。
  • GTID方便實(shí)現(xiàn)主從之間的failover,再也不用不斷地去找position和binlog 了。

為什么我特別關(guān)注到這個(gè)bug的修復(fù)呢?

因?yàn)槲以?020年對(duì)canal 1.1.4進(jìn)行poc的時(shí)候,就發(fā)現(xiàn)這個(gè)bug了,當(dāng)時(shí)還吐槽了一波,233333。

一晃兩年過(guò)去了,沒(méi)想到在1.1.5中已經(jīng)修復(fù)了,手動(dòng)點(diǎn)贊。

2、修復(fù)RDB同步下的關(guān)鍵字引起的同步報(bào)錯(cuò)

這是1.1.6中修復(fù)的bug。

對(duì)于這個(gè)bug,也是有點(diǎn)記憶猶新。

當(dāng)時(shí)在莫干山度假,突然早上八點(diǎn)收到線上警報(bào),發(fā)現(xiàn)數(shù)據(jù)同步出現(xiàn)異常。

好在隨身帶了電腦(程序員出遠(yuǎn)門必備,sigh~),經(jīng)過(guò)排查后發(fā)現(xiàn),就是一個(gè)表結(jié)構(gòu)變更引入的關(guān)鍵字導(dǎo)致了同步異常。

往事不堪回首。。。

四、總結(jié)

這里簡(jiǎn)單介紹了幾個(gè)對(duì)我們生產(chǎn)中比較重要的優(yōu)化和修復(fù),具體更多內(nèi)容大家可以直接去github上看release note。

總的來(lái)說(shuō),1.1.5和1.1.6都做了非常多的bug修復(fù)和特性優(yōu)化,還是非常值得升級(jí)的。

責(zé)任編輯:姜華 來(lái)源: 阿丸筆記
相關(guān)推薦

2020-04-13 17:17:28

MySQL8.0功能

2015-07-29 09:58:03

修復(fù)BUG拒絕

2020-10-21 09:04:53

iOS 14.1iPad OS 14.蘋果

2015-07-29 09:12:15

拒絕修復(fù)bug

2021-08-25 15:35:45

AI 數(shù)據(jù)人工智能

2020-10-14 15:00:38

Python 開(kāi)發(fā)編程語(yǔ)言

2023-08-14 09:59:31

Debian操作系統(tǒng)

2010-02-24 10:06:03

2009-10-15 08:52:42

Windows 7銷售市場(chǎng)

2022-12-05 11:44:49

PrintDebugIceCream

2023-03-16 19:17:57

2018-08-24 06:13:18

IPv6SDNIPv4

2021-01-20 23:28:37

Windows 10Windows微軟

2021-06-11 07:00:45

Windows 10Windows操作系統(tǒng)

2020-09-09 12:44:59

Windows 10微軟Bug

2021-08-09 10:36:50

Windows 11Windows微軟

2022-05-12 16:44:01

惠普BIOS更新漏洞

2022-05-16 08:42:26

Pandasbug

2022-07-21 14:42:33

Windows 11BUG微軟
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)