花 200 元测试 1300 个实时数据同步任务

news/2024/7/7 20:29:18

背景

对于将数据作为重要生产资料的公司来说,超大规模的数据迁移同步系统( 1k、5k、10k 条同步任务)是刚需。

本文以此为出发点,介绍近期 CloudCanal 所做的一个容量测试:在单个 CloudCanal 集群上创建 1300 实时任务,验证系统是否健康。

这个健康度主要包括 同步任务是否运行正常页面功能操作是否顺畅容灾能力是否可靠 三个方面。

当然这个测试也带给我们一些新的思路和改进点,让产品更加健壮。

资源与环境

本次测试资源以云资源为主,详单如下:

资源用途资源规格
console2 个 2core8GB 虚拟机 (阿里云 ecs.u1-c1m4.large)
元数据库1 个 8core16GB MySQL 8.0 (阿里云 RDS mysql.n2m.xlarge.2c)
sidecar8 个 12core96GB 虚拟机 (阿里云 ecs.u1-c1m8.3xlarge)
业务库2 个 4core8GB MySQL 8.0 (阿里云 RDS mysql.n2m.large.2c)
负载均衡1 个 4 层负载均衡 (sidecar->console 7007 端口,阿里云 NLB)
1 个 7 层负载均衡 (CloudCanal 页面操作,console 8111 端口,阿里云 ALB)

测试步骤

安装 console

  • 根据 tgz 安装文档 安装软件
  • 激活 CloudCanal,因社区版任务数限制,我们临时申请了一个 2000 个同步任务的 license
    console

安装节点

  • 机器管理 > 机器列表 > 添加机器,选择自动安装
    auto_install
  • 等待节点安装完成
    auto_install_result

业务数据库准备

  • 两个 RDS 分别创建源端 src_test_a 和 src_test_b 库,以及 target_db_0~target_db_999 1000个目标库
  • 一个任务源端和目标分别是 src_test_a/src_test_b -> target_db_(i)
    target_1
    target_2
  • 源端各创建 1 张表,并各生成 1000 条数据
    source_1
    source_2

基于 OpenAPI 创建任务

  • 设置任务参数模版 LE_256MB_TASK ,以便生成任务时自动调整
    task_config_template

  • 获取 AccessKey 和 SecretKey 以便调用 API 创建任务
    ak_sk_fetch

  • 向元数据库插入 128MB 规格数据
    prepare_spec_data

  • 编写调用 OpenAPI 代码,1 次 100 个任务创建, 代码参考
    data_job_create_base_api

健康状况

  • 任务正常运行,任务查看/新建/启停/删除、任务调度、监控告警、页面功能查看均表现正常顺滑
    datajob_status

  • 控制台负载偏高,因为只用了 2 core 节点,需提升为 4 core
    console_status

  • 节点负载正常
    worker_status

  • 元数据库负载正常,qps 偏高,需要优化任务数据(状态、位点等)上传频率和方式
    db_status

可改进点

  • 任务数据(状态/位点等)上报频率、种类需要优化,对元数据库压力较高
  • 监控指标依赖的 promethus 需要进行调优

资源花费

  • 早上开资源前
    account_before

  • 晚上释放资源前
    account_after

云资源花费 200 元左右。

总结

本次容量测试是 CloudCanal 针对单集群 1000 个以上任务的场景验证,从中找到一些可能存在的问题并逐步改进,为大型客户大规模使用做好基本的验证与后续优化。


http://lihuaxi.xjx100.cn/news/1803269.html

相关文章

现有文章汇总

Cotent 项目开发FreeRTOS/ESP-IDFSTM32C/C 数据结构数据库Python基础Python实例PyQt5/Pyside2 上位机开发FlaskLinux运维树莓派4BCH552ESP32实例计算机网络Javaeclipsemicropython日常问题解决 项目开发 基于树莓派4B的车牌号识别 FreeRTOS/ESP-IDF Ubuntu下ESP-IDF的环境搭…

DAO和增删改查通用方法-BasicDao

文章目录 一、BasicDao是什么?二、BasicDao分析三、BasicDao实现(1)BasicDao(2)ActorDao(3)TestDao 四、总结 一、BasicDao是什么? BasicDao:基础的数据对象,可以完成通用…

【Linux】Alibaba Cloud Linux 3 安装 PHP8.1

一、系统安装 请参考 【Linux】Alibaba Cloud Linux 3 中第二硬盘、MySQL8.、MySQL7.、Redis、Nginx、Java 系统安装 二、安装源 rpm -ivh --nodeps https://rpms.remirepo.net/enterprise/remi-release-8.rpm sed -i s/PLATFORM_ID"platform:al8"/PLATFORM_ID&q…

RPC(远程过程调用)

RPC(远程过程调用)是一种用于不同计算机之间进行通信的协议和技术。它允许一个计算机程序调用远程计算机上的子程序或服务,就像调用本地计算机上的函数一样。 RPC出现的原因是为了解决多计算机环境下的分布式计算问题。在分布式系统中&#…

信息学奥赛一本通 1435:【例题3】曲线 | 洛谷 洛谷 P1883 函数

【题目链接】 ybt 1435:【例题3】曲线 洛谷 P1883 函数 【题目考点】 1. 三分 【解题思路】 每个 S i ( x ) S_i(x) Si​(x)是一个二次函数, F ( x ) m a x ( S i ( x ) ) F(x) max(S_i(x)) F(x)max(Si​(x)),即为所有二次函数当自变量…

NJU操作系统公开课笔记(1)

目录 一.计算机系统概述 二.计算机硬件系统 三.计算机软件系统 四.计算机操作技术的发展 五.计算机OS 1.资源管理的角度 2. 程序控制的角度 3.OS控制计算机的角度 4.人机交互的角度 5.程序接口的角度 6.系统结构的角度 单道批处理系统 多道批处理系统 分时系统 …

python时间变化与字符串替换技术及读JSON文件等实践笔记

1. 需求描述 根据预测出结果发出指令的秒级时间,使用时间戳,也就是设定时间(字符串)转为数字时间戳。时间计算转换过程中,出现单个整数(例如8点),按字符串格式补齐两位“08”。字符…

算法笔记-第九章-树的遍历(未完成-待整理)

算法笔记-第九章-树的遍历 树遍历的知识点emplace_back()用法top和pop的用法 树的先根遍历理解本题思路 树的后跟遍历树的层序遍历树的循环队列遍历 树的高度树的高度分析题目 树的结点层号 树遍历的知识点 大佬总结的实在是太好了 大佬讲解数遍历 (遍历树的前序&…