某大型银行深化系统之八:核心层之四

来源:互联网 发布:知乎 探险 编辑:程序博客网 时间:2024/05/17 22:45

传送门 ☞ 轮子的专栏 ☞ 转载请注明 ☞ http://blog.csdn.net/leverage_1229

4任务调度

        系统通过闭环PID控制器,实现对工作项的优先级调度。工作项优先级动态调整包括流程实例和工作项两个层次,在模态维度方面包括静态参数和动态参数,其次还应该包括仲裁参数、噪音参数等,优先级应该是以上几种参数的综合。


        随着时间的迁移,在无序控制下,完成的时间是无法预测的,对于稳定的系统而言,取决节点的个数和平均处理量。在时间优先级控制中,根据最大吞吐率原则,优先级将随着时间加速递增,对于一个系统而言,虽然大部分节点在处理后期才发现并及时的修正优先级,但由于没有考虑到流程的处理估算以及无法预知当前处理占整个流程的比重,节点的时间浪费在前提比较严重,就会产生负载不均匀现象。因此我们提出了PID闭关控制方式,目的是把每次处理的节点结合流程的关键路径以及系统的当前负载情况,通过这种参数控制来实现系统的均衡负载,同时保证业务流程的处理时间。
PID控制器就是根据系统的误差,利用比例、 积分、微分计算出控制量进行控制的。通过对系统的建模可以得到如下公式:


        其中APK(0)表示初始值,APK(t)表示当前时刻下该流程的优先级,取决于上一次的计算结果、剩余时间差值和当前噪音;K1,K2,K3 ,K4是该类流程的比例控制参数。该算法的目的是保证:
∑APK<=AMKT,即要流程能在估算的时间内尽早的完成。
∑∑APK<=∑AMKT,即对于批量任务,总时间不能超过任务的预期完成时间。


        其中WPK(0)表示初始值,WPK(t)表示当前时刻下该流程的优先级,取决于上一次的计算结果、剩余时间差值和当前噪音。K1,K2,K3 ,K4是该类工作项的比例控制参数。期望值是∑WPK<WKT,即要保证工作项能在估算的时间内尽早的完成。
        PID控制:利用PID控制可以实现工作项的合理调度,迭代公式:
        Output[下次] = Kp*P分量+Ki*I分量+Kd*D分量
             = Kp*Err+Ki*Σ(Err*Δt)+Kd*ΔErr/Δt
        其中,Err=Destination-Output。
        采用队列方式和基于B树的查找方式来实现基于PID控制的优先级动态调整,关键在于把公用的参数提取出来,实现预排序和B树搜索功能。预排序将当前时间参数t、当前系统运行统计G等与当前相关的信息需要从公式中剥离考虑,因此在优先级表中不会体现。
        因此,不难得到任务队列的计算模型如下:
定义Hash队列长度为HL,消耗一个工作项时间为WET,那么一个Hash队列完全消耗掉的时间为HET=HL*WET。
定义B+树最大容积为BL,完全消耗掉B+树内容的时间为BET=BL*WET
定义Buffer更新时间为CHT,长度为BUL,则存在:
        当BET+HET>CHT并且BUL<BL+HL时,系统才能保证队列的正常运作,即每次刷新队列池,从数据库查找和jms更新队列时间间隔要远小于队列的消耗时间。
        任务队列的更新效率为:CHT/(BET+HET),即队列每隔一段时间才更新的效率。
        任务队列的使用效率为:(BL+HL)/CHT,即系统能够提供的每秒消耗的工作量。

5业务活动监控

        业务活动监控是对系统中的所有核心业务流程进行分级,分类的管理。使用图形化的业务流程管理界面,对业务流程的动态执行过程实时跟踪,对业务流程执行情况进行统计。使用流程监控分析工具,通过易操作的监控界面,实时跟踪流程,监控部门和员工的工作效率;进行实时的负载均衡;对比分析实际流程状况和预定义的性能指标。
        基于界面的业务流程的监控,查看流程当前的运行状态,包括:流程是否被激活,流程被执行到哪一个任务环节,某一任务是否已经被处理或正被处理等。

原创粉丝点击