1

让我们假设一个主题将每秒请求访问许多对象的场景。单个 PDP 上的重负载意味着每个请求的等待和读/写时间增加。

到目前为止,我已经使用AuthzForce Core 项目设置了一个 PDP,为此我有一个 for 循环发送多个请求(这可以使用线程同时完成)。但是,这似乎不是在分布式环境中评估我的策略的合适设置。

有什么办法可以做到吗?也许使用AuthzForce 服务器

编辑

我正在运行一个使用 Authzforce Core 的 Java 应用程序。该程序创建一个加载单个策略文档的 PDP 实例,然后 for 循环执行多个请求。这一切都是在程序本身内本地完成的。

4

2 回答 2

1

如果不查看代码或架构,很难在此处帮助提高性能,但我可以提供一些一般性提示(其中一些对您来说可能很明显,但只是为了彻底):

  1. 由于 PDP 嵌入在您的 Java 应用程序中,我假设(或确保您这样做)您正在使用AuthzForce 本机 Java API(自述文件中的示例),这是最有效的评估方式。

  2. 我还假设您在BasePdpEngine应用程序的整个生命周期中(重新)使用相同的 PDP ( ) 实例。它应该是线程安全的。

  3. 为了一次评估多个请求,您可以尝试使用 PDP 引擎的evaluate(List)方法 ( javadoc ) 而不是通常的方法evaluate(DecisionRequest),这在某些情况下更快。

  4. 如果通过“分布式环境”,您的意思是您的 Java 应用程序的多个实例部署在不同的位置,因此多个 PDP,正确的设置取决于您加载策略文档的位置/方式:本地文件、远程数据库等。请参阅我的最后评论。正如 Rafael Sisto 的回答中提到的,您可以在此处重用 AuthzForce 服务器安装指南的高可用性部分中的一些指南。

于 2019-06-23T15:57:08.857 回答
1

Authzforce 服务器有一个高可用性选项: https ://github.com/authzforce/fiware/blob/master/doc/InstallationAndAdministrationGuide.rst#high-availability

您可以遵循相同的准则来使用您的单个 pdp 来实现这一点。

于 2019-06-11T16:40:39.853 回答