前言
互联网金融行业对安全性的要求极高,为了保障系统、用户信息和资金的安全,安全中心发挥着至关重要的作用。通过多种场景的安全验证,安全中心能够及时发现并拦截风险,确保金融行业的安全。这些场景包括撞库、频繁登录、非常用设备、异地登录、沉默账号、频繁发送验证码、交易额超限和二次放号等。
为了在保障系统安全的同时,兼顾并发、稳定、及时、准确、可降级以及不影响业务主流程等能力,需要采用一种高效且可靠的技术方案。Akka是一种优秀的解决方案,它能够满足上述所有要求。
Akka是什么
Akka是一个用于在 JVM 上构建高并发、分布式和可容错的事件驱动应用程序的运行时工具包。Akka 既可以用于 Java,也可以用于 Scala,本文的应用实践是基于Java版本。
Akka的使用方式
Actors是 Akka 的执行单元,在Akka中,所有的并发单位都是actor。Actor 模型是一种抽象,它让编写正确的并发、并行和分布式系统更加容易。首先需要创建一个带有守护者的ActorSystem,守护者是顶层的负责启动应用的actor。然后根据需要,创建其它的工作actor。这样各个actor就可以在actorSystem中通过消息的发送和接收,来处理各自的逻辑了。
Akka的核心逻辑
• Actor:在Akka中,所有的并发单元都被称为Actor。Actor之间通过异步消息传递进行通信。每个Actor都有一个唯一的标识符,并且可以接收和发送消息。
• 消息传递:Akka通过消息传递实现Actor之间的通信。当一个Actor收到消息时,它可以执行一些操作,比如处理消息、改变内部状态或者创建新的Actor。
• 层次结构:Akka支持Actor的层次结构。每个Actor都可以创建子Actor,形成一个层次结构。这种层次结构可以用来组织和管理Actor系统。
• 容错机制:Akka提供了容错机制,以确保系统的可靠性。当一个Actor发生故障时,Akka会监视并处理该故障,例如重新启动该Actor或将其替换为新的Actor。
• 高级调度器:Akka提供了高级调度器,用于管理Actor的执行。调度器可以配置Actor的并发性、调度策略和资源分配等。
• 路由:Akka允许将消息路由到一组相同类型的Actor中。这可以通过路由策略和路由器来实现,可以基于不同的算法将消息分发给目标Actor。
• 分布式支持:Akka具有内置的分布式支持,可以轻松地构建分布式应用程序。它提供了远程Actor和集群功能,使得在多个节点上部署和管理Actor系统变得更加简单。
这些是Akka的核心逻辑,它们共同为构建高效、可扩展和可靠的并发应用程序提供了强大的基础。
安全中心的核心逻辑
• 指标分析:监听用户的各个指标信息,通过指标规则,以多种维度分析指标信息,并将最终的结果保存。
• 等级判断:提供风险等级接口,获取到当前用户各种维度的信息,通过行为规则和关联规则,来给用户的各种信息打分,分数越高,表示用户的风险等级越高。
• 安全验证:根据用户的风险等级,来判定不同的惩罚措施,比如滑动验证、安全问题等。
这些是安全中心的核心逻辑,通过上述一系列步骤,来保障业务的安全。
Akka在安全中心的应用
• ActorSystem创建:在安全中心系统启动的时候,会创建一个ActorSystem。
• Inbox创建:当接收到等级判断请求后,当前线程会基于ActorSystem创建一个Inbox,Inbox用于消息的发送和接收。
• Actor创建:根据当前请求,获取需要执行的规则列表,为每个规则创建一个Actor,并返回ActorRef。
• 消息发送:通过Inbox,向各个Actor发送消息,触发各个Actor的执行。
• 消息接收:使用Inbox,通过等待响应消息的方式,同步地获取各个Actor的结果。
• 规则快速添加:通过后台可快速添加groovy规则脚本,反应到系统里面就是新增加了一个Actor。
上述过程可以理解为:
actorSystem可以认为是一个部门。
部门领导发邮件,安排10个人去执行10个任务,每个人任务完成后,回复邮件。
领导不停地去检查邮箱,看有没有邮件。
每次检查,超过30毫秒,就认为没有获取到结果,接着检查。
检查到结果,就将结果记录下来。
检查到10个人的任务都完成了,就结束检查。
如果超过1500毫秒,还没有检查完成,就结束检查,会缺失超时部分的人的回复。
总结
在安全中心系统中,通过引入Akka,创建了属于安全中心的ActorSystem。Inbox充当了消息的收发室,将用户请求的信息打包,转发给各个基于groovy规则创建的Actor。Actor基于groovy规则列表创建,各个Actor都有各自独立的逻辑,分别完成各自的,给用户行为和属性打分的使命,并将最终的结果信息发送给Inbox。最终由Inbox通过等候消息的方式,同步地获取各个规则的结果。安全中心通过对各个规则得分的统计,来划分高中低的风险等级,并根据安全等级来制定相应的惩罚措施,为系统和用户的安全提供可靠、及时、准确、可降级的安全保障。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。