Ye Qing Hui, Kanal 1.1.6 ist da, mehrere wichtige Funktionen und Fehlerbehebungen

Ich habe gerade die Nachricht in der Gruppe gesehen, dass Canal 1.1.6 nach einem Jahr offiziell veröffentlicht wurde, also beeilen Sie sich und sehen Sie, welche neuen Funktionen verfügbar sind.

Ye Qing Hui, Kanal 1.1.6 ist da, mehrere wichtige Funktionen und Fehlerbehebungen

(Es wurde nur für 6 Stunden veröffentlicht und die erste Reihe sah zu)

1. Was ist ein Kanal?

canal [kə'næl], übersetzt als Wasserweg/Rohr/Graben, wird hauptsächlich für inkrementelle Protokollanalysen basierend auf einer MySQL-Datenbank verwendet und bietet inkrementelles Datenabonnement und -verbrauch. Es sollte die Open-Source-Version von Alibaba Cloud DTS (Data Transfer Service) sein.

Wenn Sie mehr wissen möchten, können Sie zu github gehen, um die offizielle Dokumentation oder die Reihe von Einführungsdokumentationen zu sehen, die ich zuvor basierend auf der Kanalversion 1.1.4 geschrieben habe.

2. Wichtige neue Funktionen

Wir verwenden immer noch Version 1.1.4 für die Produktion, die ziemlich stabil ist und keine größeren Fehler aufweist.

Nutzen Sie diesmal das Upgrade von zwei Versionen und sehen Sie, welche neuen Funktionen in den Versionen 1.1.5 und 1.1.6 es wert sein können, aktualisiert und eingeführt zu werden.

2.1 MQ-Sendeoptimierung

Konzentrieren Sie sich auf die Optimierung der Leistung des MQ-Sendens. Der höchste Spitzenwert eines einzelnen Themas kann 30.000 bis 80.000 U/s unterstützen, was einer Leistungsverbesserung von nahezu einer Größenordnung entspricht.

Dies ist eine wichtige Funktionsoptimierung in 1.1.5.

Warum muss canal mit MQ verwendet werden und sich sogar auf die Optimierung der Lieferleistung von MQ konzentrieren?

Der Hauptgrund ist, dass Canal + MQ ein leistungsstarkes heterogenes Speichersystem schaffen kann.

Ye Qing Hui, Kanal 1.1.6 ist da, mehrere wichtige Funktionen und Fehlerbehebungen

Nachdem canal binlog abonniert hat, gibt es zwei Modi, einer ist die direkte Lieferung an ein Medium wie mysql, der andere die Lieferung an MQ und dann die Anpassung des Verbrauchs.

Wenn die Übermittlungsart an MQ übernommen wird, können wir MQ für den Multi-Terminal-Verbrauch einer Nachricht verwenden (um die Auswirkungen des wiederholten Binlog-Pulls auf MySQL zu vermeiden), die zum Erstellen von sekundären Index-ES oder zum Erstellen von Cache-Redis verwendet werden kann. usw.

Andererseits kann nach der Lieferung von mq eine bessere Möglichkeit zur Nachrichtenrückverfolgung und -überwachung bereitgestellt werden.

Im Allgemeinen bringt die Kanalfunktionsoptimierung eine stärkere Unterstützung für den Kanal + MQ-Modus.

2.2 Unterstützung der MQ-Sendefunktion

Unterstützung für das MQ-Senden von rabbitmQ hinzugefügt #2156
Unterstützt das Festlegen einer unterschiedlichen Anzahl von Partitionen für verschiedene Themen #2173
rocketMQ fügt die Definition des Tag-Attributs hinzu #3438 Die
Parameterkonfiguration unterstützt Umgebungsvariablen #3450

这是1.1.5中的一个小优化,但是我觉得非常重要。

比如rocketMQ新增tag属性的定义。实际上在我们的测试环境,就非常需要这个特性。

我们使用rocketMQ的tag做路由,如果业务方自行生产和消费,可以完全根据tag进行路由区分。而从canal订阅的数据库变更,1.1.4版本无法直接给消息打tag,业务消费就无法通过tag进行路由。

现在这个特性的优化,正好可以解决这个问题。

2.3 新增Puslar MQ支持

这是1.1.6中的一个小优化,还是非常与时俱进的。

目前的云原生消息队列Puslar MQ,凭借存储和计算分离的架构在云原生体系下如日中天,而canal就在最新版本支持了对Puslar MQ的投递,手动点赞。

3、重要bug修复

3.1 修复gtid模式下位点持久不更新的问题

这是1.1.5中修复的bug。

GTID又叫全局事务ID(Global Transaction ID),是一个已提交事务的编号,并且是一个全局唯一的编号。MySQL5.6版本之后在主从复制类型上新增了GTID复制。

为什么要引入这个东西呢?

  • GTID使用master_auto_position=1代替了基于binlog和position号的主从复制搭建方式,更便于主从复制的搭建。
  • GTID可以知道事务在最开始是在哪个实例上提交的。
  • GTID方便实现主从之间的failover,再也不用不断地去找position和binlog 了。

为什么我特别关注到这个bug的修复呢?

因为我在2020年对canal 1.1.4进行poc的时候,就发现这个bug了,当时还吐槽了一波,233333。

Ye Qing Hui, Kanal 1.1.6 ist da, mehrere wichtige Funktionen und Fehlerbehebungen

一晃两年过去了,没想到在1.1.5中已经修复了,手动点赞。

3.2 修复RDB同步下的关键字引起的同步报错

这是1.1.6中修复的bug。

对于这个bug,也是有点记忆犹新。

当时在莫干山度假,突然早上八点收到线上警报,发现数据同步出现异常。

好在随身带了电脑(程序员出远门必备,sigh~),经过排查后发现,就是一个表结构变更引入的关键字导致了同步异常。

Vergiss die Vergangenheit. . .

4. Zusammenfassung

Hier ist eine kurze Einführung in mehrere Optimierungen und Korrekturen, die für unsere Produktion wichtig sind. Für weitere Details können Sie direkt zu github gehen, um die Versionshinweise zu sehen.

Im Allgemeinen haben 1.1.5 und 1.1.6 viele Fehlerkorrekturen und Funktionsoptimierungen vorgenommen, und sie sind immer noch ein Upgrade wert.

Ich habe alles bis zum Ende gesehen, Originalität ist nicht einfach, bitte folgen und liken~

Ordnen Sie die Wissensfragmente neu und erstellen Sie eine Java-Wissenslandkarte: github.com/saigu/JavaK… (Es ist sehr praktisch, historische Artikel zu überprüfen)

Ich denke du magst

Origin juejin.im/post/7102229218435530765
Empfohlen
Rangfolge