1、框架概述

a) CTU系统分为3部分:1、事件注册器。 2、事件分析引擎。 3、风险处理系统。
b) 事件注册器:收集服务器信息、事件触发人员信息、以及事件相关的数据,将这些数据组合成一个Event 。事件注册器负责将Event派送到事件分析引擎进行处理。
c) 事件分析引擎:采用Drools3.0.*版本作为规则引擎的核心。通过bread模块的支持,采用Lucene 做event数据源。实现大数据量查询相关的Event。
d) 风险处理系统:通过定义风险模型(风险等级、风险描述、触发的处理动作)生成一个风险派送到风险处理系统进行相关的业务处理(目前只是在CTU Engine中处理,将来可以扩展一个Interceptor实现ESB架构的一个endpoint)。
应用服务器端(CTU client):
a) 事件注册器(业务层):EventRegister.java
public interface EventRegister {
/**
* 向事件库注册一条消息
* @param event 要注册的事件
* @return boolean 是否成功
*/
public boolean register(Event event);
}
b) 事件注册器默认提供2种实现方式:
1、是JmsQueueEventRegister:采用Jms直接连接方式,该类是采用短连接方式(每发送一条消息都会创建连接),因此最好能够配合Jms JCA,让容器管理物理连接(关于JMS JCA的技术以及实现在下面将会解释)。
2、EventRouterRegister(commandDispatcher router list),采用路由方式,可以由多个commandDispatcher组合而成。
c) 提供发送失败存储的EventRegisterWrapper,该包装负责调用EventRegister进行发送,发送失败以后进行对象存储,直到重发成功。
a) 分析引擎,
1、 下面是分析引擎的总体预览图

2、Drools:规则引擎核心开发包。
默认实现有:
DefaultFileManager:普通的文件系统
ResourceLoaderFileManager:由ResourceLoaderService提供支持

这些Bean可以标识为singleton、LifecycleAble(如果为非singleton,则在引擎一次分析完成作为一次生命周期,如果是singleton则在配置重载的时候作为一次生命周期)
/**
* bean 工厂
*/
public interface BeanObjectFactory {
/**
* Build a generic Java object of the given type.
*
* @param clazz the type of Object to build
*/
public abstract Object buildBean(Class clazz) throws Exception;
/**
* Build a generic Java object of the given type.
*
* @param className the type of Object to build
*/
public abstract Object buildBean(String className) throws Exception;
}
默认实现:GenericBeanObjectFactory 普通的,根据Class直接实例化
SpringBeanObjectFactory,由BeanFactoryService提供支持。
4、ReloadManager:负责重载可重载的item,只要类实现Reloadable,并且受ReloadManager管理,则reloadManager负责定期检查每个Reloadable是否需要reload。如果item需要reload,则reloadManager将调用reload方法重载配置等...….
默认实现:DefaultReloadManager
目前Reloadable实现类:
² ConfigurationManager:负责engine配置管理
² RuleFiredAgendaEventListener:负责将触发的规则描述bean放入 ThreadLocalContext中,为生成risk风险模块提供数据,该类采用XStream来解析RuleDescription 的描述文件。
5、Engine Service配置
a) 可以模仿src/conf.test/services.xml的配置
b) BeanFactoryService的实现类com.alibaba.ctu.engine.DefaultAutowireBeanFactoryService
c) 需要配置2个ServiceBean:
autowireBeanFactoryService指向BeanFactoryService
resourceLoaderService指向ResourceLoaderService
6、Engine的Configuration配置:
1、 Xml格式可以根据cut项目下面的engine/src/conf.test/Engine.dtd
2、 配置分成Risk(分析风险的规则引擎配置)、Event(分析事件的规则引擎配置)、interceptors(拦截器配置,供全局使用)、include(可包含另外一个配置)
3、 Risk、Event的配置解释:
a) 每种DomainObject都有各自的domainName。每个domainName都会找到配置文件中的(event/name、risk/name)相匹配的配置作为规则引擎的配置。
b) 他们都可以extends另外的类型一直的配置(主要是规则文件跟pulltool合并)。
c) interceptor-stack:他们有各自的拦截堆栈,该堆栈在规则引擎执行前后执行。在这儿可以对规则引擎的WorkingMemory、以及一些数据进行处理。
d) Pulltool:将作为规则引擎的GlobalTool来使用。该 对象由BeanObjectProvider负责产生。支持singleton、LifecycleAble。
e) WorkingMemory配置:他们是构造Drools的WorkingMemory的主要配置。使用该领域需要对drools有一定的了解。
4、 interceptors配置解释
a) Interceptor拦截在分析引擎分析前后。可对WorkingMemory进行操作。该 对象由BeanObjectProvider负责产生。支持singleton、LifecycleAble。
b) 为Risk、Event提供拦截器堆栈(interceptor-stack)。
5、 include配置解释:提供包含另外一个配置文件。方便管理配置。不用将所有的配置写在一个文件中,可以有条件地将他们归写在一个文件下面,然后有一个总文件来include这些文件。