サブジェクトが毎秒多くのオブジェクトへのアクセスを要求するシナリオを考えてみましょう。単一のPDPに大きな負荷がかかると、リクエストごとの待機時間と読み取り/書き込み時間が長くなります。
これまで、AuthzForce Coreプロジェクトを使用して、複数の要求を送信するforループを持つ単一のPDPをセットアップしました(これはスレッドを使用して同時に実行できます)。ただし、これは分散環境でポリシーを評価するための適切な設定ではないようです。
それを行う方法はありますか?おそらくAuthzForceサーバーを使用していますか?
編集:
AuthzforceCoreを使用するJavaアプリケーションを実行しています。プログラムは、単一のポリシードキュメントをロードするPDPのインスタンスを作成し、forループが複数の要求を実行します。これはすべて、プログラム自体の中でローカルに行われます。
コードやアーキテクチャを見ずにここでパフォーマンスを向上させるのを助けるのは難しいですが、いくつかの一般的なヒントを与えることができます(それらのいくつかはあなたには明白かもしれませんが、徹底するためだけです):
PDPはJavaアプリに組み込まれているため、最も効率的な評価方法であるAuthzForceネイティブJava API(READMEの例)を使用していると思います(または必ずそうします)。
またBasePdpEngine
、アプリケーションの存続期間を通じて、同じPDP()インスタンスを(再)使用していることも前提としています。スレッドセーフである必要があります。
複数のリクエストを一度に評価するために、通常の代わりにPDPエンジンのevaluate(List)
メソッド(javadoc)を試すことができますevaluate(DecisionRequest)
。これは場合によっては高速です。
「分散環境」とは、Javaアプリの複数のインスタンスが異なる場所にデプロイされている可能性があることを意味します。したがって、複数のPDPがあり、適切なセットアップは、ポリシードキュメントをロードする場所/方法によって異なります:ローカルファイル、リモートデータベース、など。私の最後のコメントを参照してください。Rafael Sistoの回答で述べたように、AuthzForceServerインストールガイドの高可用性セクションにあるいくつかのガイドラインを再利用できます。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加