基于 TDMQ for Apache Pulsar 的跨地域复制实践

导语

自2024年9月6日起,TDMQ Pulsar 版专业集群支持消息、元数据两级跨地域复制功能,消息级复制解决用户全球地域的数据统一归档问题,元数据级复制提供解决用户核心业务跨地域容灾的场景。

用户在跨地域场景遇到的疑问和挑战

在跨地域相关场景下,通常有两大类原始需求:

跨地域容灾

TDMQ Pulsar 版目前支持在同一地域下进行跨可用区部署,这种部署方式能够在一定程度上提高系统的可用性和容灾能力。

在这里插入图片描述

如上图所示,在广州地域内的3个可用区部署了 TDMQ Pulsar 版集群。如果广州的某个可用区无法使用,系统仍然可以依靠其他两个可用区继续提供服务。

然而,金融级客户通常需要更高的容灾标准,希望能够通过跨地域部署来实现跨地域的容灾,以确保在极端情况下,比如发生自然灾害或网络故障时,也能保证业务的连续性和数据的安全性。

在这里插入图片描述

如上图展示的架构,用户业务可以在主地域进行日常的生产和消费,同时在其他地域进行数据备份和灾备。这种架构能够实现当一个数据中心发生故障时,迅速切换到另一个地域的数据中心,确保业务不中断,以保护数据的完整性和可用性。

全球数据归档

这类需求一般来源于国际站用户,例如某客户希望实现流数据的全球跨地域传输和统一数据归档 。具体场景如下图:

在这里插入图片描述

不同地域的生产者各自在本地生成数据,并将这些数据发送到对应地域的 TDMQ Pulsar 版集群,这些集群将接收到的数据传输到数据中心的 TDMQ Pulsar 版集群,数据中心收集来自所有地域的数据后,将其聚合在同一个 Topic 中,之后消费者可以从聚合后的数据中读取和处理信息,实现数据的统一归档。

TDMQ Pulsar 版跨地域复制功能介绍

基于以上两类用户需求,TDMQ Pulsar 版提供了跨地域复制的解决方案。

TDMQ Pulsar 专业版基于 GEO Replication 方案,实现跨地域的集群复制,专业集群支持两种类型的复制:

  • 元数据级:用于满足用户核心业务跨地域容灾需求,元数据级复制集群的命名空间、Topic、订阅、角色等内容。

  • 消息级:解决用户全球地域的数据统一归档问题,消息级复制消息内容、消息顺序、标签、消息类型等。

在这里插入图片描述

元数据级复制

元数据级复制用于应对跨地域容灾场景,当发生地域级灾难时,客户能够快速迁移业务,确保业务的连续性。

在这里插入图片描述

在正常场景下:业务在 A 地域访问 TDMQ Pulsar 版服务端,用户需要完成两个前置动作:

  1. 建立跨城网络的连接,通过云联网打通跨地域的 VPC 网络;

  2. 建立两地的集群元数据同步。

异常发生时:TDMQ Pulsar 版提供域名解析切换功能,将原 A 地域使用的域名指向到目标容灾 B 地域的集群,这样做可避免在客户端修改接入点地址,而实现对容灾 B 地域的集群连接方案,保障业务的延续性。

A 地域异常恢复后

用户首先需要判断是否要将 B 地域所产生的消息回写至 A 地域,以确保消息的完整性。

接着,用户在 B 地域的集群进行接入点的域名解析切回,切回操作执行后,客户端即可正常访问 A 地域。

消息级复制

TDMQ Pulsar 版消息级复制用于解决数据统一归档问题。

在这里插入图片描述

以上海地域复制到北京地域为例。

上海地域的 Pulsar 集群中运行 Replicator 组件,该组件中会启动 Producer-R,绑定了北京地域对端集群的 Topic1,将消息数据用生产者的方式发送到北京机房。具体的复制过程如下:

  1. Producer1 生产消息到上海集群 Topic1;

  2. 上海集群把消息持久化到 BookKeeper;

  3. BookKeeper 返回成功后把消息推给 Replicator 的 Cursor;

  4. Replicator 的 Cursor 通过 Producer-R 把消息发给北京集群 Topic1;

  5. 北京集群 Topic1 写入 BookKeeper 成功后给上海集群 Replicator 的 Cursor 回复 ACK,上海机房 Cursor 收到 ACK 后通过 Producer-R 推送下一条消息。

通过这种方式,上海集群的消息就可以被可靠地复制到北京集群,确保数据在两个地域之间的一致性和可用性。这种流程就实现了全球多个地点生成的数据, 能够集中在一个地点进行管理和处理,实现了数据归档操作。

跨地域复制使用指引

  1. 在目标复制地域创建专业集群,在集群购买界面,需要开启「跨地域复制」开关,并选择数据源集群;

  2. 通过控制台配置集群的复制链路:

    ● 复制链路名称:为同步链路定义一个名字。

    ● 链路类型:选择消息级。

    ● 源集群选择:选择要进行数据源的 TDMQ Pulsar 版集群。

    ● 目标集群选择:在不同地域选择创建好的目标集群,此处仅会显示「集群 ID」相同的集群。

    ● 复制级别:支持集群级、命名空间和 Topic 三个级别:

    ○ 集群级:适用于集群级的复制。
    
    ○ 命名空间级:适用于两地集群日常都是活跃的,不同的命名空间分布在不同地域。
    
    ○ Topic 级:跨地域复制的最小粒度。
    
  3. 创建完成后,消息级的复制任务会进入到监控界面,您可以查阅复制任务的事实复制速率、复制消息堆积等数据。

在这里插入图片描述

基于 TDMQ Pulsar 版在金融在线高并发场景的最佳实践

FiT 是腾讯公司提供移动支付与金融服务 的 综合业务平台。业务领域包括 移动支付、投资理财、民生服务和国际化等。

业务需求

FiT 在日常的交易流程中,需要通过 消息中间件 来实现上游和下游衔接,以实现广播、过滤、延迟推送等场景。由于 FiT 均是交易类场景,对消息产品的高并发、容灾均有非常高的要求。

TDMQ Pulsar 版解决方案

在应用实践上,用户选择了 TDMQ Pulsar 版这款产品。

  • 标准模型-发布订阅:使用标准的 pub - sub 模式,生产者生产一条消息,任意一个消费者成功消费即可。在部署方面,客户端的生产者和消费者均解耦部署。

  • 扩散模型:消息生产消费比例为 1:N ,将业务请求异步「扩散」到其他的多个SET中,实现一端生产,多端消费。

  • 限定模型-消息标签过滤+自动创建订阅:使用了 TAG 消息过滤的方式,限定消息只能在某一个客户端消费。消息标签过滤用于对某个 Topic 下的消息进行分类,例如交易流水 Topic 包含了下单流水、支付流水、发货流水等,业务若只想消费者订阅其中一种类别的流水,可在客户端进行 tag 的过滤。

  • 跨地域复制:通过配置复制关系,自动将消息复制到对端集群,当其中一个地域发生故障时,通过接入层的流量调度,将流量调度至另外一个集群。确保在发生灾难时,业务能够迅速恢复,保障业务的连续性,降低了灾难发生时的风险和损失。

在这里插入图片描述

用户评价

得益于 TDMQ Pulsar 高吞吐、低延迟的能力,FiT 金融产品业务迁移到 TDMQ Pulsar 后,消息从生产者到消费者的耗时缩短了大约80%,消息积压情况大大缓解,积压数量减少了70%。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/876367.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【智路】智路OS 欢迎来到智路OS路侧操作系统开发手册

https://airos-edge.readthedocs.io/zh/latest/ 欢迎来到智路OS路侧操作系统开发手册 智路OS 是一套完整的软件和服务开放系统, 由路侧操作系统(airos-edge),车端(airos-vehicle)和云端开发者平台共同构成…

备战软考Day02-数据结构与算法

1.基本概念与三要素 1.什么是数据 数据是信息的载体,是描述客观事物属性的数、字符及所有能输入到计算机中并被计算机程序识别和处理的符号的集合。数据是计算机程序加工的原料。 2.数据元素、数据项 数据元素是数据的基本单位,通常作为一个整体进行…

51单片机快速入门之按键应用拓展

51单片机快速入门之按键应用拓展 LED的点动控制: 循环检测,当key 为0 时 led 亮 反之为熄灭 while(1){ if(key!1) { led0; }else { led1; } } LED的锁定控制: 当按钮按下,led取反值 while(1) { if(key!1) { led!led; } } LED的4路抢答控制: bz默认为0 !bz 取反值,循环启动…

《网络协议 - HTTP传输协议及状态码解析》

文章目录 一、HTTP协议结构图二、HTTP状态码解读1xx: 信息响应类2xx: 成功响应类3xx: 重定向类4xx: 客户端错误类5xx: 服务器错误类 一、HTTP协议结构图 二、HTTP状态码解读 HTTP状态码(英语:HTTP Status Code)是用以表示网页服务器超文本传…

web开发 之 HTML、CSS、JavaScript、以及JavaScript的高级框架Vue(学习版2)

一、前言 接下来就是来解决这些问题 二、 Ajax 1.ajax javscript是网页三剑客之一&#xff0c;空用来控制网页的行为的 xml是一种标记语言&#xff0c;是用来存储数据的 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-…

ChatGPT提示词-中文版(awesome-chatgpt-prompts中文版)

原是Github上110.6K星的项目&#xff1a;GitHub - f/awesome-chatgpt-prompts: This repo includes ChatGPT prompt curation to use ChatGPT better. 我翻译成了中文需要自提 我用夸克网盘分享了「Chat GPT提示词.csv」&#xff0c;点击链接即可保存。打开「夸克APP」在线查看…

【CS110L】Rust语言 Lecture3-4 笔记

文章目录 第三讲 所有权:移动与借用&例1例2例3 错误处理&#xff08;开头&#xff09;为什么空指针如此危险&#xff0c;我们能做什么以应对&#xff1f;— 引出Optionis_none()函数unwrap_or()函数常见用法 第四讲 代码实践:链表Box节点和链表的定义节点和链表的构造函数判…

Windows与Linux下 SDL2的第一个窗口程序

Windows效果和Linux效果如下&#xff1a; 下面是代码&#xff1a; #include <stdio.h> #include "SDL.h"int main(int argc, char* argv[]) { // 初始化SDL视频子系统if (SDL_Init(SDL_INIT_VIDEO) ! 0){// 如果初始化失败&#xff0c;打印错误信息printf(&…

火语言RPA流程组件介绍--下拉框选择

&#x1f6a9;【组件功能】&#xff1a;勾选下拉框选项 配置预览 配置说明 丨目标元素 支持T或# 默认FLOW输入项 通过自动捕获工具捕获(选择元素工具使用方法)或手动填写网页元素的css,xpath&#xff0c;指定对应网页元素作为操作目标 丨值 支持T或# 选中目标的值&#xf…

protobuf中c、c++、python使用

文章目录 protobuf实例&#xff1a;例题1&#xff1a;[CISCN 2023 初赛]StrangeTalkBot分析&#xff1a;思路&#xff1a;利用&#xff1a; 例题2&#xff1a;[CISCN 2024]protoverflow分析&#xff1a; protobuf Protocol Buffers&#xff0c;是Google公司开发的一种数据描述语…

嵌入式单片机程序运行基本机理

1. 程序各种要素说明 大家好,今天用一个最简单的程序跟大家讲清楚程序的构成。 1.1. 概述 硬件首先要知道硬件的组成。 在前面章节我们说过,芯片包含Flash和RAM。 他们虽然不是相同的东西,但是都属于同一个地址空间,32位芯片的地址空间大小是4G。 比如ST32,FLASH通常从…

约瑟夫环和一元多项式修正版

这里先附上上一篇博文的链接大家可以对比着看&#xff0c;错误已经改正https://blog.csdn.net/2302_78946488/article/details/141751514?spm1001.2014.3001.5501 约瑟夫环 以下是详细代码 //约瑟夫环 #include<stdio.h> #include<stdlib.h> //建立链表结点 str…

keil 中 printf重定向

int fputc(int ch, FILE *f) {HAL_UART_Transmit(&huart1, (void*)&ch, 1, 1000);return ch;} 同时勾选&#xff0c;使用微库

[Postman]接口自动化测试入门

文章大多用作个人学习分享&#xff0c;如果大家觉得有不足或错漏的地方欢迎评论指出或补充 此文章将完整的走一遍一个web页面的接口测试流程 大致路径为&#xff1a; 创建集合->调用接口登录获取token->保存token->带着token去完成其他接口的自动化测试->断言-&g…

炫酷HTML蜘蛛侠登录页面

全篇使用HTML、CSS、JavaScript&#xff0c;建议有过基础的进行阅读。 一、预览图 二、HTML代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-w…

Cubieboard2(五) 安装无线网卡驱动

1 前情提要 1.1 硬件情况 1&#xff09;Cubieboard2&#xff1a;http://cubieboard.org/model/cb2/ Cubieboard2 是一个由珠海的 Cubietech 团队推出&#xff0c;采用全志 A20 处理器的开发板。 手头上的是生产于 2012.9.9 的是 MMC SDCard 而非 dual_card 款&#xff0c;也…

【计算机网络】网络通信中的端口号

文章目录 一、引入端口号二、端口号的作用三、端口号的确定 在TCP/IP协议中&#xff0c;传输层有两个重要的协议&#xff1a;TCP&#xff08;传输控制协议&#xff09;和UDP&#xff08;用户数据报协议&#xff09;。TCP用于提供可靠的数据传输&#xff0c;而UDP则适合用于广播…

打造下一个AI拥抱视频热潮:从CloneAI的成功中汲取灵感

在科技与创意的交汇点,CloneAI以其敏锐的洞察力和高效的执行力,在短时间内迅速崛起,成为App Store的明星应用。其成功不仅在于抓住了AI技术的浪潮,更在于精准地利用了社交媒体的趋势,创造了一个独特的用户体验。对于希望复刻这一成功的开发者们来说,CloneAI的经验无疑是一…

QT多线程编程(基础概念以及示例)

QT多线程编程 前言&#xff1a;基础夯实&#xff1a;一:多线程概述二:QT多线程的使用1. 继承QThread类2. 继承QObject类3. QtConcurrent模块 三:线程同步与通信四:线程安全五:线程管理六:总结 效果展示&#xff1a;实现功能&#xff1a;核心代码&#xff1a;mainwindow.hmythre…

网络穿透:TCP 打洞、UDP 打洞与 UPnP

在现代网络中&#xff0c;很多设备都处于 NAT&#xff08;网络地址转换&#xff09;或防火墙后面&#xff0c;这使得直接访问这些设备变得困难。在这种情况下&#xff0c;网络穿透技术就显得非常重要。本文将介绍三种常用的网络穿透技术&#xff1a;TCP 打洞、UDP 打洞和 UPnP。…