CN109783151B - 规则变更的方法和装置 - Google Patents
规则变更的方法和装置 Download PDFInfo
- Publication number
- CN109783151B CN109783151B CN201711103749.9A CN201711103749A CN109783151B CN 109783151 B CN109783151 B CN 109783151B CN 201711103749 A CN201711103749 A CN 201711103749A CN 109783151 B CN109783151 B CN 109783151B
- Authority
- CN
- China
- Prior art keywords
- rule
- engine
- application system
- change
- new
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明实施例提供一种规则变更的方法和装置,能够实现规则动态变更,在规则变更的同时,规则匹配无停顿,亦无需停止项目;此外,还可实现规则变更的实时通知。该方法包括:根据从规则发布中心获取的变更规则预构建新规则引擎;在所述新规则引擎预构建完成之前,使用原有规则引擎进行规则匹配,以及在所述新规则引擎预构建完成之后,使用所述新规则引擎进行规则匹配。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种规则变更的方法和装置。
背景技术
在应用***运行过程中,用于进行逻辑判断的条件就是***规则。例如某人不能访问企业管理***,或者低于1000元的报销无需总监审核等。在***运行的过程中,可能涉及***规则需要根据实际需求进行变更的情况。
现有技术中,通常采用如下两种规则变更的方案:
一、应用***停机进行规则变更
在应用***启动后,加载本项目中的规则文件,当规则发生变更时,停止项目,更新规则文件,然后重启项目以重新加载规则文件;
二、基于规则轮询和线程阻塞的规则变更
应用***启动后,每隔一段时间向规则管理中心询问,规则是否发生变化。当发现规则变化后,阻塞规则应用中的规则验证,进行规则引擎中规则的变更。
在实现本发明过程中,发明人发现现有技术中至少存在如下问题:
1、规则变更过程中,当前业务被阻塞停止,造成项目中断;2、规则变更不及时;3、所有应用***都轮询管理中心,规则管理中心压力过大。
发明内容
有鉴于此,本发明实施例提供一种规则变更的方法和装置,能够实现规则动态变更,在规则变更的同时,规则匹配无停顿,亦无需停止项目;此外,还可实现规则变更的实时通知。
为实现上述目的,根据本发明实施例的一个方面,提供了一种规则变更的方法。
本发明实施例的规则变更的方法包括:根据从规则发布中心获取的变更规则预构建新规则引擎;在所述新规则引擎预构建完成之前,使用原有规则引擎进行规则匹配,以及在所述新规则引擎预构建完成之后,使用所述新规则引擎进行规则匹配。
可选地,所述方法中,基于ZooKeeper服务器构建规则发布中心。
可选地,在根据从规则发布中心获取的变更规则预构建新规则引擎之前,所述方法还包括:在应用***启动之前,嵌入规则引擎包;以及在应用***启动之后,根据从所述规则发布中心获取的初始规则,利用所述规则引擎包进行规则引擎初始化。
可选地,所述方法还包括:将从所述规则发布中心获取的规则保存至本地。
可选地,在根据从规则发布中心获取的变更规则预构建新规则引擎之前,所述方法还包括:在所述规则发布中心中建立应用***节点,并在所述应用***节点上注册规则变更监听事件;以及当规则发生变更之后,获取规则管理中心推送至所述应用***节点中的变更规则。
可选地,所述方法还包括:在根据从规则发布中心获取的变更规则预构建新规则引擎的过程中,根据所述规则发布中心中预先配置的规则变更策略,确定适用所述新规则引擎的应用***服务器的范围和/或所述新规则引擎的生效时间。
为实现上述目的,根据本发明实施例的另一方面,提供了一种规则变更的装置。
本发明实施例的规则变更的装置包括:预构建模块,用于根据从规则发布中心获取的变更规则预构建新规则引擎;匹配模块,用于在所述新规则引擎预构建完成之前,使用原有规则引擎进行规则匹配,以及在所述新规则引擎预构建完成之后,使用所述新规则引擎进行规则匹配。
可选地,所述装置中,基于ZooKeeper服务器构建规则发布中心。
可选地,所述装置还包括:规则引擎初始化模块,用于在应用***启动之前,嵌入规则引擎包;以及在应用***启动之后,根据从所述规则发布中心获取的初始规则,利用所述规则引擎包进行规则引擎初始化。
可选地,所述装置还包括:保存模块,用于将从所述规则发布中心获取的规则保存至本地。
可选地,所述装置还包括:规则监听模块,用于在所述规则发布中心中建立应用***节点,并在所述应用***节点上注册规则变更监听事件;以及当规则发生变更之后,获取规则管理中心推送至所述应用***节点中的变更规则。
可选地,所述预构建模块还用于:根据所述规则发布中心中预先配置的规则变更策略,确定适用所述新规则引擎的应用***服务器的范围和/或所述新规则引擎的生效时间。
为实现上述目的,根据本发明实施例的再一方面,提供了一种电子设备。
本发明实施例的一种电子设备包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明实施例的规则变更的方法。
为实现上述目的,根据本发明实施例的又一方面,提供了一种计算机可读介质。
本发明实施例的一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现本发明实施例的规则变更的方法。
上述发明中的一个实施例具有如下优点或有益效果:因为采用在规则变更的过程中,采用预构建规则引擎的技术手段,所以克服了现有技术中规则变更需要停止项目,使得规则匹配被迫停顿的技术问题,进而达到规则动态变更,无需停止项目,且规则变更的同时,规则匹配无停顿的技术效果,保证应用***流畅,稳定运行;通过基于ZooKeeper构建规则发布中心,从而可以方便地实现分布式、实时的规则推送;通过在应用***启动之前,向应用***中嵌入规则引擎jar包,并在获取初始规则后,初始化规则引擎,从而可以便于应用***根据传入的参数进行规则匹配;并且在进行规则变更的同时,在预构建的新规则引擎尚未构建完成之前,可以继续采用原有规则引擎进行规则匹配,使得项目无需停止,规则匹配无需停顿;通过将从规则发布中心中获取的初始规则和变更规则保存至应用***的本地,从而可以在规则发布中心崩溃的情况下,仍然可以从本地获取规则,以构建应用***内的规则引擎,从而可以减轻应用***对规则发布中心和规则管理中心的依赖性;并且通过这种分层存储的机制,可以最大限度的减轻应用***访问规则管理中心的压力,提高规则管理中心的稳定性;通过在规则发布中心建立应用***节点,并注册监听事件,从而可以在规则发生变更时,实时地获取到变更之后的规则;通过在规则发布中心预先配置规则变更策略,从而可以根据规则发布需求实现规则的灰度发布或根据实际需求灵活调整规则引擎生效时间。
上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。
附图说明
附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
图1是根据本发明实施例的规则变更的方法的主要流程的示意图;
图2是适于实现本发明实施例的规则变更的方法的***的整体框架示意图;
图3是根据本发明实施例的规则变更的方法进行规则发布的逻辑示意图;
图4是根据本发明实施例的规则变更的方法实现规则变更的运行时序示意图;
图5是根据本发明实施例的规则变更的方法进行规则分级存储的示意图;
图6是根据本发明实施例的规则变更的装置的主要模块的示意图;
图7是本发明实施例可以应用于其中的示例性***架构图;
图8是适于用来实现本发明实施例的终端设备或服务器的计算机***的结构示意图。
具体实施方式
以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
本发明实施例的规则变更的技术方案,通过利用规则发布中心进行变更规则的实时,并且在规则变更的过程中,采用预构建规则引擎的方式实现规则变更过程中,规则匹配的无停顿。
以下为本发明实施例中涉及的一些技术术语的解释:
集群:通过一组松散集成的计算机软件和/或硬件连接起来高度紧密地协作完成计算工作;
分布式:一组电脑(computer),通过网络相互链接传递消息与通信后并协调它们的行为而形成的***;
http:超文本传输协议(HTTP,H8perTe7t Transfer Protocol)是互联网上应用最为广泛的一种网络协议;
反向代理服务器:方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器;
长连接:指在一个连接上可以连续发送多个数据包,在连接保持期间,如果没有数据包发送,需要双方发链路检测包;
规则引擎:是一种嵌入在应用程序中的组件,实现了将业务决策从应用程序代码中分离出来,并使用预定义的语义模块编写业务决策。接受数据输入,解释业务规则,并根据业务规则做出业务决策;
规则管理***:基于开源规则引擎drools构建的,规则编辑,发布,效验***。本发明实施例中的规则管理***还可以基于其他规则引擎构建,例如VisualRules,iLog等,其作用原理相同。本发明实施例中的规则管理***可以认为是由规则管理中心、规则发布中心以及嵌入应用***的规则引擎这几个部分组成;
规则匹配是指规则引擎根据传入的参数,进行条件的判断,该参数匹配引擎中哪条规则;
ZooKeeper:ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等.;
Zookeeper具有以下特点:
1.最终一致性:client不论连接到哪个Server,展示给它都是同一个视图,这是ZooKeeper最重要的性能;
2.可靠性:具有简单、健壮、良好的性能,如果消息m被到一台服务器接受,那么它将被所有的服务器接受;
3.实时性:Zookeeper保证客户端将在一个时间间隔范围内获得服务器的更新信息,或者服务器失效的信息。但由于网络延时等原因,Zookeeper不能保证两个客户端能同时得到刚更新的数据,如果需要最新数据,应该在读数据之前调用s8nc()接口;
4.等待无关(wait-free):慢的或者失效的client不得干预快速的client的请求,使得每个client都能有效的等待;
5.原子性:更新只能成功或者失败,没有中间状态;
6.顺序性:包括全局有序和偏序两种:全局有序是指如果在一台服务器上消息a在消息b前发布,则在所有Server上消息a都将在消息b前被发布;偏序是指如果一个消息b在消息a后被同一个发送者发布,a必将排在b前面。
内存:一种利用半导体技术做成的电子设备,用来存储数据;
Maven:是一个项目管理和综合工具。Maven提供了开发人员构建一个完整的生命周期框架。开发团队可以自动完成项目的基础工具建设,Maven使用标准的目录结构和默认构建生命周期。本发明实施例中,利用Maven将规则引擎jar包嵌入应用***中,以实现规则引擎的初始化;
Nginx:是一个高性能的HTTP和反向代理服务器;
Tomcat:是一个免费的开放源代码的Web应用服务器。本发明实施例中,规则管理中心可以是由Tomcat应用服务器组成的规则管理集群。
图1是根据本发明实施例的规则变更的方法的主要流程的示意图。
如图1所示,本发明实施例的规则变更的方法主要包括如下步骤:
步骤S101:根据从规则发布中心获取的变更规则预构建新规则引擎。本步骤的目的在于实现应用***实时获取变更后的***规则。本发明实施例中,可以基于ZooKeeper服务器构建规则发布中心。通过ZooKeeper的监听机制,可以实现变更规则的实时发布。
在步骤S101根据变更规则预构建规则引擎的过程中,本发明实施例的规则变更的方法还可以实现规则匹配的不停顿。如步骤S102所示。
步骤S102:在所述新规则引擎预构建完成之前,使用原有规则引擎进行规则匹配,以及在所述新规则引擎预构建完成之后,使用所述新规则引擎进行规则匹配。即规则变更过程中,无需项目中断,无需规则匹配的停顿。当有外部用户访问应用***,进行条件判断时,应用***根据输入的参数,选择规则引擎进行规则的匹配,而无需像现有技术中那样涉及规则变更就需要中断项目,重启应用***。
本发明实施例中,在根据从规则发布中心获取的变更规则预构建新规则引擎之前,还包括:在应用***启动之前,向应用***中嵌入规则引擎包,本发明实施例中即为规则引擎jar包;以及在应用***启动之后,根据从所述规则发布中心获取的初始规则,利用所述规则引擎包进行规则引擎初始化。
本发明实施例的规则变更的方法中,可以将从所述规则发布中心获取的初始规则和变更规则保存至本地,例如但不限于保存在本地磁盘中。如此可以实现当规则发布中心崩溃时,还可以从应用***本地获取规则进行规则引擎的构建。
在根据从规则发布中心获取的变更规则预构建新规则引擎之前,本发明实施例的规则变更的方法还可以包括:在所述规则发布中心中建立应用***节点,并在所述应用***节点上注册规则变更监听事件;以及当规则发生变更之后,获取规则管理中心推送至所述应用***节点中的变更规则,并根据获取的变更规则预构建新规则引擎。
在根据从规则发布中心获取的变更规则预构建新规则引擎的过程中,还可以根据所述规则发布中心中预先配置的规则变更策略,确定适用所述新规则引擎的应用***服务器的范围和/或所述新规则引擎的生效时间,从而可以实现规则的灰度发布,或者根据实际需求设置规则引擎的生效时间。
图2是适于实现本发明实施例的规则变更的方法的***的整体框架示意图。
如图2所示,本发明实施例中,用于实现规则变更的方法的规则管理***主要包括规则管理中心、规则发布中心以及包含在应用***中的规则引擎。
其中,规则管理中心主要进行规则的编辑和规则效验;应用***在规则发布中心正常情况下从规则发布中心获取规则,在规则发布中心崩溃情况下,可以直接从应用***的本地磁盘中获取规则,或者从规则管理中心获取规则,规则的分级存储机制有利于提升规则管理***的高可用性;此外,利用ZooKeeper节点的监听机制的规则发布中心可以实现对应用***的异步规则变更通知。
本发明实施例中,如果不包含规则发布中心,则为了实现规则的变更大致可以通过应用***定时轮询规则管理中心,或者采用消息队列MQ进行规则变更通知的方案进行。第一种方案中,应用***需要定时轮询规则管理中心,此方案弊端为规则变更不及时,轮询的机制会给规则管理中心造成很大的访问压力,影响规则的编辑测试;第二种方案中,采用消息队列MQ进行规则变更通知,此方案的弊端为应用***规则变更如果失败,则不能够重新从消息队列MQ获取此次变更规则。
本发明实施例中,在规则发布中心还可以针对不同的应用***设置不同的规则变更策略,如规则引擎定时生效、或即时生效等。此外,规则发布中心还可以对某一个应用***服务器集群的某台机器进行定向发布,便于规则的灰度发布。即在规则发布中心可以配置变更的规则在集群哪台机器上生效,通过观察单台机器运行结果,判断规则执行效果,以避免规则配置出现问题时影响更大范围。
图3是根据本发明实施例的规则变更的方法进行规则发布的逻辑示意图。
如图3所示:
1)规则管理中心初始化规则发布中心的***节点,并在***节点下存入规则数据;
2)应用***利用规则发布中心的ZooKeeper监听机制与规则发布中心建立连接,并且通过注册规则变更事件监听各自***节点变化。基于注册事件的监听机制,避免了轮询数据造成的时间间隔,一旦规则变更应用***马上感知变更;
3)在规则发布中心内,不同的应用***节点监听自己对应的规则总节点,当规则变更时候,规则管理中心会把变更规则通过规则总节点推到各***节点,而对不进行规则变更的***节点无影响。
图4是根据本发明实施例的规则变更的方法实现规则变更的运行时序示意图。
如图4所示:
本发明实施例中,在应用***启动时,初始化一个规则引擎,在应用***规则变更时,进行预构建过程,待构建完成后,替换原有规则引擎。在规则变更的过程中,采用预构建新规则引擎的方式进行规则变更,通过构建一个新规则引擎放入缓存中,避免了因为规则变更造成的应用***规则匹配的停顿。如图4,访问应用***的用户,在未构建好新规则引擎的情况下,使用原有的规则引擎进行匹配,同时在应用***的内存中构建新规则引擎;在新规则引擎构建完成之后,使用新规则引擎进行匹配。至此,本发明实施例中,在调用规则引擎匹配规则时,检查缓存中是否有新规则引擎,有新规则引擎则用新的进行匹配,删除旧有规则引擎,从而实现规则匹配的无阻塞。
本发明实施例中,如果不采用预构建的方式,则规则的变更生效过程中,需要规则引擎刷新规则(即指在原有规则引擎进行规则变更,需要刷新规则引擎规则),而规则引擎刷新规则的同时,是不能进行规则匹配的,需要对当前的业务线程进行阻塞,这样在规则变更的时候就会影响业务的执行效率,加大应用***的响应时间。
本发明实施例中,采用预构建规则引擎的方式,除了可以实现规则匹配的不停顿之外,还可以根据规则发布中心推送的规则变更策略决定适用新规则引擎的应用***的服务器的范围,或是规则引擎在什么时间生效。如果在原有规则引擎进行规则刷新,则无法在规则引擎的层面上进行规则变更策略的实现。
图5是根据本发明实施例的规则变更的方法进行规则分级存储的示意图。
如图5所示:
1)通常情况下应用***与规则发布中心通讯,获取规则,不依赖规则管理中心,这样,由于规则管理中心***更新或者***故障造成无法提供服务的情况下,不会影响应用***进行正常的规则加载;
2)规则发布中心自身不会进行程序更新,但是在极端情况下规则发布中心无法提供服务时,应用***可以通过加载缓存在本地磁盘的规则文件来构建应用***内的规则引擎,减轻了应用***对规则发布中心的依赖性。通过分层存储机制,最大限度的减轻了规则管理***对应用***的影响。
综上,本发明实施例中,实现规则变更方案的主要实施步骤如下:
一、部署规则管理中心
部署基于Nginx代理的tomcat的规则管理中心集群,在规则管理中心启动的时候,能够对规则管理中心相关节点进行检测和初始化。对规则管理中心集群的检测包括:Nginx代理服务器会通过例如但不限定于定时发送http请求到Tomcat应用服务器的方式进行规则管理中心集群中各服务器的检测,根据响应的结果,判断应用服务器是否正常运行,如果不正常提踢出集群,恢复则重新加入。
二、部署规则发布中心
选择至少2N+1台作为ZooKeeper服务器,安装ZooKeeper服务,ZooKeeper会自动选举出一个管理者leader负责ZooKeeper集群管理。在集群机器leader出现故障时,会从新选举一个新的leader来协调服务,以保障对外的服务可用性。此处,选择奇数台服务器的目的是防止在进行leader选举过程中,有两台机器票数相等,从而导致选不出leader的情况的发生。
三、通过jar包的方式将规则引擎嵌入应用***当中
应用***过Maven方式引入规则引擎jar包,在应用***启动的时候进行规则引擎的初始化和规则变更事件在规则发布中心当中的注册,并将本应用***的规则缓存入本服务器磁盘。
四、规则变更发布
当业务人员在规则管理中心维护新的规则,进行变更规则的发布操作后,规则发布中心通知要变更规则的应用***,需要规则变更的应用***切换规则,采用新的规则进行规则匹配。
根据本发明实施例的规则发布的方法可以看出,因为采用在规则变更的过程中,采用预构建规则引擎的技术手段,所以克服了现有技术中规则变更需要停止项目,使得规则匹配被迫停顿的技术问题,进而达到规则动态变更,无需停止项目,且规则变更的同时,规则匹配无停顿的技术效果,保证应用***流畅,稳定运行;通过基于ZooKeeper构建规则发布中心,从而可以方便地实现分布式、实时的规则推送;通过在应用***启动之前,向应用***中嵌入规则引擎jar包,并在获取初始规则后,初始化规则引擎,从而可以便于应用***根据传入的参数进行规则匹配;并且在进行规则变更的同时,在预构建的新规则引擎尚未构建完成之前,可以继续采用原有规则引擎进行规则匹配,使得项目无需停止,规则匹配无需停顿;通过将从规则发布中心中获取的初始规则和变更规则保存至应用***的本地,从而可以在规则发布中心崩溃的情况下,仍然可以从本地获取规则,以构建应用***内的规则引擎,从而可以减轻应用***对规则发布中心和规则管理中心的依赖性;并且通过这种分层存储的机制,可以最大限度的减轻应用***访问规则管理中心的压力,提高规则管理中心的稳定性;通过在规则发布中心建立应用***节点,并注册监听事件,从而可以在规则发生变更时,实时地获取到变更之后的规则;通过在规则发布中心预先配置规则变更策略,从而可以根据规则发布需求实现规则的灰度发布或根据实际需求灵活调整规则引擎生效时间。
图6是根据本发明实施例的规则变更的装置的主要模块的示意图。
如图6所示,本发明实施例的一种规则变更的装置600主要包括:预构建模块601和匹配模块602。
其中,预构建模块601可用于根据从规则发布中心获取的变更规则预构建新规则引擎;匹配模块602可用于在所述新规则引擎预构建完成之前,使用原有规则引擎进行规则匹配,以及在所述新规则引擎预构建完成之后,使用所述新规则引擎进行规则匹配。
本发明实施例的装置600中,可以基于ZooKeeper服务器构建规则发布中心。
此外,装置600还可包括:规则引擎初始化模块(图中未示出),用于在应用***启动之前,嵌入规则引擎包;以及在应用***启动之后,根据从所述规则发布中心获取的初始规则,利用所述规则引擎包进行规则引擎初始化。
装置600还可包括:保存模块(图中未示出),用于将从所述规则发布中心获取的规则保存至本地。
另外,装置600还可包括:规则监听模块(图中未示出),用于在所述规则发布中心中建立应用***节点,并在所述应用***节点上注册规则变更监听事件;以及当规则发生变更之后,获取规则管理中心推送至所述应用***节点中的变更规则。
本发明实施例中,预构建模块601还可用于:根据所述规则发布中心中预先配置的规则变更策略,确定适用所述新规则引擎的应用***服务器的范围和/或所述新规则引擎的生效时间。
从以上描述可以看出,因为采用在规则变更的过程中,采用预构建规则引擎的技术手段,所以克服了现有技术中规则变更需要停止项目,使得规则匹配被迫停顿的技术问题,进而达到规则动态变更,无需停止项目,且规则变更的同时,规则匹配无停顿的技术效果,保证应用***流畅,稳定运行;通过基于ZooKeeper构建规则发布中心,从而可以方便地实现分布式、实时的规则推送;通过在应用***启动之前,向应用***中嵌入规则引擎jar包,并在获取初始规则后,初始化规则引擎,从而可以便于应用***根据传入的参数进行规则匹配;并且在进行规则变更的同时,在预构建的新规则引擎尚未构建完成之前,可以继续采用原有规则引擎进行规则匹配,使得项目无需停止,规则匹配无需停顿;通过将从规则发布中心中获取的初始规则和变更规则保存至应用***的本地,从而可以在规则发布中心崩溃的情况下,仍然可以从本地获取规则,以构建应用***内的规则引擎,从而可以减轻应用***对规则发布中心和规则管理中心的依赖性;并且通过这种分层存储的机制,可以最大限度的减轻应用***访问规则管理中心的压力,提高规则管理中心的稳定性;通过在规则发布中心建立应用***节点,并注册监听事件,从而可以在规则发生变更时,实时地获取到变更之后的规则;通过在规则发布中心预先配置规则变更策略,从而可以根据规则发布需求实现规则的灰度发布或根据实际需求灵活调整规则引擎生效时间。
图7示出了可以应用本发明实施例的规则变更方法或规则变更装置的示例性***架构700。
如图7所示,***架构700可以包括终端设备701、702、703,网络704和服务器705。网络704用以在终端设备701、702、703和服务器705之间提供通信链路的介质。网络704可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备701、702、703通过网络704与服务器705交互,以接收或发送消息等。终端设备701、702、703上可以安装有各种通讯客户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等(仅为示例)。
终端设备701、702、703可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
服务器705可以是提供各种服务的服务器,例如对用户利用终端设备701、702、703所浏览的购物类网站提供支持的后台管理服务器(仅为示例)。后台管理服务器可以对接收到的产品信息查询请求等数据进行分析等处理,并将处理结果(例如目标推送信息、产品信息--仅为示例)反馈给终端设备。
需要说明的是,本发明实施例所提供的规则变更方法一般由服务器705执行,相应地,规则变更装置一般设置于服务器705中。
应该理解,图7中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
下面参考图8,其示出了适于用来实现本发明实施例的终端设备的计算机***800的结构示意图。图8示出的终端设备仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图8所示,计算机***800包括中央处理单元(CPU)801,其可以根据存储在只读存储器(ROM)802中的程序或者从存储部分808加载到随机访问存储器(RAM)803中的程序而执行各种适当的动作和处理。在RAM 803中,还存储有***800操作所需的各种程序和数据。CPU 801、ROM 802以及RAM 803通过总线804彼此相连。输入/输出(I/O)接口805也连接至总线804。
以下部件连接至I/O接口805:包括键盘、鼠标等的输入部分806;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分807;包括硬盘等的存储部分808;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分809。通信部分809经由诸如因特网的网络执行通信处理。驱动器810也根据需要连接至I/O接口805。可拆卸介质811,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器810上,以便于从其上读出的计算机程序根据需要被安装入存储部分808。
特别地,根据本发明公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分809从网络上被下载和安装,和/或从可拆卸介质811被安装。在该计算机程序被中央处理单元(CPU)801执行时,执行本发明的***中限定的上述功能。
需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本发明各种实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本发明实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块也可以设置在处理器中,例如,可以描述为:一种处理器包括预构建模块和匹配模块。其中,这些模块的名称在某种情况下并不构成对该模块本身的限定,例如,预构建模块还可以描述为“用于根据从规则发布中心获取的变更规则预构建新规则引擎”。
作为另一方面,本发明还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该设备包括:根据从规则发布中心获取的变更规则预构建新规则引擎;在所述新规则引擎预构建完成之前,使用原有规则引擎进行规则匹配,以及在所述新规则引擎预构建完成之后,使用所述新规则引擎进行规则匹配。
根据本发明实施例的技术方案,因为采用在规则变更的过程中,采用预构建规则引擎的技术手段,所以克服了现有技术中规则变更需要停止项目,使得规则匹配被迫停顿的技术问题,进而达到规则动态变更,无需停止项目,且规则变更的同时,规则匹配无停顿的技术效果,保证应用***流畅,稳定运行;通过基于ZooKeeper构建规则发布中心,从而可以方便地实现分布式、实时的规则推送;通过在应用***启动之前,向应用***中嵌入规则引擎jar包,并在获取初始规则后,初始化规则引擎,从而可以便于应用***根据传入的参数进行规则匹配;并且在进行规则变更的同时,在预构建的新规则引擎尚未构建完成之前,可以继续采用原有规则引擎进行规则匹配,使得项目无需停止,规则匹配无需停顿;通过将从规则发布中心中获取的初始规则和变更规则保存至应用***的本地,从而可以在规则发布中心崩溃的情况下,仍然可以从本地获取规则,以构建应用***内的规则引擎,从而可以减轻应用***对规则发布中心和规则管理中心的依赖性;并且通过这种分层存储的机制,可以最大限度的减轻应用***访问规则管理中心的压力,提高规则管理中心的稳定性;通过在规则发布中心建立应用***节点,并注册监听事件,从而可以在规则发生变更时,实时地获取到变更之后的规则;通过在规则发布中心预先配置规则变更策略,从而可以根据规则发布需求实现规则的灰度发布或根据实际需求灵活调整规则引擎生效时间。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。
Claims (10)
1.一种规则变更的方法,其特征在于,包括:
根据从规则发布中心获取的变更规则预构建新规则引擎;
在所述新规则引擎预构建完成之前,使用原有规则引擎进行规则匹配,以及在所述新规则引擎预构建完成之后,使用所述新规则引擎进行规则匹配;
在根据从规则发布中心获取的变更规则预构建新规则引擎的过程中,根据所述规则发布中心中预先配置的规则变更策略,确定适用所述新规则引擎的应用***服务器的范围和/或所述新规则引擎的生效时间;
在根据从规则发布中心获取的变更规则预构建新规则引擎之前,所述方法还包括:
在所述规则发布中心中建立应用***节点,并在所述应用***节点上注册规则变更监听事件;以及当规则发生变更之后,获取规则管理中心推送至所述应用***节点中的变更规则。
2.根据权利要求1所述的方法,其特征在于,所述方法中,基于ZooKeeper服务器构建规则发布中心。
3.根据权利要求1所述的方法,其特征在于,在根据从规则发布中心获取的变更规则预构建新规则引擎之前,所述方法还包括:
在应用***启动之前,嵌入规则引擎包;以及
在应用***启动之后,根据从所述规则发布中心获取的初始规则,利用所述规则引擎包进行规则引擎初始化。
4.根据权利要求1或3所述的方法,其特征在于,所述方法还包括:将从所述规则发布中心获取的规则保存至本地。
5.一种规则变更的装置,其特征在于,包括:
预构建模块,用于根据从规则发布中心获取的变更规则预构建新规则引擎;根据所述规则发布中心中预先配置的规则变更策略,确定适用所述新规则引擎的应用***服务器的范围和/或所述新规则引擎的生效时间;
匹配模块,用于在所述新规则引擎预构建完成之前,使用原有规则引擎进行规则匹配,以及在所述新规则引擎预构建完成之后,使用所述新规则引擎进行规则匹配;
规则监听模块,用于在所述规则发布中心中建立应用***节点,并在所述应用***节点上注册规则变更监听事件;以及当规则发生变更之后,获取规则管理中心推送至所述应用***节点中的变更规则。
6.根据权利要求5所述的装置,其特征在于,所述装置中,基于ZooKeeper服务器构建规则发布中心。
7.根据权利要求5所述的装置,其特征在于,所述装置还包括:规则引擎初始化模块,用于在应用***启动之前,嵌入规则引擎包;以及在应用***启动之后,根据从所述规则发布中心获取的初始规则,利用所述规则引擎包进行规则引擎初始化。
8.根据权利要求5或7所述的装置 ,其特征在于,所述装置还包括:保存模块,用于将从所述规则发布中心获取的规则保存至本地。
9.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-4中任一所述的方法。
10.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1-4中任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711103749.9A CN109783151B (zh) | 2017-11-10 | 2017-11-10 | 规则变更的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711103749.9A CN109783151B (zh) | 2017-11-10 | 2017-11-10 | 规则变更的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109783151A CN109783151A (zh) | 2019-05-21 |
CN109783151B true CN109783151B (zh) | 2022-07-05 |
Family
ID=66484424
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711103749.9A Active CN109783151B (zh) | 2017-11-10 | 2017-11-10 | 规则变更的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109783151B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110297859B (zh) * | 2019-06-10 | 2021-07-06 | 恩亿科(北京)数据科技有限公司 | 处理实时数据的方法和装置 |
CN111767157B (zh) * | 2019-08-07 | 2024-05-17 | 北京京东尚科信息技术有限公司 | 基于服务网格的请求处理方法和装置 |
CN111639084A (zh) * | 2020-04-10 | 2020-09-08 | 深圳市华智有为科技有限公司 | 动态规则生成方法、***以及应用终端、管理终端 |
CN112988277B (zh) * | 2021-03-31 | 2023-06-30 | 建信金融科技有限责任公司 | 规则文件加载方法、装置、服务器及介质 |
CN112799647B (zh) * | 2021-04-12 | 2021-11-23 | 四川新网银行股份有限公司 | 一种面向业务人员的规则引擎适配器装置的识别方法 |
CN113341757A (zh) * | 2021-07-02 | 2021-09-03 | 佛山市淇特科技有限公司 | 智能家居设备联动方法、装置、设备和存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104536325A (zh) * | 2014-12-31 | 2015-04-22 | 西安诺瓦电子科技有限公司 | 一种确定led控制***策略的方法及装置 |
CN105426748A (zh) * | 2014-09-18 | 2016-03-23 | 腾讯科技(深圳)有限公司 | 一种规则文件的更新方法和设备 |
CN105656989A (zh) * | 2015-12-10 | 2016-06-08 | 天津海量信息技术有限公司 | 基于蜂群思维的分布式计算方法 |
CN106372778A (zh) * | 2016-08-23 | 2017-02-01 | 江苏亿科达科技发展有限公司 | 基于动态规则引擎的车辆调度***及方法 |
CN107133039A (zh) * | 2017-04-28 | 2017-09-05 | 九次方大数据信息集团有限公司 | 规则引擎的构建方法和装置 |
-
2017
- 2017-11-10 CN CN201711103749.9A patent/CN109783151B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105426748A (zh) * | 2014-09-18 | 2016-03-23 | 腾讯科技(深圳)有限公司 | 一种规则文件的更新方法和设备 |
CN104536325A (zh) * | 2014-12-31 | 2015-04-22 | 西安诺瓦电子科技有限公司 | 一种确定led控制***策略的方法及装置 |
CN105656989A (zh) * | 2015-12-10 | 2016-06-08 | 天津海量信息技术有限公司 | 基于蜂群思维的分布式计算方法 |
CN106372778A (zh) * | 2016-08-23 | 2017-02-01 | 江苏亿科达科技发展有限公司 | 基于动态规则引擎的车辆调度***及方法 |
CN107133039A (zh) * | 2017-04-28 | 2017-09-05 | 九次方大数据信息集团有限公司 | 规则引擎的构建方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN109783151A (zh) | 2019-05-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109783151B (zh) | 规则变更的方法和装置 | |
WO2020177533A1 (zh) | 电子票据标识分配方法、电子票据生成方法、装置及*** | |
CN113254466B (zh) | 一种数据处理方法、装置、电子设备和存储介质 | |
US8396961B2 (en) | Dynamic control of transaction timeout periods | |
CN109245908B (zh) | 一种主从集群切换的方法和装置 | |
CN111460129B (zh) | 标识生成的方法、装置、电子设备和存储介质 | |
CN110120961B (zh) | 一种分布式服务集群及其路由同步的方法 | |
CN108712457A (zh) | 基于Nginx反向代理的后端服务器动态负载调整方法及装置 | |
US11656902B2 (en) | Distributed container image construction scheduling system and method | |
CN111258627A (zh) | 一种接口文档生成方法和装置 | |
CN110351366A (zh) | 一种互联网应用的服务调度方法、***及计算机可读存储介质 | |
CN113127732A (zh) | 业务数据的获取方法、装置、计算机设备和存储介质 | |
CN111597033A (zh) | 一种任务调度方法和装置 | |
CN111338834B (zh) | 数据存储方法和装置 | |
CN113079098B (zh) | 路由更新的方法、装置、设备和计算机可读介质 | |
CN112187916B (zh) | 一种跨***的数据同步方法与装置 | |
CN114968636A (zh) | 一种故障处理的方法和装置 | |
CN115190125A (zh) | 一种缓存集群的监控方法和装置 | |
CN115686813A (zh) | 一种资源调度方法、装置、电子设备和存储介质 | |
CN112559001B (zh) | 更新应用的方法和装置 | |
CN113296968A (zh) | 地址列表更新方法、装置、介质及电子设备 | |
CN110661857A (zh) | 一种数据同步方法和装置 | |
CN114760360B (zh) | 请求响应方法、装置、电子设备及计算机可读存储介质 | |
CN112749042B (zh) | 一种应用运行方法和装置 | |
CN113259431B (zh) | 服务调用方法、服务调用装置、电子设备以及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |