問題タブ [service-fabric-stateful]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
azure-service-fabric - Service Fabric State Manager トランザクション内で I/O 操作を実行することの意味は?
私は Service Fabric を初めて使用します。
状態マネージャー トランザクションを開き、その中でネットワーク I/O (サービス ファブリック以外の Web サービス呼び出し) を行うと、トランザクションをコミットします。問題が発生したことを知りたいのですが、Service Fabric Reliable サービスを使用してこれを行うためのより良い方法はありますか?
c# - Azure Service Fabric FabricObjectClosedException
IReliableDictionary に物を格納するステートフル サービスがあります。ローカル クラスターにデプロイした後、プライマリ ノードを再起動してフェールオーバーをテストしましたが、その後、コード StateManager.GetOrAddAsync>("MyDictionary") が FabricNotPrimaryException をスローし、その後の試行で FabricObjectClosedException をスローします。これをトラブルシューティングするために確認できることは何ですか?
c# - System.Fabric.FabricNotPrimaryException タイマーから状態を保存するとき
Service Fabric でホストされるステートフル サービスを作成しています。このサービスの仕事は、外部キューからのメッセージを消費し、それらを変換して、独自のメッセージング システムに配置することです。サプライヤのドキュメントによると、スループットは最大 6k メッセージ/秒です。
メッセージの負荷を分散するためにサービスを複数のパーティションに構成しました。各パーティションには最小 2/最大 3 のレプリカがあります。障害から回復するには、サプライヤ キューにサブスクライブし、メッセージを受信したい時点からタイムスタンプを渡します。これを行うために、サービス状態で処理された最後のメッセージのタイムスタンプを保存しています。メッセージの量が多いため、タイマーでこれを「保存」することにしました(そして、ダウンストリームのメッセージの潜在的な重複を許可します)
これは、その時点で呼び出されるコードです。
これを永続化しようとするたびに、各パーティションで「System.Fabric.FabricNotPrimaryException」エラーが発生します。
再試行ポリシー (Polly Retry の好意による) を含めました。これを行うことを推奨する同様の問題に関するコメントがあったためです。これは効果がなく、エラーが報告されるまでの時間が長くなりました。
SF をどのように使用すべきかについて、何か根本的なことを誤解していますか? これは私には単純な使用例のようです。
asp.net-core - Asp.net Core Dependency Injection を使用した Service Fabric ステートフル サービス
基本的にコントローラーを備えた通常のWebApiアプリケーションであるため、ステートレスサービスでAsp.netコアDIを正しく使用しています。
Stateful Services で Dependency Injection を使用する方法がわかりません。これは、Stateful サービスのデフォルトのコンストラクターです。
Program.cs で呼び出されます。
ステートフル サービスで次のようなものを使用したいと思います。
ステートフル サービスの構成セクションに既に登録していますが、上記のコードを使用しようとすると、次のエラーが発生します。
StatefulService には、引数を 0 個取るコンストラクターが含まれていません
それを機能させる方法は?
azure-service-fabric - いつ、どこで信頼できるコレクションを初期化するのが最適ですか?
シナリオ: ステートフル SF サービスは、その状態をいくつかの信頼できるコレクションに格納します。ステートフル SF はリモーティング経由で利用できます。
コレクションを最初に使用する前に (StateManager.GetOrAddAsync を呼び出して) 「初期化」する必要がありますか? 信頼できるコレクションへの最初のアクセスを減らすのに役立ちますか、それともこの手順を実行する必要はありませんか?
この初期化を行うように勧められている場合、いつ、どこで行うのが適切ですか? 最も合理的な場所は RunAsync の無限ループの直前ですが、コレクションが初期化される前にリモート処理を介して呼び出されるメソッドが呼び出される場合はどうでしょうか? その最初のリモート呼び出し (コレクションが初期化されるとき) でパフォーマンスが低下することはありますか?
最後に->信頼できるコレクションを操作する場合、クラス内のコレクションへの参照を保持しても問題ありません(たとえば、インスタンスの開始中にStateManager.GetOrAddAsyncを使用して参照を取得します)。この参照のみで操作するか、StateManager.GetOrAddAsyncを呼び出す方がよいコレクションへのすべての呼び出しの前に?
答えてくれてありがとう!
azure - サービス ファブリックでエラーが発生する「アプリケーション URL が設定されていないか、HTTP/HTTPS URL ではないため、ブラウザーはアプリケーションに対して開かれません」
サービス ファブリック クラスターでサービスを実行しようとすると、出力ウィンドウに次のように表示されます。
「アプリケーション URL が設定されていないか、HTTP/HTTPS URL ではないため、アプリケーションに対してブラウザが開かれません」。
設定手順がありませんか?
c# - Windows 認証による Service Fabric ステートレス WebAPI エンドポイントの保護
Web アプリケーションのキャッシュ ツールとして Service Fabric を使用する予定です。
Service Fabric 内には、次のものがあります。
- キャッシュ オブジェクトを格納するステートフル アプリケーション
- 他のアプリケーションがステートフル アプリケーションと対話するためのエンドポイントとして機能するステートレス WebAPI アプリケーション。WebAPI は OWIN セルフホストを使用します。(スクリーンショットを参照)
どちらも同じクラスター内にあります。ステートレス WebAPI は、公開のエンドポイントとして機能します。アイデアは、外部アプリケーションが API をヒットしてステートフル アプリケーションにキャッシュを取得/投稿/削除することです。
Windows 認証 (スクリーンショットを参照)を使用して WebAPI を保護しようとしているため、ドメインのユーザーのみが API を呼び出すことができます。IIS を使用していないため、この機能は Service Fabric 内でも可能ですか? App.config に何か他のものを含める必要がありますか?