基于规则引擎在运营商系统中的应用

(整期优先)网络出版时间:2020-10-14
/ 2

基于规则引擎在运营商系统中的应用

葛宝龙

中国联合网络通信有限公司哈尔滨软件研究院 黑龙江 哈尔滨 150040

摘要:为了解决电信运营商业务推陈出新较频繁时,业务规则难以在短周期下支撑,规则校验流程繁琐、耗时长等问题,提出并建立以规则引擎为核心,结合微服务技术的电信运营商规则检验平台。利用Drools规则引擎,将复杂多变的电信业务规则从电信运营系统的硬代码抽离出来,针对电信业务设计多种规则模型,并以此构建电信业务规则,存放在规则库中。设计多种检验引擎,初始化时将规则加载到对应引擎中,减少构建规则时间,并行检验,缩短检验时长。利用MQ消息中间件可靠传递、广播等特性,做到发布规则流程低耦合,实现规则实时动态发布,改善了业务上线的周期。

关键词:规则引擎;动态发布;检验平台

0 引言

近年来,随着互联网业务的不断发展,各大互联网巨头如阿里、腾讯、百度等在电信领域上纷纷与电信运营商合作,推出了各类适用不同消费群体的定制型号卡产品,优惠的资费套餐吸引着各类用户前来办理业务。另外eSIM等一号多终端业务陆续发展,携号转网业务的普及,给人们的生活带来了巨大的方便。但随之而来运营商业务推陈出新较频繁,而且业务检验流程较复杂,所以如何快速支撑业务规则上线,快速、准确的检验已成为电信运营商迫切的需要。

规则引擎是由推理引擎发展而来,实现了将业务决策从应用代码中分离出来,且在大量数据和规则情况下具有较好的执行效率[1]。单体架构的系统有自身的缺点,如复杂业务系统中的分布式应用场景,自动释放底层资源及如何快速灵活部署等诸多需求,单体架构还没有完美的解决方案。为了克服单体架构的缺点,企业陆续开始基于微服务架构构建自己业务软件系统[2]。本文将规则引擎应用于运营商中,以规则引擎为核心,运用微服务、MQ消息中间件、Redis缓存等技术,构建规则检验平台,实现规则快速更新、快速检验。

1 运营商系统规则检验现状

电信资费、流量和服务对象是电信运营商服务的产品的核心,而这些都是由相关业务规则产生。目前电信运营商的业务规则大多分布在各个业务系统代码中,每次新业务推出,都要对相应系统代码进行修改,进行大量测试后才能上线,上线时间较长。例如针对每年9月新学期开展校园营销活动,但是由于新业务规则复杂,上线周期较长,影响业务推广,给运行商造成很大损失。虽然电信运营商在不同省份开展的业务不一样,但是存在大量规则相同或相似的情况[3],例如在A省推广扶贫业务,需要对用户某类资费做限制,而B省也在推广类似业务时,也对相同的资费做过类似限制。而正是由于大量相同或者相似规则的存在,造成系统不堪重负,处在崩溃边缘。

通过对运营商规则检验调研,可以看到呈现以下特点:1、无法快速迭代,规则类需求上线周期长;2、模块多,各模块规则分散;3、规则冗余较多

2 平台设计

2.1系统架构

为使平台设计便于标准化和模块化操作和管理,平台采用分层架构的体系,即表现层,数据预处理层,规则检验层,数据存储层。检验平台在微服务的规划上,按规则配置、规则发布、规则预处理、规则检验等业务功能进行构建,每个服务都是部署多个实例,每层服务提供能力如下:

1)表现层,提供规则配置、发布及查询等页面浏览和查询能力。用户通过浏览器可以对规则定制、修改、编排、发布及查询进行操作。规则审核通过后用户可以将规则发布相应场景下,提高了系统的操作安全性和便利性。

2)数据预处理层,提供业务事实数据进行清洗和筛选能力。过滤业务中去掉不完整、有噪声的数据,同时根据场景规则,去相应的系统补齐缺失的数据,并统一整合规则模型数据,并将数据传给总控调度进行检验。

3)规则检验层,主要对规则进行规则检验逻辑。每个引擎都有独立的规则集,初始化时便把规则加载到内存中,检验时减少构建规则库的时间,便于快速检验。

4)数据存储层,存储规则信息、场景配置信息、规则黑白名单等信息。通过jdbc访问数据存储层读取数据。

2.2规则库设计

规则库是将系统工作原理及专家知识转化为规则文件,形成规则库,供匹配器和规则模型数据进行匹配。本平台业务规则是通过drl规则脚本实现,并将脚本存储在数据库中。电信业务规则复杂,随着业务的不断增加,规则更新变化较快,为了更好适应业务,规则库里规则都是原子性,不可拆分,便于新规则制定时,可先在规则库中找原子规则,然后组装成新规则。

2.3规则发布设计

运营商业务推陈出新较频繁,如何快速支撑业务规则,缩短业务上线周期也是规则检验平台重点考虑的问题。本平台将MQ和规则引擎相结合,利用MQ消息中间件低耦合、可靠投递、广播和发布订阅的特点,将待发布的规则以消息的形式发送出去,订阅该消息的引擎都会接到这个规则信息,然后解析消息格式,对规则进行增加、修改操作,实现规则动态更新配置。

  1. 检验平台实现

3.1数据预处理实现

电信运营商的业务复杂,规则较多,检验的数据种类多,数据量大,平台系统设计时需要考虑具备一定的扩展性和检验规则的实时性,从而能够更好的满足不断增长的业务需求,同时获得更好的系统性能。平台接到外部系统规则检验的请求时,数据预处理模块根据请求报文解析系统的来源和具体业务,判断具体的规则场景,同时从规则检验参数配置表里,确定该场景下规则需要的业务数据和参数数据。数据预处理模块将请求的业务数据根据参数模板进行解析,将对业务数据进行初步清洗、过滤、筛选,得到统一规范的事实数据,同时按照参数表将业务数据进行处理,如将时间格式统一转化成yyyy-MM-dd格式。当前数据不足以校验规则时,根据参数表的配置信息,去指定业务数据库提取相关数据。最后将整合好规则模型数据序列化存到Redis中,通知总控调度各引擎检验。

3.2引擎检验实现

规则平台选择drools作为检验引擎。首先从redis取出数据,并反序列化成规则模型数据加入到drools的工作内存中,同时根据场景将选择相应的规则集。利用引擎匹配器把规则和规则模型数据进行匹配。如果引擎里存在过滤规则,则在检验前将规则从议程中去除,再去检验。

  1. 平台检测

为检测规则检验平台的稳定性和实时性,具体检测方法如下:挑选开户场景和服务变更场景,每个场景下各30条规则,将业务数据传递给规则检验平台,在20并发,30并发进行测试,tps均达到600以上,符合业务要求。对于服务变更场景,在线新增10条规则,修改10条规则,再次验证,结果表明该平台能够在线新增、修改业务规则,具备较强的扩展性。

  1. 结语

本文针对电信运营商业务规则无法快速上线,受理业务时,规则校验流程繁琐、耗时长的问题,基于规则引擎,结合微服务、MQ消息中间件等技术,构建了一套规则校验平台。针对不同业务场景,抽象出对象,设计多种规则模型,并基于此模型设计业务规则。这些业务规则分别加载对应的引擎中,当业务检验时,根据场景分别调用不同的引擎进行检验,并将规则进行统一的汇总,反馈给上游触点。当有业务规则发布时,规则发布总控利用MQ消息中间件将规则发送给对应的引擎中。结合实验结果验证表明该平台实现了业务规则的动态配置、快速匹配、提高了规则校验的运算效率,缩短了用户受理等待时长,提升了用户感知。

参考文献

[1]来志辉.Drools规则引擎技术指南[M].北京大学出版社:北京,2019:003.

[2]王焕强,俞东进,金一科,等.基于微服务架构和支持业务过程可靠执行的数据通信方法[J].计算机集成制造系统,2019,25(4):946-953.

[3]胡宇舟.基于客户市场细分的电信服务产品设计及优惠规则研究[D].天津:天津大学,2007