对于将数据作为重要生产资料的公司来说,超大规模的数据迁移同步系统( 1k、5k、10k 条同步任务)是刚需。
本文以此为出发点,介绍近期 CloudCanal 所做的一个容量测试:在单个 CloudCanal 集群上创建 1300 实时任务,验证系统是否健康。
这个健康度主要包括 同步任务是否运行正常、页面功能操作是否顺畅、容灾能力是否可靠 三个方面。
当然这个测试也带给我们一些新的思路和改进点,让产品更加健壮。
本次测试资源以云资源为主,详单如下:
资源用途 | 资源规格 |
---|---|
console | 2 个 2core8GB 虚拟机 (阿里云 ecs.u1-c1m4.large) |
元数据库 | 1 个 8core16GB MySQL 8.0 (阿里云 RDS mysql.n2m.xlarge.2c) |
sidecar | 8 个 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) |
设置任务参数模版 LE_256MB_TASK ,以便生成任务时自动调整
获取 AccessKey 和 SecretKey 以便调用 API 创建任务
向元数据库插入 128MB 规格数据
编写调用 OpenAPI 代码,1 次 100 个任务创建, 代码参考
任务正常运行,任务查看/新建/启停/删除、任务调度、监控告警、页面功能查看均表现正常顺滑
控制台负载偏高,因为只用了 2 core 节点,需提升为 4 core
节点负载正常
元数据库负载正常,qps 偏高,需要优化任务数据(状态、位点等)上传频率和方式
早上开资源前
晚上释放资源前
云资源花费 200 元左右。
本次容量测试是 CloudCanal 针对单集群 1000 个以上任务的场景验证,从中找到一些可能存在的问题并逐步改进,为大型客户大规模使用做好基本的验证与后续优化。