
实时规则引擎的设计与实现publ.pptx
33页实时规则引擎设计与实时规则引擎设计与实现实现Neeao四月 2226日目录目录需求方案实现挑战目录目录需求方案实现挑战一大波扫号的出现一般处理流程:分析日志制定防御规则找相关Domain开发防御规则防御规则5分钟内IP登陆超过100次,封IP60分钟如何实现?硬编码硬编码iftime=100:blockip60m硬编码硬编码-成本成本每天成功登陆:2WUID账号有钱的UID:10%UID平均账号余额:100元每天存在威胁资金量:2W*10%*100=20W硬编码硬编码-成本成本开发上线时间:1sprint(开发+测试+上线)=14天14*20=280w如何解决?硬编码硬编码-改进版改进版将参数放入配置项,需要时更新配置数据:db_gap_time=5mdb_times=100db_block_time=60miftime=db_times:blockipdb_block_time硬编码硬编码-改进版改进版一键秒刷,立即生效新的问题:新的规则怎么添加?继续重复硬编码的思路?有没有更好的方法?终极大招将规则逻辑从应用中分离应用提交数据至规则逻辑得到结果规则引擎规则引擎定义:规则引擎由推理引擎发展而来,是一种嵌入在应用程序中的组件,实现了将业务决策从应用程序代码中分离业务决策从应用程序代码中分离出来,并使用预定义的语义模块编写业务决策预定义的语义模块编写业务决策。
接受数据输入,解释业务规则,并根据业务规则做出业务决策应用背景:提高效率,解决复杂的业务规则规则经常变化,IT系统根据规则快速、低成本变化为了快速、低成本的更新,业务人员应能直接管理IT系统中的规则,不需要程序开发人员参与规则引擎逻辑规则引擎调用接口请求1请求N规则引擎核心数据库适配层INOUTINOUTINOUT规则文件RUN目录目录需求方案方案实现挑战功能业务逻辑与应用分离方便调用接口性能与硬编码差别不大轻量级,方便开发维护友好的规则编辑界面现有硬编码规则的集成为什么不用开源产品性能原因队列特性、实时性无法满足现有Java规则逻辑的很难复用学习维护成本高规则逻辑脚本语言Groovy优点:基于JVM(Java虚拟机)借鉴Python、Ruby和Smalltalk的许多强大的特性,支持DSL,语法简洁直接调用现有Java的类库,Java无缝集成方便的实例化接口性能方面内存加载Groovy规则脚本JavaObject规则管理规则库Web管理(规则版本)规则引擎规则流程目录目录需求方案实现实现挑战实现Groovy脚本加载为Java对象接口参数支持多参数、任意类型规则脚本执行流程Sandbox规则Web管理及测试规则调用流程Groovy脚本加载为Java对象接口参数支持多参数、任意类型规则脚本执行流程Groovy-SandBox默认导入包定义SecureASTCustomizer闭包:包导入:import包定义:package方法定义:publicstaticvoidmain方法返回值定义:returnInteger/Double/String运算符定义:PLUS/MINUS/MULTIPLY/DIVIDEhttp:/groovy.codehaus.org/Advanced+compiler+configuration规则Web管理及测试规则Web管理及测试规则Web管理及测试规则调用流程目录目录需求方案实现挑战挑战挑战应用接入规则接口数据定义更友好的规则编辑界面Q/A。
