计费系统参数装载共享方法、装置及计算设备与流程

文档序号:28317988发布日期:2022-01-04 19:57阅读:154来源:国知局
计费系统参数装载共享方法、装置及计算设备与流程

1.本发明实施例涉及信息技术领域,具体涉及一种计费系统参数装载共享方法、装置及计算设备。


背景技术:

2.计费应用在运行时,需要获取如流程设计、数据配置、系统变量等公共数据参数,通常都是通过参数管理容器(bpm)程序加载到运行主机的共享内存中,本机程序通过共享内存键值获取数据,并通过a/b区切换的方式,保证应用访问的快速切换,不中断业务。具体地,从计费参数物理数据库中获取参数数据,采用全量和增量两种方式,将计费参数数据加载到各个计费应用主机的共享内存中(a/b区),节点上的计费应用通过进程间通信(inter-process communication,ipc)方式访问本机节点上的共享参数。
3.目前系统已支持参数加载、刷新、共享访问等能力,但是在运营与运维方面,仍旧有如下问题无法解决:bpm参数当前数据量庞大,主机从物理数据库加载速度慢、占用内存较多,造成应用程序启动慢,无法实现节点的快速伸缩特性。大量应用主机同时从物理库加载参数,会过多占用物理数据库连接数,并造成物数据库装载时i/o压力大。目前各省bpm都是采用任务调度器(taskmon)调度模式,由于参数过大,需要分批手工控制。各省业务主机非常多,每个主机独立管理bpm难度加大。平台即服务(platform-as-a-service,paas)云化后,由于计费应用容器本身存在可能销毁的问题,通过计费应用加载参数数据存在安全和效率问题。


技术实现要素:

4.鉴于上述问题,本发明实施例提供了一种计费系统参数装载共享方法、装置及计算设备,克服了上述问题或者至少部分地解决了上述问题。
5.根据本发明实施例的一个方面,提供了一种计费系统参数装载共享方法,所述方法包括:通过参数管理容器从第一节点上的物理数据库获取参数数据,并加载到所述第一节点的共享内存中;通过所述参数管理容器从所述第一节点的所述共享内存中导出所述参数数据至单独文件,形成种子文件;通过所述参数管理容器通知多个第二节点从所述第一节点的所述共享内存中获取所述种子文件,并行加载到所述第二节点的共享内存中;计费时,通过计费应用从对应的所述共享内存中获取所述参数数据进行计费。
6.在一种可选的方式中,所述方法还包括:通过参数管理容器进行参数加载管理,包括感知参数数据变更、从物理数据库或种子文件中装载刷新参数数据、导出参数数据作为所述种子文件;通过参数管理容器进行不同节点的共享内存间的参数数据传播管理以及种子文件冲突检测管理;通过参数管理容器进行共享内存管理。
7.在一种可选的方式中,所述通过参数管理容器进行参数加载管理,包括:所述参数数据发生变化时,触发参数加载任务,并将所述参数加载任务注册到zk中;通过参数管理容器从zk中抢占参数加载任务,抢占到所述参数加载任务后从所述物理参数库或种子文件中
执行参数加载操作。
8.在一种可选的方式中,所述通过参数管理容器进行不同节点的共享内存间的参数数据传播管理,包括:所述参数管理容器通过传播方式通知多个所述第二节点获取所述种子文件并执行参数数据加载;将所述种子文件顺序分配给预设的参数类型列表,不同的参数类型设置不同的所述种子文件;在所述种子文件分发时,对所述种子文件传输进行流量控制。
9.在一种可选的方式中,所述通过参数管理容器进行种子文件冲突检测管理,包括:若当前触发的参数数据及范围对应的数据源存在参数管理容器未处理完成的临时节点,则报错退出;若当前触发的参数数据及范围对应的数据源上记录触发序号不等于scope上记录的触发序号,并且记录的状态为成功,则加载所述参数管理容器报错退出。
10.在一种可选的方式中,所述通过参数管理容器进行共享内存管理,包括:通过所述参数管理容器采用匿名的方式进行构建参数锁、装载锁、刷新锁、注册锁以及分区锁;参数分区共享内存采用匿名的方式进行构建,并将生成的共享内存的标识存入文件bpm_param;通过所述参数管理容器装载逻辑构建文件bpm_param及内容,若文件存在且完整,则所述参数管理容器装载逻辑从文件里获取参数信息;若内存键值不存在或文件不完整,则重新构建内存并生成文件内容;对于其他访问或处理所述参数管理容器参数的应用,仅支持从文件里获取数据,若文件不完整,则退出访问。
11.在一种可选的方式中,所述方法还包括:对所述参数管理容器增加参数控制,在所述参数管理容器升级时删除使用的共享内存和信号量以及bpm_param文件;采用文件锁的方式对所述参数管理容器进行异常检测。
12.根据本发明实施例的另一个方面,提供了一种计费系统参数装载共享装置,所述装置包括:加载单元,用于通过参数管理容器从第一节点上的物理数据库获取参数数据,并加载到所述第一节点的共享内存中;种子生成单元,用于通过所述参数管理容器从所述第一节点的所述共享内存中导出所述参数数据至单独文件,形成种子文件;通知单元,用于通过所述参数管理容器通知多个第二节点从所述第一节点的所述共享内存中获取所述种子文件,并行加载到所述第二节点的共享内存中;计费单元,用于计费时,通过各节点的计费应用从对应的所述共享内存中获取所述参数数据进行计费。
13.根据本发明实施例的另一方面,提供了一种计算设备,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;
14.所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行上述计费系统参数装载共享方法的步骤。
15.根据本发明实施例的又一方面,提供了一种计算机存储介质,所述存储介质中存储有至少一可执行指令,所述可执行指令使所述处理器执行上述计费系统参数装载共享方法的步骤。
16.本发明实施例通过参数管理容器从第一节点上的物理数据库获取参数数据,并加载到所述第一节点的共享内存中;通过所述参数管理容器从所述第一节点的所述共享内存中导出所述参数数据至单独文件,形成种子文件;通过所述参数管理容器通知多个第二节点从所述第一节点的所述共享内存中获取所述种子文件,并行加载到所述第二节点的共享
内存中;计费时,通过计费应用从对应的所述共享内存中获取所述参数数据进行计费,能够极大减轻对物理数据库的频繁访问造成的i/o压力,并大量节省数据库连接数,极大提高参数加载效率。
17.上述说明仅是本发明实施例技术方案的概述,为了能够更清楚了解本发明实施例的技术手段,而可依照说明书的内容予以实施,并且为了让本发明实施例的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
18.通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
19.图1示出了本发明实施例提供的计费系统参数装载共享方法的流程示意图;
20.图2示出了本发明实施例提供的计费系统参数装载共享方法的种子文件生成和传播示意图;
21.图3示出了本发明实施例提供的计费系统参数装载共享装置的结构示意图;
22.图4示出了本发明实施例提供的计算设备的结构示意图。
具体实施方式
23.下面将参照附图更详细地描述本发明的示例性实施例。虽然附图中显示了本发明的示例性实施例,然而应当理解,可以以各种形式实现本发明而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本发明,并且能够将本发明的范围完整的传达给本领域的技术人员。
24.图1示出了本发明实施例提供的计费系统参数装载共享方法的流程示意图。该计费系统参数装载共享方法主要应用于服务器。如图1所示,该计费系统参数装载共享方法包括:
25.步骤s11:通过参数管理容器从第一节点上的物理数据库获取参数数据,并加载到所述第一节点的共享内存中。
26.在本发明实施例中,参数管理容器主设置在第一节点中,每个节点都设置有一个参数管理容器,以管理第一节点中的共享内存。如图2所示,通过参数管理容器从物理数据库获取参数数据并加载到共享内存中。单个节点只有一个bpm。本发明实施例通过daemonset方式,把bpm当成公共资源,在物理机/虚拟机(pm/vm)启动时进行参数预加载加速进入可服务访问状态。基于pm/vm的计费应用(pod/容器)在新生成时,在文件中获取bpm内存库键值,直接内部关联访问参数数据。其中,daemonset为后台守护进程控制器,daemonset确保在所有有资格的节点(node)上只运行某个容器组(pod)的一个实例,即保证在每个node上都运行一个容器副本。常用于部署一些集群的日志、监控或者管理类后台应用进程。
27.步骤s12:通过所述参数管理容器从所述第一节点的所述共享内存中导出所述参数数据至单独文件,形成种子文件。
28.在本发明实施例中,参数管理容器负责从共享内存中导出种子文件,具体读取共
享内存,将参数数据先导出到临时参数文件中,导出完成后再将临时文件改为正式文件,此正式文件作为种子文件存放到共享目录中,供传播到各节点去进行参数加载。
29.步骤s13:通过所述参数管理容器通知多个第二节点从所述第一节点的所述共享内存中获取所述种子文件,并行加载到所述第二节点的共享内存中。
30.在本发明实施例中,通过参数管理容器进行参数加载管理,包括感知参数数据变更、从物理数据库或种子文件中装载刷新参数数据、导出参数数据作为所述种子文件等。将bpm节点信息、参数加载任务等信息注册到zk,并监控节点变更。触发节点变更后,支持如下逻辑:首先检查触发记录是否需要处理,调用bpm进程,获取当前bpm触发序号bpm_seq,无内存,为-1。对于bpm触发序号>=zk上记录的触发序号,丢弃此触发记录,否则执行后续流程。
31.当参数数据发生变化时,由人工或者自动触发生成参数加载任务,并将加载任务注册到zookeeper(zk)节点中。触发进程启动后,从节点代理获取唯一序号,作为本次触发序号,连接参数注册的zookeeper。通过参数管理容器从zk中抢占参数加载任务,抢占到所述参数加载任务后从所述物理参数库或种子文件中执行参数加载操作。具体地,各参数管理容器订阅zookeeper中加载任务状态,有加载刷新任务时,参数管理容器从zookeeper抢占加载任务(抢占装载锁),抢占到加载任务的参数管理容器从物理参数数据库或种子文件中执行加载操作。
32.抢占到加载任务的参数管理容器,打开共享内存、信号量、参数文件后,执行装载/刷新逻辑,对数据进行排序处理后装载到主机共享内存中。对于不做流控的直接数据库(db)方式,不需抢占锁,直接执行后续流程。若按流控从db获取参数,创建zk临时顺序节点(/billing/bpm/dbload/触发序号/dbn),节点序号的顺序在流控数量内,则表示抢占到装载锁,执行后续的流程。若超过流量数量,watch上层节点,接着抢占装载锁。若触发类型为升级,调用bpm,清理共享内存、信号量、参数文件。
33.调用bpm执行装载/刷新逻辑,装载方式为db或种子文件。若装载方式为从物理数据库装载则访问物理数据库中的参数表,将其装载到共享内存中;若装载方式为从种子文件装载,则首先访问种子文件,将种子文件中的参数数据加载到共享内存中。
34.如执行失败,负责生成种子文件的进程,累计失败次数到zk节点,如果累计失败次数超过配置的次数(global默认1),设置zk上归属数据源(datasoure,ds)和所需传播ds的状态为失败((/billing/bpm/参数类型/scope/ds:xxx),删除构建的临时节点,重新处理[参数队列]。其中,归属ds是指生成原始种子文件的第一节点,传播ds是指传播种子文件的第二节点。
[0035]
抢占到加载任务的参数管理容器负责从共享内存中导出种子文件,读取共享内存,具体由负责生成种子的进程导出(dump)读取物理库中的参数表,将参数数据先导出到临时参数文件中,导出完成后再将临时文件改为正式文件,此正式文件作为种子文件存放到共享目录中,供传播到各节点去进行参数加载。本发明实施例通过单独容器管理参数加载,与计费应用相互隔离,通过增量种子文件传播并行刷新加载,通过种子文件传播并行加载,加载速度快,数据库无压力。
[0036]
种子文件生成后,由参数传播管理通过传播方式通知给其它节点,其它节点通过获取种子文件后执行参数加载。通过参数管理容器进行不同节点的共享内存间的参数数据传播管理以及种子文件冲突检测管理。所述参数管理容器通过传播方式通知多个所述第二
节点获取所述种子文件并执行参数数据加载;将所述种子文件顺序分配给预设的参数类型列表,不同的参数类型设置不同的所述种子文件;在所述种子文件分发时,对所述种子文件传输进行流量控制。通过生成的种子文件传播,多个节点并行加载参数数据。
[0037]
在本发明实施例中,种子模式执行分配逻辑。目前仅支持在共享存储间传播种子,不同的参数类型有不同的种子,种子的传播范围为指定的范围列表。种子模式或流控数量>0,若涉及的触发范围在多个zk,需报错。如此可以简化种子并发控制、流控。例如,参数bill_aix、bill_suse、acct,4个种子,则bill_aix分配2个,bill_suse、acct各分配一个,若不够分配,则所有参数类型均分配一个种子。根据参数类型和触发范围,从zk获取影响的ds列表。zk节点/billing/bpm/参数类型/scope/ds:xxx。若相同参数类型,获取的ds列表为空,则报错;若存在相同的ds,表示指定的触发范围有重叠,报错;从获取的ds列表里,按分配的种子数量随机选择作为种子的ds(不同参数类型,种子尽量分配不同的ds),剩余的ds顺序分配给种子,作为其传播ds。
[0038]
还设置zk数据。若触发范围为节点:数据设置到zk节点/billing/bpm/参数类型/node/env(nodeid),节点不存在需报错。注册信息为json格式,内容包括:触发序号、触发时间,各触发参数。若触发范围不是节点:数据设置到zk节点/billing/bpm/参数类型/scope,节点不存在需报错。注册信息为json格式,内容如下:触发序号、触发时间、各触发参数。若装载方式为种子,则附加种子分配结果,包括参数类型,范围,种子ds,传播ds。例如,[参数类型:[{种子ds1}:[{传播ds},

],

],

]。注:注册的zk逻辑包括范围,本次触发的不同范围不能包含相同的ds,所有注册的内容不需要包含范围。进程处理完上述逻辑后,退出。
[0039]
在种子文件分发时,对文件传输进行流量控制,保障网络流量可控。获取需传播的ds,若zk上对应的ds设置的触发序号>=zk_seq,则排除此ds。对于流控数量为0,为需要传播的ds,都开一个线程传播种子。流控数量>0,为所有需传播的ds,都构建一个临时顺序节点/billing/bpm/spread/触发序号/sp,序号顺序在流控数量内,开线程传播种子,传播完成后,删除对应临时顺序节点,超过流控数量的,循环等待,序号顺序在流控数量内,开始传播。每传播完一个ds,将传播结果设置到zk上对应的ds上(/billing/bpm/参数类型/scope/ds:xxx)。所有负责的ds都传播完,设置触发序号和状态到归属的ds上。
[0040]
在本发明实施例中,种子文件方式的参数触发,支持并行装载冲突检测,每个zk都需检测。进行种子文件冲突检测时,若当前触发的参数数据及范围对应的数据源存在参数管理容器未处理完成的临时节点,则报错退出;若当前触发的参数数据及范围对应的数据源(ds)上记录触发序号不等于scope上记录的触发序号,具体是指第一节点上记录的参数数据加载刷新的触发序号与第二节点上记录的参数数据加载刷新的触发序号为不同批次,并且记录的状态为成功,表示存在并行装载风险,则加载所述参数管理容器报错退出。报错信息要打出详细装载失败的原因,如果是ds废弃,需要手工删除zk上对应目录。
[0041]
在本发明实施例中,还通过参数管理容器进行共享内存管理。通过所述参数管理容器采用匿名的方式进行构建参数锁、装载锁、刷新锁、注册锁以及分区锁。其中分区锁对应的semid存入文件bpm_param,其他锁的semid,记录到共享内存参数分区信息(struct param_mgr_part),该共享内存参数分区信息为新增的信息。参数分区共享内存采用匿名的方式进行构建,并将生成的共享内存的标识(shmid)存入文件bpm_param;通过所述参数管理容器装载逻辑构建文件bpm_param及内容,若文件存在且完整,则所述参数管理容器装载
逻辑从文件里获取参数信息;若内存键值不存在或文件不完整,则重新构建内存并生成文件内容;对于其他访问或处理所述参数管理容器参数的应用,仅支持从文件里获取数据,若文件不完整,则退出访问。本发明实施例通过检测文件的end来检测文件是否完整。bpm间互斥锁[clock(param_mgr_key+3)],由文件bpm_param.lock锁替代。
[0042]
为方便bpm升级,本发明实施例还对所述参数管理容器增加参数控制,在所述参数管理容器升级时删除使用的共享内存和信号量以及bpm_param文件,删除前加互斥锁和装载锁。bpm参数加载,增加可选参数,用于指定参数集。参数集记录到参数共享内存区,当刷新参数时,参数集来源于参数共享内存区。bpm程序,装载和刷新逻辑,增加可选参数,用于指定参数触发序号。bpm的共享内存参数分区信息(struct param_mgr_part)新增字段用于记录参数触发序号。bpm程序,新增参数,用于打印参数触发序号。
[0043]
本发明实施例采用文件锁的方式对所述参数管理容器进行异常检测。具体地,容器化下,应用容器采用文件锁的方式检测参数管理容器是否异常退出。对于使用参数的进程,若按容器部署(登记my_ip),使用加锁文件的方式对参数管理容器进行异常检测,文件不存在或加锁成功,则表示此参数管理容器不存在,同时删除存在的锁文件。对于使用参数的进程,若按普通进程部署(未登记my_ip),当执行检测的进程部署在容器里时,不做异常检测;当执行检测的进程按普通进程部署,按原逻辑检测(kill pid)。对于使用参数的进程,配置了my_ip,且my_ip<>host_ip,则在初始化参数时,生成文件~/host_agent/bpm/[env(bpm_type)/]lock||6位pid||env(my_ip),并加锁此文件。进程退出时,删除生成的锁文件。
[0044]
步骤s14:计费时,通过计费应用从对应的所述共享内存中获取所述参数数据进行计费。
[0045]
在本发明实施例中,第一节点的计费应用从第一节点的共享内存中获取相关参数数据进行计费,其他节点的计费应用则从其对应的共享内存中获取相关参数数据进行计费。本发明实施例采用种子文件的模式,由第一节点生成参数种子文件,存放于共享文件系统中,点到点传播装载参数数据文件到各节点,各节点并行加载到主机内存中,极大提高参数加载效率和参数加载自动化处理程度。参数管理容器通过单点将参数数据从物理数据库加载到共享内存后再导出到种子文件中,并存放于分布式文件存储(如nfs)中共享使用,各应用节点并行将种子文件装载到主机内存,极大减轻对物理数据库的频繁访问造成的i/o压力以及大量节省数据库连接数。
[0046]
本发明实施例通过参数管理容器从第一节点上的物理数据库获取参数数据,并加载到所述第一节点的共享内存中;通过所述参数管理容器从所述第一节点的所述共享内存中导出所述参数数据至单独文件,形成种子文件;通过所述参数管理容器通知多个第二节点从所述第一节点的所述共享内存中获取所述种子文件,并行加载到所述第二节点的共享内存中;计费时,通过计费应用从对应的所述共享内存中获取所述参数数据进行计费,能够极大减轻对物理数据库的频繁访问造成的i/o压力,并大量节省数据库连接数,极大提高参数加载效率。
[0047]
图3示出了本发明实施例的计费系统参数装载共享装置的结构示意图。如图3所示,该计费系统参数装载共享装置包括:加载单元301、种子生成单元302、通知单元303、计费单元304以及管理单元305。其中:
[0048]
加载单元301用于通过参数管理容器从第一节点上的物理数据库获取参数数据,并加载到所述第一节点的共享内存中;种子生成单元302用于通过所述参数管理容器从所述第一节点的所述共享内存中导出所述参数数据至单独文件,形成种子文件;通知单元303用于通过所述参数管理容器通知多个第二节点从所述第一节点的所述共享内存中获取所述种子文件,并行加载到所述第二节点的共享内存中;计费单元304用于计费时,通过各节点的计费应用从对应的所述共享内存中获取所述参数数据进行计费。
[0049]
在一种可选的方式中,管理单元305用于:通过参数管理容器进行参数加载管理,包括感知参数数据变更、从物理数据库或种子文件中装载刷新参数数据、导出参数数据作为所述种子文件;通过参数管理容器进行不同节点的共享内存间的参数数据传播管理以及种子文件冲突检测管理;通过参数管理容器进行共享内存管理。
[0050]
在一种可选的方式中,管理单元305还用于:所述参数数据发生变化时,触发参数加载任务,并将所述参数加载任务注册到zk中;通过参数管理容器从zk中抢占参数加载任务,抢占到所述参数加载任务后从所述物理参数库或种子文件中执行参数加载操作。
[0051]
在一种可选的方式中,管理单元305还用于:所述参数管理容器通过传播方式通知多个所述第二节点获取所述种子文件并执行参数数据加载;将所述种子文件顺序分配给预设的参数类型列表,不同的参数类型设置不同的所述种子文件;在所述种子文件分发时,对所述种子文件传输进行流量控制。
[0052]
在一种可选的方式中,管理单元305还用于:若当前触发的参数数据及范围对应的数据源存在参数管理容器未处理完成的临时节点,则报错退出;若当前触发的参数数据及范围对应的数据源上记录触发序号不等于scope上记录的触发序号,并且记录的状态为成功,则加载所述参数管理容器报错退出。
[0053]
在一种可选的方式中,管理单元305还用于:通过所述参数管理容器采用匿名的方式进行构建参数锁、装载锁、刷新锁、注册锁以及分区锁;参数分区共享内存采用匿名的方式进行构建,并将生成的共享内存的标识存入文件bpm_param;通过所述参数管理容器装载逻辑构建文件bpm_param及内容,若文件存在且完整,则所述参数管理容器装载逻辑从文件里获取参数信息;若内存键值不存在或文件不完整,则重新构建内存并生成文件内容;对于其他访问或处理所述参数管理容器参数的应用,仅支持从文件里获取数据,若文件不完整,则退出访问。
[0054]
在一种可选的方式中,管理单元305还用于:对所述参数管理容器增加参数控制,在所述参数管理容器升级时删除使用的共享内存和信号量以及bpm_param文件;采用文件锁的方式对所述参数管理容器进行异常检测。
[0055]
本发明实施例通过参数管理容器从第一节点上的物理数据库获取参数数据,并加载到所述第一节点的共享内存中;通过所述参数管理容器从所述第一节点的所述共享内存中导出所述参数数据至单独文件,形成种子文件;通过所述参数管理容器通知多个第二节点从所述第一节点的所述共享内存中获取所述种子文件,并行加载到所述第二节点的共享内存中;计费时,通过计费应用从对应的所述共享内存中获取所述参数数据进行计费,能够极大减轻对物理数据库的频繁访问造成的i/o压力,并大量节省数据库连接数,极大提高参数加载效率。
[0056]
本发明实施例提供了一种非易失性计算机存储介质,所述计算机存储介质存储有
至少一可执行指令,该计算机可执行指令可执行上述任意方法实施例中的计费系统参数装载共享方法。
[0057]
可执行指令具体可以用于使得处理器执行以下操作:
[0058]
通过参数管理容器从第一节点上的物理数据库获取参数数据,并加载到所述第一节点的共享内存中;
[0059]
通过所述参数管理容器从所述第一节点的所述共享内存中导出所述参数数据至单独文件,形成种子文件;
[0060]
通过所述参数管理容器通知多个第二节点从所述第一节点的所述共享内存中获取所述种子文件,并行加载到所述第二节点的共享内存中;
[0061]
计费时,通过计费应用从对应的所述共享内存中获取所述参数数据进行计费。
[0062]
在一种可选的方式中,所述可执行指令使所述处理器执行以下操作:
[0063]
通过参数管理容器进行参数加载管理,包括感知参数数据变更、从物理数据库或种子文件中装载刷新参数数据、导出参数数据作为所述种子文件;
[0064]
通过参数管理容器进行不同节点的共享内存间的参数数据传播管理以及种子文件冲突检测管理;
[0065]
通过参数管理容器进行共享内存管理。
[0066]
在一种可选的方式中,所述可执行指令使所述处理器执行以下操作:
[0067]
所述参数数据发生变化时,触发参数加载任务,并将所述参数加载任务注册到zk中;
[0068]
通过参数管理容器从zk中抢占参数加载任务,抢占到所述参数加载任务后从所述物理参数库或种子文件中执行参数加载操作。
[0069]
在一种可选的方式中,所述可执行指令使所述处理器执行以下操作:
[0070]
所述参数管理容器通过传播方式通知多个所述第二节点获取所述种子文件并执行参数数据加载;
[0071]
将所述种子文件顺序分配给预设的参数类型列表,不同的参数类型设置不同的所述种子文件;
[0072]
在所述种子文件分发时,对所述种子文件传输进行流量控制。
[0073]
在一种可选的方式中,所述可执行指令使所述处理器执行以下操作:
[0074]
若当前触发的参数数据及范围对应的数据源存在参数管理容器未处理完成的临时节点,则报错退出;
[0075]
若当前触发的参数数据及范围对应的数据源上记录触发序号不等于scope上记录的触发序号,并且记录的状态为成功,则加载所述参数管理容器报错退出。
[0076]
在一种可选的方式中,所述可执行指令使所述处理器执行以下操作:
[0077]
通过所述参数管理容器采用匿名的方式进行构建参数锁、装载锁、刷新锁、注册锁以及分区锁;
[0078]
参数分区共享内存采用匿名的方式进行构建,并将生成的共享内存的标识存入文件bpm_param;
[0079]
通过所述参数管理容器装载逻辑构建文件bpm_param及内容,若文件存在且完整,则所述参数管理容器装载逻辑从文件里获取参数信息;若内存键值不存在或文件不完整,
则重新构建内存并生成文件内容;
[0080]
对于其他访问或处理所述参数管理容器参数的应用,仅支持从文件里获取数据,若文件不完整,则退出访问。
[0081]
在一种可选的方式中,所述可执行指令使所述处理器执行以下操作:
[0082]
对所述参数管理容器增加参数控制,在所述参数管理容器升级时删除使用的共享内存和信号量以及bpm_param文件;
[0083]
采用文件锁的方式对所述参数管理容器进行异常检测。
[0084]
本发明实施例通过参数管理容器从第一节点上的物理数据库获取参数数据,并加载到所述第一节点的共享内存中;通过所述参数管理容器从所述第一节点的所述共享内存中导出所述参数数据至单独文件,形成种子文件;通过所述参数管理容器通知多个第二节点从所述第一节点的所述共享内存中获取所述种子文件,并行加载到所述第二节点的共享内存中;计费时,通过计费应用从对应的所述共享内存中获取所述参数数据进行计费,能够极大减轻对物理数据库的频繁访问造成的i/o压力,并大量节省数据库连接数,极大提高参数加载效率。
[0085]
本发明实施例提供了一种计算机程序产品,所述计算机程序产品包括存储在计算机存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,使所述计算机执行上述任意方法实施例中的计费系统参数装载共享方法。
[0086]
可执行指令具体可以用于使得处理器执行以下操作:
[0087]
通过参数管理容器从第一节点上的物理数据库获取参数数据,并加载到所述第一节点的共享内存中;
[0088]
通过所述参数管理容器从所述第一节点的所述共享内存中导出所述参数数据至单独文件,形成种子文件;
[0089]
通过所述参数管理容器通知多个第二节点从所述第一节点的所述共享内存中获取所述种子文件,并行加载到所述第二节点的共享内存中;
[0090]
计费时,通过计费应用从对应的所述共享内存中获取所述参数数据进行计费。
[0091]
在一种可选的方式中,所述可执行指令使所述处理器执行以下操作:
[0092]
通过参数管理容器进行参数加载管理,包括感知参数数据变更、从物理数据库或种子文件中装载刷新参数数据、导出参数数据作为所述种子文件;
[0093]
通过参数管理容器进行不同节点的共享内存间的参数数据传播管理以及种子文件冲突检测管理;
[0094]
通过参数管理容器进行共享内存管理。
[0095]
在一种可选的方式中,所述可执行指令使所述处理器执行以下操作:
[0096]
所述参数数据发生变化时,触发参数加载任务,并将所述参数加载任务注册到zk中;
[0097]
通过参数管理容器从zk中抢占参数加载任务,抢占到所述参数加载任务后从所述物理参数库或种子文件中执行参数加载操作。
[0098]
在一种可选的方式中,所述可执行指令使所述处理器执行以下操作:
[0099]
所述参数管理容器通过传播方式通知多个所述第二节点获取所述种子文件并执行参数数据加载;
[0100]
将所述种子文件顺序分配给预设的参数类型列表,不同的参数类型设置不同的所述种子文件;
[0101]
在所述种子文件分发时,对所述种子文件传输进行流量控制。
[0102]
在一种可选的方式中,所述可执行指令使所述处理器执行以下操作:
[0103]
若当前触发的参数数据及范围对应的数据源存在参数管理容器未处理完成的临时节点,则报错退出;
[0104]
若当前触发的参数数据及范围对应的数据源上记录触发序号不等于scope上记录的触发序号,并且记录的状态为成功,则加载所述参数管理容器报错退出。
[0105]
在一种可选的方式中,所述可执行指令使所述处理器执行以下操作:
[0106]
通过所述参数管理容器采用匿名的方式进行构建参数锁、装载锁、刷新锁、注册锁以及分区锁;
[0107]
参数分区共享内存采用匿名的方式进行构建,并将生成的共享内存的标识存入文件bpm_param;
[0108]
通过所述参数管理容器装载逻辑构建文件bpm_param及内容,若文件存在且完整,则所述参数管理容器装载逻辑从文件里获取参数信息;若内存键值不存在或文件不完整,则重新构建内存并生成文件内容;
[0109]
对于其他访问或处理所述参数管理容器参数的应用,仅支持从文件里获取数据,若文件不完整,则退出访问。
[0110]
在一种可选的方式中,所述可执行指令使所述处理器执行以下操作:
[0111]
对所述参数管理容器增加参数控制,在所述参数管理容器升级时删除使用的共享内存和信号量以及bpm_param文件;
[0112]
采用文件锁的方式对所述参数管理容器进行异常检测。
[0113]
本发明实施例通过参数管理容器从第一节点上的物理数据库获取参数数据,并加载到所述第一节点的共享内存中;通过所述参数管理容器从所述第一节点的所述共享内存中导出所述参数数据至单独文件,形成种子文件;通过所述参数管理容器通知多个第二节点从所述第一节点的所述共享内存中获取所述种子文件,并行加载到所述第二节点的共享内存中;计费时,通过计费应用从对应的所述共享内存中获取所述参数数据进行计费,能够极大减轻对物理数据库的频繁访问造成的i/o压力,并大量节省数据库连接数,极大提高参数加载效率。
[0114]
图4示出了本发明实施例提供的计算设备的结构示意图,本发明具体实施例并不对设备的具体实现做限定。
[0115]
如图4所示,该计算设备可以包括:处理器(processor)402、通信接口(communications interface)404、存储器(memory)406、以及通信总线408。
[0116]
其中:处理器402、通信接口404、以及存储器406通过通信总线408完成相互间的通信。通信接口404,用于与其它设备比如客户端或其它服务器等的网元通信。处理器402,用于执行程序410,具体可以执行上述计费系统参数装载共享方法实施例中的相关步骤。
[0117]
具体地,程序410可以包括程序代码,该程序代码包括计算机操作指令。
[0118]
处理器402可能是中央处理器cpu,或者是特定集成电路asic(application specific integrated circuit),或者是被配置成实施本发明实施例的一个或各个集成电
路。设备包括的一个或各个处理器,可以是同一类型的处理器,如一个或各个cpu;也可以是不同类型的处理器,如一个或各个cpu以及一个或各个asic。
[0119]
存储器406,用于存放程序410。存储器406可能包含高速ram存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
[0120]
程序410具体可以用于使得处理器402执行以下操作:
[0121]
通过参数管理容器从第一节点上的物理数据库获取参数数据,并加载到所述第一节点的共享内存中;
[0122]
通过所述参数管理容器从所述第一节点的所述共享内存中导出所述参数数据至单独文件,形成种子文件;
[0123]
通过所述参数管理容器通知多个第二节点从所述第一节点的所述共享内存中获取所述种子文件,并行加载到所述第二节点的共享内存中;
[0124]
计费时,通过计费应用从对应的所述共享内存中获取所述参数数据进行计费。
[0125]
在一种可选的方式中,所述程序410使所述处理器执行以下操作:
[0126]
通过参数管理容器进行参数加载管理,包括感知参数数据变更、从物理数据库或种子文件中装载刷新参数数据、导出参数数据作为所述种子文件;
[0127]
通过参数管理容器进行不同节点的共享内存间的参数数据传播管理以及种子文件冲突检测管理;
[0128]
通过参数管理容器进行共享内存管理。
[0129]
在一种可选的方式中,所述程序410使所述处理器执行以下操作:
[0130]
所述参数数据发生变化时,触发参数加载任务,并将所述参数加载任务注册到zk中;
[0131]
通过参数管理容器从zk中抢占参数加载任务,抢占到所述参数加载任务后从所述物理参数库或种子文件中执行参数加载操作。
[0132]
在一种可选的方式中,所述程序410使所述处理器执行以下操作:
[0133]
所述参数管理容器通过传播方式通知多个所述第二节点获取所述种子文件并执行参数数据加载;
[0134]
将所述种子文件顺序分配给预设的参数类型列表,不同的参数类型设置不同的所述种子文件;
[0135]
在所述种子文件分发时,对所述种子文件传输进行流量控制。
[0136]
在一种可选的方式中,所述程序410使所述处理器执行以下操作:
[0137]
若当前触发的参数数据及范围对应的数据源存在参数管理容器未处理完成的临时节点,则报错退出;
[0138]
若当前触发的参数数据及范围对应的数据源上记录触发序号不等于scope上记录的触发序号,并且记录的状态为成功,则加载所述参数管理容器报错退出。
[0139]
在一种可选的方式中,所述程序410使所述处理器执行以下操作:
[0140]
通过所述参数管理容器采用匿名的方式进行构建参数锁、装载锁、刷新锁、注册锁以及分区锁;
[0141]
参数分区共享内存采用匿名的方式进行构建,并将生成的共享内存的标识存入文件bpm_param;
[0142]
通过所述参数管理容器装载逻辑构建文件bpm_param及内容,若文件存在且完整,则所述参数管理容器装载逻辑从文件里获取参数信息;若内存键值不存在或文件不完整,则重新构建内存并生成文件内容;
[0143]
对于其他访问或处理所述参数管理容器参数的应用,仅支持从文件里获取数据,若文件不完整,则退出访问。
[0144]
在一种可选的方式中,所述程序410使所述处理器执行以下操作:
[0145]
对所述参数管理容器增加参数控制,在所述参数管理容器升级时删除使用的共享内存和信号量以及bpm_param文件;
[0146]
采用文件锁的方式对所述参数管理容器进行异常检测。
[0147]
本发明实施例通过参数管理容器从第一节点上的物理数据库获取参数数据,并加载到所述第一节点的共享内存中;通过所述参数管理容器从所述第一节点的所述共享内存中导出所述参数数据至单独文件,形成种子文件;通过所述参数管理容器通知多个第二节点从所述第一节点的所述共享内存中获取所述种子文件,并行加载到所述第二节点的共享内存中;计费时,通过计费应用从对应的所述共享内存中获取所述参数数据进行计费,能够极大减轻对物理数据库的频繁访问造成的i/o压力,并大量节省数据库连接数,极大提高参数加载效率。
[0148]
在此提供的算法或显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明实施例也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
[0149]
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
[0150]
类似地,应当理解,为了精简本发明并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明实施例的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
[0151]
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
[0152]
此外,本领域的技术人员能够理解,尽管在此的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
[0153]
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。上述实施例中的步骤,除有特殊说明外,不应理解为对执行顺序的限定。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1