Akka:安全中心的分布式通信之道

举报
信也科技布道师 发表于 2023/11/06 11:51:40 2023/11/06
【摘要】 互联网金融行业里,为了在保障系统安全的同时,兼顾并发、稳定、及时、准确、可降级以及不影响业务主流程等能力,需要采用一种高效且可靠的技术方案。Akka是一种优秀的解决方案,它能够满足上述所有要求。

前言

互联网金融行业对安全性的要求极高,为了保障系统、用户信息和资金的安全,安全中心发挥着至关重要的作用。通过多种场景的安全验证,安全中心能够及时发现并拦截风险,确保金融行业的安全。这些场景包括撞库、频繁登录、非常用设备、异地登录、沉默账号、频繁发送验证码、交易额超限和二次放号等。

为了在保障系统安全的同时,兼顾并发、稳定、及时、准确、可降级以及不影响业务主流程等能力,需要采用一种高效且可靠的技术方案。Akka是一种优秀的解决方案,它能够满足上述所有要求。

Akka是什么

Akka 是一个用于在 JVM 上构建高并发、分布式和可容错的事件驱动应用程序的运行时工具包。Akka 既可以用于 Java,也可以用于 Scala,本文的应用实践是基于Java版本。

Akka的使用方式

Actors Akka 的执行单元,在Akka中,所有的并发单位都是actorActor 模型是一种抽象,它让编写正确的并发、并行和分布式系统更加容易。首先需要创建一个带有守护者的ActorSystem,守护者是顶层的负责启动应用的actor。然后根据需要,创建其它的工作actor。这样各个actor就可以在actorSystem中通过消息的发送和接收,来处理各自的逻辑了。

1.png

Akka的核心逻辑

  • Actor:在Akka中,所有的并发单元都被称为ActorActor之间通过异步消息传递进行通信。每个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的核心逻辑,它们共同为构建高效、可扩展和可靠的并发应用程序提供了强大的基础。

安全中心的核心逻辑

  • 指标分析:监听用户的各个指标信息,通过指标规则,以多种维度分析指标信息,并将最终的结果保存。
  • 等级判断:提供风险等级接口,获取到当前用户各种维度的信息,通过行为规则和关联规则,来给用户的各种信息打分,分数越高,表示用户的风险等级越高。
  • 安全验证:根据用户的风险等级,来判定不同的惩罚措施,比如滑动验证、安全问题等。

这些是安全中心的核心逻辑,通过上述一系列步骤,来保障业务的安全。

2.png

Akka在安全中心的应用

  • ActorSystem创建:在安全中心系统启动的时候,会创建一个ActorSystem
  • Inbox创建:当接收到等级判断请求后,当前线程会基于ActorSystem创建一个InboxInbox用于消息的发送和接收。
  • Actor创建:根据当前请求,获取需要执行的规则列表,为每个规则创建一个Actor,并返回ActorRef
  • 消息发送:通过Inbox,向各个Actor发送消息,触发各个Actor的执行。
  • 消息接收:使用Inbox,通过等待响应消息的方式,同步地获取各个Actor的结果。
  • 规则快速添加:通过后台可快速添加groovy规则脚本,反应到系统里面就是新增加了一个Actor

3.png

上述过程可以理解为:

  1. actorSystem可以认为是一个部门。
  2. 部门领导发邮件,安排10个人去执行10个任务,每个人任务完成后,回复邮件。
  3. 领导不停地去检查邮箱,看有没有邮件。
  4. 每次检查,超过30毫秒,就认为没有获取到结果,接着检查。
  5. 检查到结果,就将结果记录下来。
  6. 检查到10个人的任务都完成了,就结束检查。
  7. 如果超过1500毫秒,还没有检查完成,就结束检查,会缺失超时部分的人的回复。

总结

在安全中心系统中,通过引入Akka,创建了属于安全中心的ActorSystemInbox充当了消息的收发室,将用户请求的信息打包,转发给各个基于groovy规则创建的ActorActor基于groovy规则列表创建,各个Actor都有各自独立的逻辑,分别完成各自的,给用户行为和属性打分的使命,并将最终的结果信息发送给Inbox。最终由Inbox通过等候消息的方式,同步地获取各个规则的结果。安全中心通过对各个规则得分的统计,来划分高中低的风险等级,并根据安全等级来制定相应的惩罚措施,为系统和用户的安全提供可靠、及时、准确、可降级的安全保障。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。