作者:高鹏
DBA,负责项目日常问题排查,广告位长期出租 。
本文来源:原创投稿
*爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。
本文主要贡献者:进行OMS源码分析的@操盛春(北分之光)
一、走进OMS
本文以OMS社区版3.3.1为例
我们可以从官方的地址上获取到它的架构图,这是它大概的样子:

可以看到一个OMS数据迁移工具它包含了很多的组件,有DBCat、Store、Connector、JDBCWriter、Checker 和 Supervisor 等,组件的各个功能这里就不copy官方的叙述了,毕竟有手就行。接下来说点官网上没有的。
之前领导让我进行OMS性能测试时要顺便打印火焰图看一下,分析迁移过程中时间都用在了哪里,但是当我登录OMS容器后看到很多相关java进程,一时间分不清哪个进程是做什么的,那么接下里我们就对这些进程逐一说明
1.Ghana-endpoint
[ActionTech ~]# ps uax | grep Ghana-endpoint
root 61 3.1 0.5 20918816 1582384 pts/0 Sl Feb07 1756:47 java -Dspring.config.location=/home/ds/ghana/config/application-oms.properties -server -Xms1g -Xmx2g -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -Xloggc:/home/admin/logs/ghana/gc.log -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=10M -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/home/admin/logs/ghana -jar /home/ds/ghana/boot/Ghana-endpoint-1.0.0-executable.jar
Ghana-endpoint负责提供OMS 后台管理界面、调度TaskJob和StructTaskJob程序
tips:
StructTaskJob:结构迁移任务调度程序
TaskJob:
- TaskJob::scheduledTask(),负责正向切换步骤的子任务执行的调度
- TaskJob::scheduleMigrationProject(),负责结构迁移项目所有步骤初始化 & 任务执行进度监控的调度
2.commons-daemon(CM)
[ActionTech ~]# ps uax | grep commons-daemon
root 50 297 1.7 25997476 4711620 pts/0 Sl Feb07 163685:09 java -cp /home/ds/cm/package/deployapp/lib/commons-daemon.jar:/home/ds/cm/package/jetty/start.jar -server -Xmx4g -Xms4g -Xmn4g -Dorg.eclipse.jetty.util.URI.charset=utf-8 -Dorg.eclipse.jetty.server.Request.maxFormContentSize=0 -Dorg.eclipse.jetty.server.Request.maxFormKeys=20000 -DSTOP.PORT=8089 -DSTOP.KEY=cm -Djetty.base=/home/ds/cm/package/deployapp org.eclipse.jetty.start.Main
CM集群管理进程,为OMS 管理后台进程提供接口,用于创建拉取增量日志、全量迁移、增量同步、全量校验等任务,以及获取这些任务的执行进度
3.oms-supervisor
[ActionTech ~]# ps uax | grep oms-supervisor
ds 63 1.0 0.3 11780820 985860 pts/0 Sl Feb07 566:35 java -server -Xms1g -Xmx1g -Xmn512m -verbose:gc -Xloggc:./log/gc.log -XX:+PrintGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -Dserver.port=9000 -DconfigDir=/u01/ds/supervisor/config/ -Dspring.main.allow-circular-references=true -jar ./bin/oms-supervisor.jar
oms-supervisor进程用于启动执行拉取增量日志、全量迁移、增量同步、全量校验等任务的进程(组件),并监控这些进程的状态
4.store
store增量日志拉取进程,它是多进程协作,直接抓取store进程可能会看到下面一坨,其根进程为 ./bin/store,该进程有子进程及多个后代进程。

- ./bin/store:模拟源节点的从库,从源节点接收增量日志
- /u01/ds/store/store7100/bin/metadata_builder:进行过滤、转换,写入文件,并对DDL进行处理
这些进程会持续不断的把需要迁移表的增量日志拉取到 OMS 服务器上存储起来,以供增量同步任务使用。
5.全量迁移和全量校验
[ActionTech ~]# ps -ef | grep VEngine
UID PID PPID C STIME TTY TIME CMD
ds 32635

本文详细介绍了OMS数据迁移工具的组件,如Ghana-endpoint、CM、oms-supervisor、store等的职责,并提供了进程分析,特别讨论了全量迁移和增量同步的进程区别。此外,文章还探讨了OMS的迁移流程,并提出针对sink_worker_number的优化策略,以及迁移任务的并发速度选择,以提升迁移效率。
最低0.47元/天 解锁文章
346

被折叠的 条评论
为什么被折叠?



