我们的应用程序的架构文档有几个流行语,我无法直观地联系到它们
无状态可分发应用程序
可插拔安全模型
我能理解分布式意味着什么,但无国籍意味着什么呢?无状态可分发应用程序的含义是什么?你能举一个这样的申请的例子吗?
什么是可插拔安全模型?我知道可插拔API是可以插入或替换为其他实现的东西,但我认为安全性是很好地集成到应用程序中并且是其核心.可以插电吗?你能举一些关于这种方法的例子吗?
无国籍可分发应用程序
无状态分布式应用程序允许轻松水平扩展(即向系统添加更多具有应用程序实例的计算机).
无状态是指不维护状态信息的应用程序实例.由于没有状态,任何应用程序实例都将为给定输入生成相同的输出,无论它是否预先接收到任何输入.因此,哪个实例响应请求无关紧要.
这使得scalablity更容易,因为不需要维护对某些实例"粘滞"的会话.请求dirtribution逻辑(例如负载均衡器)可以将负载分配给任何实例,而不必担心事先发生的事情.可以在群集中添加或删除实例,而无需担心活动会话.
这种体系结构通常在系统持久层中维护状态信息,这意味着应用程序实例从持久层中为它们处理的每个请求检索新的状态信息.这是为缩放灵活性付出的代价.
可插拔安全模型
安全模型定义了如何授权用户访问资源.安全模型的示例是基于角色的访问控制列表.
安全模型实现与业务逻辑交互.在做敏感事情之前,业务逻辑必须要求安全逻辑进行授权.复杂的业务逻辑可能有许多必须执行此类检查的地方.如果安全逻辑和业务逻辑紧密耦合,即业务逻辑直接调用安全逻辑,则很难更改安全模型.
可插拔安全模型将松散耦合替换为松散耦合,其中业务逻辑通过插件接口与安全模型进行交互.由于业务逻辑对安全逻辑内部不了解,因此安全逻辑可以在不改变业务逻辑的情况下进行交换.
这种插件接口通常被实现为一组回调,在业务逻辑中配置并由业务逻辑用于查询安全逻辑.