如何防止服务流程OOM?SQL分页查询来解决
作为复杂业务集成场景下的首选技术,服务流程拥有灵活可配的设计、运行、监控和异常处理机制,深受集成云用户亲睐。
But……为了支持失败重试和撤销补偿的异常处理操作,服务流程需要保存运行时的数据和状态。这样一来,当处理的数据量过大时,缓存的数据量随着流程运行在不断扩大,严重影响系统性能,甚至可能导致内存溢出。
难道大批量数据同步且包含复杂的处理过程(数据映射、值转换、数据加载、从多个来源取数等) 的集成场景就不能处理了吗?
当然不会这么局限啦~紧跟小编,教你一种将服务流程应用于大数据集处理的方法:使用SQL分页查询的方式对大数据集进行切分,使服务流程通过循环的方式逐页处理,保持服务流程的运行期内存状态数据量始终处于一个合理的范围内。
1 流程属性说明
1.1 基本信息配置优化
首先,为了避免大数据同步时产生太多日志耗费资源,可以将“日志级别”调整为“错误”;打开“禁止记录追溯信息”开关,并将“自动保存时间间隔”延长,降低服务流程状态信息写入数据库的频率。
基本信息配置示例
1.2 流程变量声明
设置流程变量以便在流程中控制分批取数大小,并将取出的数据保存下来进行分批处理,其中主要变量为:
1)DEMO1_DATA、DEMO2_DATA作为两个集成对象变量,用于暂存分批数据;
2)“每页大小(PAGE_SIZE)”用于设置每批数据行数,示例中设置5行,则5行数据作为一页数据进行处理,可根据实际数据行的大小进行自定义设置。建议每批数据的大小不超过5MB。
流程变量设置示例
1.3 依赖资源声明
添加用于执行SQL查询的数据源。数据源的别名须与执行SQL语句节点中所用的连接参数赋值保持一致。
依赖资源填写示例
OK,以上准备工作都做好了,接下来配置服务流程图。
2 流程图详解
2.1 主流程图
主流程用于维护分页循环,可以实现以下功能:
通过SQL语句查询出一页的数据,保存在DEMO1_DATA、DEMO2_DATA变量中;
计算当前页数据大小并递增已处理行数;
处理变量中的数据并清空变量(业务处理流程图);
当前页数据处理完后递增查询起始点以进行下一次查询。
主流程示例
2.2 “查询一页数据”节点
分页查询SQL的语法与所用的数据库相关,应用时需要相应调整,具体语法请搜索相应数据库的SQL语法手册;在WHERE条件中使用“?”表示参数;应在ORDER BY语句的最后一列加上主键字段,确保数据的排序是确定的。
“查询一页数据”节点信息及脚本示例
2.3 “递增数据行计数器”节点
如果改变了暂存查询结果的流程变量名,需要相应修改“DEMO1_DATA”。
“递增数据行计数器”节点信息及脚本示例
2.4 ”处理一页数据“节点块
此节点类型是“块节点”,封装业务集成的逻辑,其具体设置应根据业务的需要配置,本文仅作简单示例。如果单个块节点封装的过程太复杂,也可以适当拆分为多个块节点,提高整个流程图的可读性和可维护性。
如果流程变量中暂存的内容不再需要使用,及时清理有助于降低流程运行时状态保存到数据库时的开销。
“处理一页数据”节点块流程示例
2.5 “递增下一页的起始行号”
递增下一页的起始行号,为查询下一页数据做准备。
“递增下一页的起始行号”设置示例
3 注意事项
3.1 数据分批
1、SQL语句查询结果的排序必须是确定的,如果不确定的话,可将主键字段添加到最后。
2、SQL语句查询结果的排序字段应避免选择“最近修改时间”或类似的字段,以免在大数据集处理过程中,新修改或插入的数据被排到已读取数据的前面,导致数据遗漏和重复处理。
3.2 应用扩展
1、可以使用API提供的分批查询替代SQL的分页查询,以支持基于API的大数据集集成。
2、使用巧妙的WHERE语句设计规避Oracle/SQLServer分页查询的复杂SQL语法。
4 相关链接
5 划重点
服务流程SQL分页查询主要通过以下四个步骤进行大批量数据同步:
1)使用主流程维护分页循环;
2)查询一页数据节点:通过变量锚定每次循环的起始点和查询量;
3)递增数据行计数器节点:计算并递增查询结果行数;
4)处理一页数据节点块:封装业务集成逻辑。
#往期推荐#
更多精彩内容,“码”上了解!↓
如何防止服务流程OOM?SQL分页查询来解决
本文2024-09-23 00:52:47发表“云苍穹知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-cangqiong-142329.html
- 鼎捷EAI整合規範文件V3.1.07 (集團).pdf
- 鼎捷OpenAPI應用場景說明_基礎資料.pdf
- 鼎捷OpenAPI應用場景說明_財務管理.pdf
- 鼎捷T100 API設計器使用手冊T100 APIDesigner(V1.0).docx
- 鼎新e-GoB2雲端ERP B2 線上課程E6-2應付票據整批郵寄 領取.pdf
- 鼎新e-GoB2雲端ERP B2 線上課程A4使用者建立權限設定.pdf
- 鼎新e-GoB2雲端ERP B2 線上課程C3會計開帳與會計傳票.pdf
- 鼎新e-GoB2雲端ERP B2 線上課程E6-1應付票據.pdf
- 鼎新e-GoB2雲端ERP B2 線上課程A5-1進銷存參數設定(初階篇).pdf
- 鼎新e-GoB2雲端ERP B2 線上課程D2帳款開帳與票據開帳.pdf