实时系统参数数据的非阻塞更新和访问方法技术方案

技术编号:10964194 阅读:163 留言:0更新日期:2015-01-28 16:31
本发明专利技术公开一种实时系统参数数据的非阻塞更新和访问方法,实时系统包括参数服务器端和参数客户端,参数服务器端所在主机上设置有数据内存块,且主机上运行有可完成将参数从参数源加载到内存中并完成参数排序建模检错的进程或线程;参数客户端运行有通过访问参数进行业务处理的进程或线程。本发明专利技术的方法通过改善参数存放机制,在参数服务器端和参数客户端更新及数据访问过程中,配合进程级、线程级标志位,以及数据注册、搜索、拉取建模连接分离的机制,实现非阻塞的参数更新,避免参数更新导致系统停止、业务处理中断或参数更新互斥。

【技术实现步骤摘要】
【专利摘要】本专利技术公开一种,实时系统包括参数服务器端和参数客户端,参数服务器端所在主机上设置有数据内存块,且主机上运行有可完成将参数从参数源加载到内存中并完成参数排序建模检错的进程或线程;参数客户端运行有通过访问参数进行业务处理的进程或线程。本专利技术的方法通过改善参数存放机制,在参数服务器端和参数客户端更新及数据访问过程中,配合进程级、线程级标志位,以及数据注册、搜索、拉取建模连接分离的机制,实现非阻塞的参数更新,避免参数更新导致系统停止、业务处理中断或参数更新互斥。【专利说明】
本专利技术涉及实时系统中参数数据更新
,特别是一种避免更新阻塞造成业务终止或暂停的。
技术介绍
参数是大型系统运行的必要数据,且随着大数据时代的到来,大型系统参数的数据量越来越大,参数所代表的模型越来越复杂,更新参数所消耗的cpu、内存、时间越来越多,参数更新的次数越来越频繁。对于实时系统,如电信业在线计费系统、银行系统里面的实时转账系统来说,将当前业务停下来去更新参数是不可接受的:当电信业boss系统里的实时在线计费系统停下业务去更新参数,会大大延长用户拨打电话时接通时间。 目前针对实时系统的参数更新,一般是在由进程里的一个参数更新线程完成拉取参数放入私有内存、建模等更新操作后,业务线程再获取临界资源后完成参数的更新:对于一个主机上有同一个软件的多个进程实例情况而言,每个进程加载一份参数会消耗大量的内存,多个进程的参数更新操作需要消耗更多的cpu,多个进程的参数更新操作如果在同一时段内进程参数更新操作会加大参数源的压力,进程完成参数更新操作后,进程内部的业务线程需要中断当前业务争抢临界资源来完成参数更新;对于一个主机上只有一个软件的一个进程实例情况而言,进程完成参数更新操作后,进程内部的业务线程需要中断当前业务争抢临界资源来完成参数更新。
技术实现思路
本专利技术要解决的技术问题为:通过改善参数存放机制,配合进程级、线程级标志位,以及数据注册、搜索、拉取建模连接分离的机制,实现非阻塞的参数更新,避免参数更新导致系统停止、业务处理中断或参数更新互斥。 本专利技术采取的技术方案为:,实时系统包括参数服务器端和参数客户端,参数服务器端所在主机上设置有数据内存块,且主机上运行有可完成将参数从参数源加载到内存中并完成参数排序建模检错的进程或线程;参数客户端运行有通过访问参数进行业务处理的进程或线程;所述数据内存块数量为3块,分别定义为O号数据内存块、I号数据内存块和控制内存块,其中O号数据内存块、I号数据内存块用于存放参数数据,控制内存块用于存放控制信息数据;上述控制信息数据包括:最新参数所在内存块ID,临界资源锁,参数个数N,上次死锁解除时刻,更新标记,O号数据内存块与I号数据内存块内数据内存大小和key、各参数偏移量、各参数记录数以及各参数客户端的注册信息;其中参数客户端进程注册信息包括进程启动信息、进程ID、更新线程状态、上次更新完成时刻、上次检查更新时刻、进程使用参数内存块ID、线程集合和线程集合内各元素对应的使用参数内存块ID ;实时系统中参数数据更新包括参数客户端的参数更新,以及参数服务器端的参数更新;参数客户端的参数更新,包括进程探测和线程探测,其中:进程探测步骤为:进程中的更新线程检测本进程使用内存块ID与参数服务器端控制区内存的最新参数所在内存块ID是否一致,如果不一致则更新为最新参数所在内存块ID,并等待各业务线程完成线程探测步骤;如果等待超时则强制将对应业务线程所用内存块ID更新为进程使用内存块ID ;线程探测步骤为:各业务线程检测本线程所用内存块ID与其所属进程使用参数内存块ID是否一致,如果不一致则更新为其所属进程当前所用参数内存块ID ;参数服务器端的参数更新,包括以下步骤:a)根据控制内存的更新标记判断是否需要进行参数更新:如果不需要,则执行进入指定时间的睡眠状态,重复步骤a);如果需要进行参数更新,则执行步骤b);b)检测控制内存的参数客户端注册信息里各个线程使用参数内存块ID与控制内存的最新参数所在内存块ID是否一致:如果不一致则执行进入指定时间的睡眠状态,等待参数客户端完成更新参数,如果等待超过指定时间则强制将控制内存的参数客户端注册信息里各个线程使用参数内存块ID变更为控制内存的最新参数所在内存块ID,然后执行步骤C),如果等待未超过指定时间则重复步骤b);如果一致,则执行步骤c);c)从参数源拉取各参数记录总数,从而获得存放参数的数据内存所需容量S,假设控制内存的最新参数所在内存ID为O,即位于O号内存中,如果S比I号内存容量大,则重建I号内存至容量至少为S ;同理控制内存的最新参数所在内存ID为1,如果S比O号内存容量大,则重建O号内存至容量至少为S ;d)从参数源拉取各参数并完成检错、排序和模型建立,变更最新参数所在内存块ID,然后重复步骤b)至d);实时系统中,参数服务器端运行的进程或线程以及参数客户端运行的进程或线程,通过搜索部件、参数注册部件以及内存连接部件访问数据内存块中的参数数据以及控制信息数据;其中:搜索部件从参数注册部件中获取可访问的参数集合及每个参数偏移量和记录数,以定位到参数数据所在的数据内存块进行数据访问;参数注册部件声明需要加载的参数数据,并为每个参数数据分配一个唯一的身份ID ;参数客户端及参数服务器端运行的进程或线程依次通过搜索部件、参数注册部件和内存连接部件访问O号数据内存块和I号数据内存块中的参数数据;客户端参数更新线程以及服务器端进程分别依次通过搜索部件和内存连接部件访问控制内存块中的控制信息数据。 上述参数注册部件为每个参数数据分配的唯一身份ID,可用于在参数服务器端或参数客户端在访问控制内存块时能够快速定位各参数数据对应的控制信息数据。客户端参数更新线程依次通过搜索部件和连接部件读写自己在控制内存块中的客户端注册信息,以完成参数更新操作,将自己在控制内存块中的客户端注册信息中“进程使用参数内存块ID”改写成与“最新参数所在内存块ID” 一致;服务器端进程依次通过搜索部件和内存连接部件对控制内存块进行读写操作。 基于本专利技术的内存块设置方式,本专利技术对于参数数据的存放方式分为共享内存方式和私有内存方式。为了防止业务线程阻塞,本专利技术参数数据的存放方式可根据一台主机上需要访问相同参数的进程数是否大于I来判断,如果大于1,则采用共享内存存放模式进行参数数据的存放;如果等于1,则采用私有内存存放模式进行参数数据的存放。另外如果为了维护方便(方便查看参数数据正确性等),在等于I的情况下也同样可以采用共享内存存放模式进行参数数据的存放。 共享内存方式下,本专利技术将所述O号数据内存块以及I号数据内存块中,其一用于存储参数服务器端接收的最新参数数据,另一数据内存块用于存储参数服务器端最近一次更新后的参数数据,以提供给参数客户端进行数据访问。 私有内存方式下客户端进程和服务器端进程实际为同一个进程,且只有一个客户端进程;客户端更新线程和服务端更新线程实际合并为同一个线程;且不存在进程探测。 上述内存存放方式皆能够实现参数更新过程中将进程级标志位与线程级标志位相结合完成参数数据的非阻塞更新。 有益效果相比于现有的参数更新方式本文档来自技高网
...
<a href="http://www.xjishu.com/zhuanli/55/201410661946.html" title="实时系统参数数据的非阻塞更新和访问方法原文来自X技术">实时系统参数数据的非阻塞更新和访问方法</a>

【技术保护点】
实时系统参数数据的非阻塞更新和访问方法,其特征是,实时系统包括参数服务器端和参数客户端,参数服务器端所在主机上设置有数据内存块,且主机上运行有可完成将参数从参数源加载到内存中并完成参数排序建模检错的进程或线程;参数客户端运行有通过访问参数进行业务处理的进程或线程;所述数据内存块数量为3块,分别定义为0号数据内存块、1号数据内存块和控制内存块,其中0号数据内存块、1号数据内存块用于存放参数数据,控制内存块用于存放控制信息数据;上述控制信息数据包括:最新参数所在内存块ID,临界资源锁,参数个数N,上次死锁解除时刻,更新标记,0号数据内存块与1号数据内存块内数据内存大小和key、各参数偏移量、各参数记录数以及各参数客户端的注册信息;其中参数客户端进程注册信息包括进程启动信息、进程ID、更新线程状态、上次更新完成时刻、上次检查更新时刻、进程使用参数内存块ID、线程集合和线程集合内各元素对应的使用参数内存块ID;实时系统中参数数据更新包括参数客户端的参数更新,以及参数服务器端的参数更新;参数客户端的参数更新,包括进程探测和线程探测,其中:进程探测步骤为:进程中的更新线程检测本进程使用内存块ID与参数服务器端控制区内存的最新参数所在内存块ID是否一致,如果不一致则更新为最新参数所在内存块ID,并等待各业务线程完成线程探测步骤;如果等待超时则强制将对应业务线程所用内存块ID更新为进程使用内存块ID;线程探测步骤为:各业务线程检测本线程所用内存块ID与其所属进程使用参数内存块ID是否一致,如果不一致则更新为其所属进程当前所用参数内存块ID;参数服务器端的参数更新,包括以下步骤:a)根据控制内存的更新标记判断是否需要进行参数更新:如果不需要,则执行进入指定时间的睡眠状态,重复步骤a);如果需要进行参数更新,则执行步骤b);b)检测控制内存的参数客户端注册信息里各个线程使用参数内存块ID与控制内存的最新参数所在内存块ID是否一致:     如果不一致则执行进入指定时间的睡眠状态,等待参数客户端完成更新参数,如果等待超过指定时间则强制将控制内存的参数客户端注册信息里各个线程使用参数内存块ID变更为控制内存的最新参数所在内存块ID,然后执行步骤c),如果等待未超过指定时间则重复步骤b);    如果一致,则执行步骤c);c)从参数源拉取各参数记录总数,从而获得存放参数的数据内存所需容量S,假设控制内存的最新参数所在内存ID为0,即位于0号内存中,如果S比1号内存容量大,则重建1号内存至容量至少为S;同理控制内存的最新参数所在内存ID为1,如果S比0号内存容量大,则重建0号内存至容量至少为S;d) 从参数源拉取各参数并完成检错、排序和模型建立,变更最新参数所在内存块ID,然后重复步骤b)至d);实时系统中,参数服务器端运行的进程或线程以及参数客户端运行的进程或线程,通过搜索部件、参数注册部件以及内存连接部件访问数据内存块中的参数数据以及控制信息数据;其中:搜索部件从参数注册部件中获取可访问的参数集合及每个参数偏移量和记录数,以定位到参数数据所在的数据内存块进行数据访问;参数注册部件声明需要加载的参数数据,并为每个参数数据分配一个唯一的身份ID;参数客户端及参数服务器端运行的进程或线程依次通过搜索部件、参数注册部件和内存连接部件访问0号数据内存块和1号数据内存块中的参数数据;参数客户端参数更新线程以及服务器端进程分别依次通过搜索部件和内存连接部件访问控制内存块中的控制信息数据。...

【技术特征摘要】

【专利技术属性】
技术研发人员:王涛赵广成
申请(专利权)人:亚信科技南京有限公司
类型:发明
国别省市:江苏;32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1