問題タブ [orleans]

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.

0 投票する
2 に答える
1505 参照

c# - Microsoft Orleans 粒状通信性能

私は Mircosoft Orleans をベースとしてワークフロー エンジンに取り組んでいます。これは、作業の自動分散やフェイルオーバーの処理など、多くの便利な機能を提供するためです。

私は3種類の穀物を持っています:

  • ワークフロー - ワークフロー内の情報と、作業ブロックを実行する順序を保持します
  • 作業ブロック - 実際に作業を行う部分
  • 実行 - ワークフローの 1 回の実行

私の問題は、多数の現在の実行を実行している場合、つまり > 1000 の場合、パフォーマンスが実際に低下することです。少しプロファイリングを行い、これを粒子間で発生する通信に絞り込みました。とにかくこれ以上改善できることはありますか?

これが私のコードの概要と穀物がどのように相互作用するかです

実行グレインはループ内にあり、ワークフローから次の作業ブロックを取得し、その作業ブロックで execute を呼び出します。テスト ワークフローの 1 つの実行時間が、1 回の実行で 10 秒、1000 回以上実行すると約 5 分になる原因となっているのは、グレイン間のこの絶え間ない呼び出しです。これを改善できるか、またはソリューションを再構築する必要があります。グレイン通信を削除するには?

0 投票する
1 に答える
1315 参照

c# - 複数のグレイン間で重い作業を分散する (Microsoft Orleans)

簡単に並列化可能な計算 (マンデルブローなど) を異なる粒子で並列に Orleans で計算し、粒子が完了したら結果をマージしたいと考えています。ただし、これを行う方法や、Orleans がこの種の問題に対する適切なフレームワークであるかどうかはわかりません。また、これは生産に入るプロジェクトではありません。私は Orleans と遊んでいるだけです。

これまでの私のアイデアは次のとおりです。クライアントのエントリポイントである1つのグレインタイプ(「メイングレイン」と呼びましょう)があります(グレインでもある可能性があります)。次に、このグレインは必要な処理能力の量を推定し、タスクを小さな部分に分割して、別のグレインタイプの他のグレインに分散します (これらを「サブグレイン」と呼びます)。これらのサブグレインに作業を任せて、クライアントに返される結果を待つことは大したことではありませんが、サブグレインを処理する方法がわかりません。

たとえば、10 個のサブグレインを使用したい呼び出しがあるとします。それぞれを新しい GUID で取得し、機能させます。それらは完了し、クライアントは結果を取得します。ここで、X サブグレインを使用したい呼び出しがあります。

  • X 個の新しい GUID を使用して X 個の新しいサブグレインをアクティブ化し、ガベージ コレクターにクリーンアップを行わせる必要がありますか?
  • 以前にアクティブ化されたサブグレインを何らかの方法で再利用する必要がありますか (ある種のプーリング)、サブグレインが既に再利用可能であること (=ビジーでないこと) をどのように知ることができますか?
  • 複数のメイングレインを使用したい場合はどうなりますか。それぞれが独自のサブグレインを処理しますか?

どのようにしますか?ありがとうございました。

0 投票する
1 に答える
208 参照

distributed-computing - ストリームを使用したオルレアンのサイロ間通信

2 つのサイロ サイロ A とサイロ B があり、それぞれ独自の粒子と界面を持っています。両方をストリーム経由で通信させる必要があります。これはどのくらい可能ですか?今のところローカルで実行しており、SMS InMemory ストレージを使用しています。同じサイロ ストリーミング作業内で、サイロ間でこれをどのように達成できますか

0 投票する
1 に答える
252 参照

dapper - プロジェクトOrleansの粒度でリレーショナルデータベースのレガシーデータを処理するためのベストプラクティスは何ですか?

私はプロジェクト オルレアンを勉強しています。私は github のサンプル ホストを調べましたが、そのような種類のサンプルはありません。グレインの実装に dapper または EF を注入し、CRUD を実行するためのベスト プラクティスを知りたいです。

前もって感謝します。

0 投票する
1 に答える
1033 参照

orleans - Grain クライアントと Grain 間の Orleans 双方向通信

グレイン メソッド Eg 内でグレイン クライアントへのコールバックを実装したいと思います。Grain.Method1 の評価中に、データを取得するためにクライアント メソッドを呼び出す必要があります。

ストリームでそうしようとしましたが、クライアントでストリームをサブスクライブすると、メソッドが起動しません。

粒:

クライアント:

0 投票する
0 に答える
205 参照

orleans - AzureTableStorage プロバイダーの使用時に OrleansHost.exe が Silo の起動に失敗する

私は Orleans の初心者で、Orleans のメイン サイトから優れたチュートリアルを実行しようとしています。

私は宣言的な永続化の例に取り組んでおり、それを機能させるのに苦労しています。構成設定が不足していると思われるため、ガイダンスをいただければ幸いです (必要に応じてソリューションを添付できます)。

Orleans Tools for VS (v1.2.0) のテンプレートを使用して、Employee/Manager の例に従ってソリューションをセットアップしました。このソリューションには、Grains プロジェクト (グレイン、状態オブジェクト、および orleans ホスト構成ファイルを保持する)、interfaces プロジェクト (グレイン インターフェイスと共通オブジェクト)、および Silo プロジェクト (グレインをセットアップし、それらと対話する) があります。Grains プロジェクトは OrleansHost.exe を起動し、Silo プロジェクトはホストが起動すると起動するように求めます。OrleansConfiguration.xml ファイル (Grains プロジェクト内) には StorageProviders セクション (Globals の下) があり、Orleans.Storage.MemoryStorage (MemoryStore) と Orleans.Storage.AzureTableStorage (AzureStore) の 2 つのプロバイダー タイプがあります。テーブル ストレージ プロバイダーを削除すると、OrleansHost.exe は正常に実行されます (最後にログに記録されたメッセージは、サイロが実行されているというものです)。

私が抱えている問題は、テーブル ストレージ プロバイダーが構成ファイルに含まれている場合、OrleansHost.exe が Azure テーブル ストレージ プロバイダーを使用していることを知らせる行をログに記録するとすぐにログを停止することです ("AzureTableStorage プロバイダーは DataConnectionString を使用しています: UseDevelopmentStorage=真実")。ストレージ テーブル 'OrleansGrainState' が作成されますが、データが取り込まれません。GrainFactory を (Silo の実行を継続して) 初期化しようとすると、Orleans.Runtime.SiloUnavailableException という例外が発生します。これは、OrleansHost.exe の開始が完了していないことと一致しています。ただし、ホストは収集メッセージを毎分ログに記録し続けます。

ステップバイステップの指示に正しく従い、このサイトの他の投稿に目を通したと思います。これにより構成ファイルを修正できましたが、ホストでサイロを開始できないため、テストできます状態持続メカニズム。また、オルレアンのコミュニティや投稿サイトを調べましたが、役に立ちませんでした。

これを VS 2015 で実行しています。Orleans ライブラリは v1.2.0 です。VS 用の Orleans ツール (v1.2.0) がインストールされており、Azure SDK v2.9.1 がインストールされています。

今後もオルレアンについて学びたいと思いますので、何卒よろしくお願いいたします。

ありがとう

0 投票する
1 に答える
553 参照

c# - Microsoft Orleans でのグレイン フェイルオーバー時の自動再試行

そのため、一部のサイロが何らかの理由 (サーバーがダウンしているなど) で応答しない場合に備えて、Grain Fail-over がどのように機能するかをテストしています。現在、2 つの異なるマシンで実行されている 2 つのサイロがあり、それぞれでグレインがアクティブになっています。次に、サイロの 1 つを (予期せず) 削除します。DEAD サイロでグレインを呼び出そうとすると、タイムアウトの後 (合計で 3 分程度だと思います)、サイロが接続を拒否していることを示す例外がスローされます。現在、サイロが DEAD と宣言された後、アクティブ化を再試行した場合にのみ、穀物が別のサイロでアクティブ化されると考えています。これは私たちにとってうまく機能しています。ただし、ロジックを自分で実行する代わりに、自動的に再試行を行う方法があるかどうかを知りたいです。