一种投票判定的方法和装置的制造方法_3

文档序号:9843963阅读:来源:国知局
查找记录。本发明的实施例中数据库集群为Hbase集群,每次执行判定的判定明细都是存储在Hbase集群中,Hbase是一个高可靠性、高性能的分布式存储系统,它是面向列的、分布式的开源数据库,其仅需要普通的硬件配置就能够处理成千上万的行和列所组成的大型数据,Hbase数据库中除了存储判定过程明细信息外,还冗余存储了本次判定的投票配置的信息。本发明实施例的数据库系统也可以采用基于NO-SQL的mongoDB集群、基于传统数据库的oracle数据库集群、sqlserver集群、mysql集群等。对每个判定过程的明细信息,一般保存的主要字段包括:判定标识符、每个投票判定单元的当前判定表达式、判定状态、判定结果、是否有效、更新时间、创建时间等。由于有时会出现此次判定需要依赖于之前的判定过程的情况,因此,在进行明细信息的保存时,会记录字段“判定状态”。并根据不同的情况,“判定状态”可以是“判定完成”或“持续判定”。其中,“判定完成”是指当前判定明细表示的判定流程完成,返回的判定结果是基于真实的位运算结果;“持续判定”是指当前判定支持业务系统多次调用这次判定明细,且每次增量提交条件参数,返回的判定结果也是基于真实的位运算结果。
[0065]以下将介绍本发明实施例的投票判定系统的实现过程。如图5所示,是根据本发明实施例的投票判定过程的流程图。本实施例中以实时同步实时判定的过程为例。其中,在投票判定单元进行投票判定时,是以二进制码的位运算为例进行介绍。
[0066]用户在客户端输入判定规则的配置信息后,投票判定装置将根据用户输入的判定规则生成判定表达式,并对判定表达式进行基本语法格式校验,包括:是否使用了非英文字符、是否满足对称封闭、是否能json解析等,以保证该判定表达式是可用的。其中,生成判定表达式的过程介绍如下:
[0067]假设用户在判定规则设置界面定义了以数组表示的η个参数:[参数1,参数2,参数3,…,参数η],其中,η = 7,以及定义了3个投票判定单元:[voterl,voter2, voter3]来参与执行本次判定。根据每个投票判定单元的参数设置选项可以得到相应的二进制数字串,例如:假设voterl的二进制数字串为1010101,其表示在参数数组的1、3、5、7的位置为I,其他位置为O,也就是说voterl中的参数1、参数3、参数5和参数7有赋值,而其他参数未赋值。
[0068]用户在判定规则设置界面还可以配置投票判定装置的标识符id例如为VOteJstifyl,并且采用“与(&)”运算的方式进行二进制数字串的位运算。故而假设投票判定装置自动生成的判定表达式为如下形式:
[0069]{ id: votejstifyl, parmers:[参数I,参数2,参数3,…,参数7],voters: [ {id:voterl,voutePass:1010101},{id:voter2,voutePass:1010111},{id:voter3,voutePass:1010010}],
[0070]passjustify:{${voters}&lll>0}
[0071]}
[0072]其中,
[0073]{id:voterl,voutePass:1010101}、{id:voter2,voutePass:1010111}、{id:voter3, voutePass: 1010010}分别以表达式形式定义了三个投票判定单元¥<^61'1、¥<^6『2、voter3判定通过的标准,二进制数字串1010101、1010111、1010010分别为每个投票判定单元判“真”的判定参数(即第一判定参数),其为一种二进制形式的判真串;passjustify: {${voters}&111>0}以表达式的形式定义了二次判定通过的标准,S卩:将所有投票判定单元的第一判定结果组成的二进制数字串(流程判定参数)进行进一步判定,其中,数字串“111”给出了整个判定过程的判定通过标准(即第二判定参数),其也为一种二进制形式的判真串。至此,判定表达式已根据用户输入的判定规则自动生成,且经校验,符合语法规则。
[0074]之后,投票判定装置向zookeeper服务器获取投票判定装置的配置状态,并判定投票判定装置是否被锁定,若投票判定装置被锁定,则通知客户端投票判定装置被锁定,表示此时无法对投票判定装置进行配置,配置失败;若投票判定装置未被锁定,则表示此时可以对投票判定装置进行配置,将结果提交到zookeeper服务器,开始进入投票判定装置的配置更新阶段。
[0075]Zookeeper服务器根据投票判定装置的标识符id更新投票判定装置状态为锁定状态,之后,将触发zooke印er服务器的监听回调,实现对投票判定装置的配置更新。
[0076]配置更新完成后,业务系统向投票判定装置提交判定请求,投票判定装置将获取该判定请求的参数,并根据所获取的参数中是否包含之前判定过程的判定标识符,来判断此次判定过程是否依赖之前的判定过程。判定请求的参数包括判定标识符、参数的名称和参数的值。如果参数中包含有之前判定过程的判定标识符,则说明此次判定过程依赖于之前的判定过程,需要增量提交参数并根据判定标识符从数据库中获取之前判定过程的明细信息,之后封装成判定对象;否则,说明此次判定过程不依赖于之前的判定过程,直接将获取的参数封装成判定对象。
[0077]当判定对象封装完成后,将执行该判定对象的判定过程。首先是根据参数字段生成判定参数,即:根据判定对象中的参数字段,通过将判定对象的参数字段与预设的参数字段进行比较,将判定对象中的参数字段转换成二进制数字串,具体的转换方式:将业务系统传入的所有参数存入一个数组A中,构成参数字段,将判定对象的参数字段与判定表达式中包括的预设的参数字段(该预设的参数字段是根据用户自定义的参数构成的)进行比对,在本实施例中,将用户自定义的η个参数(n = 7)存储在另一个数组B中,构成预设的参数字段,判定对象包含的参数字段与预设的参数字段进行比对的方法为:将数组B和数组A进行比对,以确定数组B的哪几个参数所在的数组位置上有参数传入,并得出有参数传入的位置的数组下标,从而得到一个二进制串。例如,本实施例中,假设业务系统传入3个参数,通过比对,得出该3个参数分别对应数组B中数组下标为1、3、6的位置,则参数数组A中1、3、6的位置为1,其他位置为0,从而将该判定对象的参数字段转换成二进制数字串形式的判定参数(记为P):1010010。
[0078]生成二进制数字串形式的判定参数后,通过顺序链表的方式遍历所有投票判定单元分别对生成的判定参数进行判定。每个投票判定单元的判定过程例如:投票判定单元I,将判定参数P( 1010010)与该投票判定单元(voter I)的第一判定参数1010101进行“与(&)”逻辑位运算,即投票判定单元voter I的运算过程是:1010010&1010101 = = 1010000,得到二进制形式的当前投票判定单元的第一判定结果1010000,其与voter I的第一判定参数1010101不同,则当前投票判定单元voterl判定为“假”,从而voterl =0。
[0079]同理,将所述二进制串P依次与投票判定单元2、投票判定单元3的第一判定参数进行“与(&)”逻辑位运算,得到voter2的判定结果:1010010&1010111 = = 1010010,对照投票判定单元voter2的第一判定参数,可得voter2 = 0;
当前第3页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1