一、背景:
集成任务作为数据中台和外部数据库链接的数据桥梁,常常需要面对与处理复杂的外部数据库与网络环境。一旦外部的数据库出现异常,集成任务就会卡在某个状态:如一直在尝试与数据库连接,或者在数据库过载的时候还在一直在尝试执行SQL……这些异常状态都会导致集成任务无法完成。
集成任务如果长时间卡在某个异常状态,会一直处于运行状态,持续占用资源,会影响其他任务的调度运行。并且,没有及时的异常状态反馈,运维人员也无法及时感知任务出错采取修复措施,导致后续链路的任务也无法运行,可能造成重大影响。
难以及时感知异常并准确排查,且可能造成严重影响,这使得集成任务卡在异常状态成为了企业中运维人员的一大心事,针对该痛点,Dataphin在V3.11版本做了以下的优化,通过提供可配置的策略,旨在减少集成任务在异常情况下的无效等待时间,加快人员的感知与响应速度,提高集成任务的成功率。
二、优化策略:
1、数据源新增超时时长配置:
在V3.11中,Dataphin针对大多数的RDMBS类型数据库,在创建数据源配置中提供了connectTimeout和socketTimeout配置项(不同数据库的超时配置参数名称不完全相同)。
connectTimeout是指连接超时时间,是在客户端向服务端建立连接时使用的超时设置。当客户端向服务端发起连接请求时,如果在指定的时间内没有建立连接成功,则会抛出连接超时的异常。Dataphin将connectTimeout默认设置为15分钟,可根据实际情况自行调整。
socketTimeout是指数据传输超时时间,是在已经建立连接后进行数据传输时使用的超时设置。当客户端向服务端发送数据或接收数据时,如果在指定的时间内没有完成数据传输,则会抛出数据传输超时的异常。Dataphin将socketTimeout默认设置为30分钟,可根据实际情况自行调整。
该优化措施可以在任务长时间卡在连接阶段,或者是数据传输时间过长的异常状态下,及时置任务失败,反馈异常状态,减少集成任务的无效等待时长。
2、集成任务-通道配置优化
- 将默认的数据库连接重试次数由7次改为1次,减少在数据库自身环境异常时,无效的重试连接时间。
- 新增SQL执行超时时长,默认30分钟。该配置应用于任务中的目标库准备语句及结束语句SQL,如果其中任一语句超过该配置,则置任务失败。该配置可以防止用户写无意间了一条运行时间过久的SQL,导致集成任务运行时间过久。如果准备语句及结束语句SQL确实需要很久,可适当延长SQL执行超时时长。但需要注意的是,准备语句及结束语句SQL用于辅助数据同步使用,过于复杂的准备或结束语句SQL不建议在集成任务中配置。
- 新增无流量时间阈值,默认30分钟。在数据库压力过大时,数据可能长时间无法抽取或写入,该配置项可以在无数据流量超过一定时长时,置任务失败,及时反馈这种异常情况。
三、总结:
针对集成任务在异常状态下卡住难以感知的痛点,Dataphin在V3.11上进行了一系列的优化措施,通过对于集成任务各阶段的超时控制,及时反馈异常状态,帮助运维人员及时感知并处理异常,减少集成任务的无效等待时长,及时释放资源,不阻碍其他任务的调度运行。