《银行业务系统日终结息批处理多进程处理设计方案.doc》由会员分享,可在线阅读,更多相关《银行业务系统日终结息批处理多进程处理设计方案.doc(6页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、版本号修改人修改日期修改说明1.0hwx2013-01-09初稿1.1hwx2013-01-10简化了设计。明确了数据优先级的概念。名词介绍 监理进程:用来启动、停止工作进程,给工作进程分配任务,监控工作进程的状态,监控系统资源。 工作进程:用来完成具体的业务功能,详细的业务逻辑要在这个进程里执行。报文格式“指令”是监理进程发送给工作进程的。“状态”是工作进程发送给监理进程的。指令/状态Char(1)指令A 开始数据处理B 暂停执行C 退出程序状态 1 程序处理成功完成 2 程序处理失败 数据长度Char(4)不够四位,左补零数据内容Char(n)数据结构交易并发定义表( tx_concur_
2、def)tx_codeChar(4)交易码tx_progChar(20)交易函数对应的so是tx_prog.sotx_dataChar(1024)数据来源是一个sql语句,返回一个结果集。首先取到的数据被优先处理。结果集格式: 第一列 数据例子:select opn_br_no from td_mst group by opn_br_no order by count(*) desc对于需要多列的数据的,可以把列合并。例如select prdt_no |opn_br_no ,count(*) from dd_mst group by 1 order by count(*) desc;proc_
3、upper_lmtDecimal(3,0)进程数上限Load_upper_lmtDecimal(3,0)负载上限最大值为100,最小值为0data_codeChar(4)数据编码放结果集里的数据tx_statusChar(1)交易状态0 初始状态1 正在执行2 执行失败clear_resultChar(1)在成功做完后删除tx_concur_result里的数据。Y 是N 否result_idDecimal(10,0)结果标识初始值为零,以后这个值会自动增加。每次运行一下任务,这个域的数据会加一。此列数据一般不用修改。交易并发结果表(tx_concur_result)tx_codeChar(4
4、)交易代码result_idDecimal(10,0)结果标识data_idDecimal(10,0)数据标识从1开始递增data_valueChar(100) 数据内容data_statusChar(1)任务状态Y 成功N 没有成功Create unidex index tx_concur_resut_idx1 on tx_concur_result (tx_code,result_id,data_id)监理进程流程1. 根据tx_code,读取tx_concur_def里数据2. 创建proc_upper_limit和当前负载情况,创建适当数量的工作进程3. 查看tx_status的状态。
5、如果tx_status 为零,表示这个交易需要初始化a) 把result_id加1b) 执行tx_data里sql语句,c) 把结果放到tx_concur_result里的data_value列里。d) 把data_status设置为N4. 对并发数据(tx_concur_result)进行循环处理a) 读取tx_concur_result里的数据,条件为tx_concur_result.tx_code=tx_concur_def.tx_code and tx_concur_result.result_id and=tx_concur_def.result_id and data_status
6、=Nb) 调用系统监控接口,决定是否可以处理用户数据c) 查看工作进程队列,如果有可用进程,把数据发送到可用进程d) 检查是否有死进程,有则记录错误状态,重新启动该工作进程e) 据工作进程的结果,更新tx_concur_result里的data_status5. 根据tx_concur_result里的data_status,更新tx_concur_def里的tx_status工作进程流程1. 初始化环境2. 循环处理“监管进程”发布的指令a) 解析传入的数据,把值放到相应的数据编码里b) 调用tx_prog程序c) 把tx_prog的执行结果返回到“监管进程” “工作进程”内部如果有循环的数
7、据要处理,那么也可以调用系统资源监控API,来决定是否处暂停处理下一条。储蓄活期结息的说明方法1:按机构结息字段值说明tx_dataSelect opn_br_no from dd_mst group by on_br_noorder by count(*) desc 按机构结息。先处理户数多的机构,然后再处理户数少的机构。因为户数是按倒序排列,所以到了最后,户数会越来越少,所以无论哪个进程来处理下一个机构,耗时都很少,所以所有的进程的结束时间会基本相同。data_code10910用0910域来放机构码。结息程序可以从这个域里取出机构码,来做指定机构的结息。proc_upper_limit1
8、0 说明可以并发10个机构同时做结息load_upper_limit80 说明系统负荷综合指标到了80的时候,就会暂停结息。方法2:按机构加产品类型来结息字段值说明tx_dataselect prdt_no |opn_br_no ,count(*) from dd_mst group by 1 order by count(*) desc; 按每个机构的一个产品为单位来结息。data_code10910proc_upper_limit10 说明可以并发机构的10个产品来结息。load_upper_limit80 说明系统负荷综合指标到了80的时候,就会暂停结息。方法3:按帐户来结息字段值说明tx_dataSelect ac_id | ac_seqn from dd_mst 按账户为单位来结息data_code10910proc_upper_limit10 说明可以并发10账户同时做结息load_upper_limit80 说明系统负荷综合指标到了80的时候,就会暂停结息。