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


    背景

    对于将数据作为重要生产资料的公司来说,超大规模的数据迁移同步系统( 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

    安装节点

    • 机器管理 > 机器列表 > 添加机器,选择自动安装
      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 个以上任务的场景验证,从中找到一些可能存在的问题并逐步改进,为大型客户大规模使用做好基本的验证与后续优化。

  • 相关阅读:
    MySQL存储过程和函数知识点
    ChatGPT将引发网络安全三大革命
    微分的定义和介绍习题
    PVIT:利用位置信息增强多模态模型理解用户意图的能力
    CDN是什么?(网络零基础入门篇)
    图论10-哈密尔顿回路和哈密尔顿路径+状态压缩+记忆化搜索
    【C++】异常
    基于SSM红色教育系统的设计与实现毕业设计源码211757
    【数据结构与算法】第七篇:集合,映射
    Linux C 中执行shell命令
  • 原文地址:https://blog.csdn.net/wankaimingzj/article/details/134454672