资产扫描流程
2023-12-26 17:17:45 0 举报
资产扫描流程是一种用来识别、评估和管理组织中各类资产的过程。它涉及对硬件、软件、数据、人员技能等各类资产的识别、分类和价值评估。在扫描过程中,组织需要定义和实施一套标准的扫描策略,以确保所有资产都被正确识别、分类和估值。扫描结果将用于决策、风险管理、预算编制和投资回报率评估等方面,以优化资产管理,提高组织效益。
作者其他创作
大纲/内容
获取数据源连接
查询可执行的任务逻辑
否
判断是否有任务已经在扫描该数据源(存在线程安全问题)
是
从字段集合缓存中获取该表的字段列表
设置进度0.01%
根据任务id、数据源id查询在今天范围内执行状态是完成的执行记录集合
判断表扫描是否出错
返回扫描任务对象
更新统计数据
从数据源列表中取出一个数据源
任务列表大小是否达到设置的信号量大小
计算总的表个数
设置任务的时间配置
判断可扫码标识是否是true
处理后-记录数据源变化明细
更新表相关信息
销毁所有线程池
是否属于当前节点的任务(分布式)
修改可扫描标识为false
判断执行周期是否是每天/每周/每月并且上面查询出的执行记录集合非空
根据不同的数据库类型获取所有实例下的表总数
线程池中处理扫描任务的逻辑
查询该任务的执行状态
设置当前数据源跳过扫描,并更新执行记录
查询数据实例上次扫描的表
更新扫描记录
处理表的变化
判断之前是否扫描过该表
判断是否有任务已经在扫描该数据源
加入待执行的任务列表
开始
判断任务是否是单次执行
特征性识别
阻塞5分钟
根据任务id查询数据源集合并设置到扫描任务的对象中
获取授权文件中的表限制数量
处理扫描每个实例
初始化表扫描的线程池
判断扫描范围是否是数据源
处理扫描任务
循环任务列表向执行线程池中添加扫描任务
判断查询的数量是否大于0(判断之前是否扫描过)
从扫描任务的对象中获取数据库实例集合
扫描范围是否是表
从扫描任务对象中获取所有数据源表的总数量
判断连接是否为空
根据组装扫描任务的对象执行扫描任务
修改可扫描标识为true
任务集合是否还有任务
可执行的任务列表是否为空
从任务集合中取出一个任务
更新执行记录的执行状态为跳过
结束
如果你是hive类型单独获取表注释
判断数据实例集合中是否还有元素
表变更记录
判断是否能获取信号量
判断执行状态是否是待执行
查询之前扫描的表数量、字段数、数据量、命中特征项数,组装到上次扫描的资产统计对象中
处理前-记录数据源变化明细
redis上删除数据源是否在扫描的标识、任务id的缓存
获取扫描的数据源实例集合
根据数据源类型选择对应的处理方式去处理数据源(通过线程池异步执行的)
扫描范围是否是数据源
创建监控线程
循环遍历任务集合-循环体
判断任务是否执行完成
任务集合是否为空
执行扫描任务前的逻辑
初始化表属性扫描的线程池
更新表和字段的扫描时间
更新执行结果为“可能扫描范围错误”
该时间是否可执行
查询任务最后执行时间是最近3小时内,并且是结构化、待执行、默认的任务集合
更新执行记录的执行状态为执行中
设置执行状态为停止
执行扫描任务前-组装扫描任务的对象
根据数据源类型处理扫描的逻辑 (核心逻辑)
扫描范围是否是实例
从上面实例处理逻辑的地方获取到表数量
查询结构化、待执行、立即执行的任务集合
判断表集合是否还有元素
创建上次扫描的资产统计对象,默认是空
针对特定的数据库类型获取表数量
查询可执行的任务
查询500张表下的字段,组装成字段集合的缓存
遍历数据源列表-循环体
遍历数据实例列表-循环体
处理扫描每个实例的逻辑 (核心逻辑)
遍历实例集合,根据实例查询对应的表集合,整合成一个大的表结合,并设置到扫描任务的对象中
阻塞5秒
更新进度为100%
设置执行状态为完成
判断数据源列表中是否还有元素
初始化数据源可扫描标识为false
是否授权
授权表限制+1,新增该表的信息
关闭链接
初始化字段扫描的线程池
判断上次扫描的资产统计对象是否为空
返回任务列表
判断任务是否可执行
表字段、敏感字段更新
在此次扫描的统计数据对象中设置表数量、字段数、数据量、命中特征项数与上次扫描结果的差值
判断总的表个数是否为0
遍历表列表-循环体
执行扫描任务后
字段变更记录
根据数据源id和当前执行记录id查询执行状态
判断是否是单次执行
在此次扫描的统计数据对象中设置表数量、字段数、数据量、命中特征项数均为0
判断上面查询的数据实例集合是否为空
退出监控线程并删除特征性识别记录
判断是否从系统表扫描数据量并且是以下数据库类型(oracle、mysql、腾讯版mysql、腾讯版 postgresql、腾讯版 oracle、GaussDB200、GreenPlum、postgresql)
判断上面查询的执行状态是否是停止
更新当前进度为100%
获取建表语句
根据数据源id、执行状态为完成两个条件查询数量(用于判断之前是否扫描过)
获取该表字段相关的信息
查询结构化、休眠/待执行、每天/每周/每月的任务集合
创建此次扫描的统计数据对象
是否能获取可执行的信号量
根据当天执行记录id、数据源id查询执行结果
开启线程处理表的逻辑
上面查询的数量是否大于0
从集合中取出一个数据库实例
如果该数据源执行记录状态为休眠,修改成跳过
校验数据库是否满足要求
处理扫描每个实例的逻辑(核心逻辑)
判断jdbc链接是否失败
判断对500取余是否为0(分批获取表下的字段)
设置执行状态为休眠
更新任务执行记录
根据数据源id查询数据库实例集合
执行扫描任务的逻辑
根据数据源id查询执行状态是休眠的数量
获取数据实例下的所有的表信息(表名、标注释、表id、表schema、表类型、表行数、表存储量、实例字符集)
无限循环-循环体
更新进度
更新实例的容量
在redis中设置数据源是否在扫描的标识和设置任务id的缓存
判断执行状态是否是睡眠状态
主流程的逻辑
根据任务id查询实例集合并设置到扫描任务的对象中
查询任务的特征项配置(全部特征项/不分特征项),并设置到扫描任务的对象中
0 条评论
下一页