以下应用的想法来自于一个关于web 分布式架构的演讲感染(见引用部分)。其中提到用熟悉的工具搭建起组件,再集成起来完成某种业务功能,很拽呦;后来看到可以使用cloudfoundry提供的组件支持,那就试一下喽。
动心不如动手,那就开始吧:
首先描述一下场景,假想一个类似银行的信用卡业务的交易处理系统需要做消费欺诈的检测。有两个出发点:
- 大多数的用户交易都是合规的,不能因为要查用户交易,就影响到正常的交易。
- 安全规则和诈骗手法都是在发展变化的,破坏一个东西比建设一个东西要容易的多;只有快速更新安全规则才能预防和缓解“勤劳的”骗子的攻击。
有了目标,那怎么做呢?头大?那就拆分一下吧:
- 终端模拟。终端是消费的渠道,网站、店铺刷卡等等;这里采用一个B/S应用模拟一下。
- 交易排查。从终端过来的大量的交易数据,经过一个排查系统,从中寻找可疑交易。
- 检测处理。可疑的交易数据反馈到检测平台,由值班业务人员对它进行处理。
有了子系统拆分,且清楚子系统的工作内容;下一步就是考虑子系统的技术选型了。
- 终端模拟。选择Spring+thymeleaf . Spring不用说了,地球人都知道。Thymeleaf也 真心不错,能在页面浏览器中直接预览静态数据效果,而且在服务器端执行时,可以将模板放到内存中,直接填充数据生成客户端页面。直击许多EE开发后端模板的不便之处。
- 交易排查。这里选择了drools . 为什么选它呢,没别的,向jboss致敬。
- 检测处理。检测需要有人盯着仪表盘,又不能让人总点刷新按钮。既然nodejs这么火,前后通吃,试一下喽。
呵呵,看到这里,你可能会说没有什么选择依据么。恭喜你说对了,是这么回事,有时看到一些技术贴子,就想试一下(可见宣传还是重要的,不知道哪个方向的风能吹来新用户。只要不扰民都是可行的)。
接下来就是实现了,此处省略 一千字,——哦,不!是一千个 copy/paste ……
实现后是什么样子呢,以下贴几个图来说明一下使用的效果是什么样的,(别信广告,也别看人家的疗效,自己试一下喽)。
首先呢我们用模拟终端 模拟一下产生交易数据;如下图,点击几次在交易;
模拟器地址:http://cfclient.cloudfoundry.com/trans.html
终端模拟只模拟浏览器是不够滴,那么我们就再实现一个android的终端模拟器吧:
这时我们在监控应用出看到了这些交易都输出到了正常交易区;然后我们再模拟终端处模拟一下不同地点的交易,如下图:
监控器地址:http://cfmonitor.cloudfoundry.com/
咦,我们可以看到可疑区出现了 一些数据,为什么呢,原因来自于交易排查出这部分交易违反了安全规则,如下图:
实现部分,就到这里吧。然后,我们看看开始的目标:
1,交易处理和交易排查是独立的应用,互不影响,且是实时的。满足。
2,当骗子的手法升级了,排查的规则算法可以独立升级。亲,可以不影响大多数普通交易的进行呦。满足。
先写到这吧,把文中涉及到的一些内容的链接列在下面作为结束。
资料引用:
1, CloudFoundry . http://cloudfoundry.com/
2,ThemeLeaf . http://www.thymeleaf.org/
3, Drools . http://www.jboss.org/drools
4, NodeJs http://nodejs.org/
5, 分解应用PPT http://springonechina.cloudfoundry.com 上的 Richardson