1

我们应用程序的架构文档有几个我无法直观地理解的流行词

  1. 无状态可分发应用程序

  2. 可插拔安全模型

我可以理解分布式意味着什么,但是无状态意味着什么?无状态可分发应用程序是什么意思?你能举一个这种应用的例子吗?

什么是可插拔安全模型?我知道可插拔 API 是可以插入或替换为其他实现的东西,但我认为安全性是很好地集成到应用程序中并且是其核心的东西。可以做成可插拔的吗?您能否举例说明这种方法的外观?

4

2 回答 2

6

无状态分布式应用

无状态分布式应用程序允许轻松水平扩展(即向系统添加更多具有应用程序实例的机器)。

无状态是指应用程序实例不维护状态信息。由于没有状态,任何应用程序实例都会为给定的输入产生相同的输出,而不管它先前接收到的任何输入。因此,哪个实例响应请求并不重要。

这使得可扩展性更容易,因为不需要维护对某些实例“粘”的会话。请求分配逻辑(例如负载均衡器)可以将负载分配给任何实例,而不用担心之前发生的事情。可以在集群中添加或删除实例,而无需担心活动会话。

这种架构通常在系统持久层中维护状态信息,这意味着应用程序实例从持久层为它们处理的每个请求检索新的状态信息。这是为扩展灵活性付出的代价。

可插拔安全模型

安全模型定义了如何授权用户访问资源。安全模型的示例是基于角色的与访问控制列表。

安全模型实现与业务逻辑交互。在做一些敏感的事情之前,业务逻辑必须向安全逻辑请求授权。复杂的业务逻辑可能有很多必须执行此类检查的地方。如果安全逻辑和业务逻辑是紧耦合的,即业务逻辑直接调用安全逻辑,就很难改变安全模型。

可插入的安全模型用松散耦合代替了紧密耦合,其中业务逻辑通过插件接口与安全模型交互。由于业务逻辑对安全逻辑内部一无所知,因此安全逻辑可以在不改变业务逻辑的情况下进行交换。

Such a plugin interface is often implemented as set of callbacks, configured within the business logic and used by the business logic to query the security logic.

于 2011-11-03T20:58:07.993 回答
1

使用可插拔的安全模型(至少是我熟悉的),最终用户可以配置应用程序使用的安全方法。例如,最终用户可以选择使用标准的用户名/密码方法、智能卡、视网膜扫描或以上的某种组合。它是“可插入的”,因为提供安全机制(智能卡读卡器或其他)的供应商提供了一些软件来插入身份验证框架。

有关一些示例,请参阅Linux Pluggable Authentication Modules (PAM)javax.security.auth.login Java 包。

于 2011-11-03T15:13:46.733 回答