2016-12-29 16 views
0

私はVert.xを初めて使いました。私は、BoneCPを使ってデータベースクエリを作成するワーカーバーチクルのプールを実装したいと思います。しかし、私は彼らの仕事を呼び出す方法と、それらの間でBoneCP接続プールを共有する方法について少し混乱しています。jdbcのVertxワーカーバーチクルプール

Vertx DeploymentManager sourceでは、start(Future)メソッドが同期的に呼び出され、その後、展開されない限り、verticleはメモリ内に保持されることがわかりました。 startメソッドが完了したら、作業者の頂点でメソッドを呼び出す正しい方法は何ですか? (DeploymentOptions.setInstances()を使用して)頂点のインスタンスを多数配置すると、Vertxはそれらの間で負荷分散を行いますか?

Vert.xにはJDBCクライアントとワーカープールが付属していますが、EventBusを使用し、データベースから返されたすべてのデータをシリアル化するため、使用できるデータ型が限られています。私は多くの異なるデータ型(日付、BigDecimals、バイナリオブジェクトを含む)を扱う必要があります。できるだけシリアライゼーションを避けたいのではなく、ワーカーの頂点でクエリを実行し、結果を処理し、FutureまたはAsyncResult (私はこれがヒープ上で行われると信じているので、シリアル化は必要ありません;これは正しいですか?)

これらすべての質問を整理するのを手伝ってください:)あなたが私にこの作品を作る方法の例を教えていただければ、私は多くを感謝します!

ありがとうございます!

答えて

0

start(...)メソッドでは、イベントバスにイベントリスナーを登録します。これは、これが頂点とのやりとり(従業員であるかどうか)です。 はい、多くのインスタンスを展開する場合、Vert.xはラウンドロビンを使用してそれらのインスタンスにメッセージを送信します。

Vert.xは、非同期I/Oで最も効果的なので、Vert.xが最適ではないかもしれません。 標準のJava並行処理ツールを使用して、負荷を管理する方がよい場合があります。

+0

感謝。リクエストを処理するためにイベントバスにリスナーを持つ私のverticleをセットアップしますが、それらの間でjdbc接続プールを共有する方法についてはまだ研究しなければなりません。私はVert.xでこれを実装してフレームワークを学び、より少ないリソースで多くのリクエストを処理するための非同期I/Oを利用したいと思っていました:) – rober710

0

私はあなたの質問に1つずつ答えようとします。あなたはEventBusを使用して、ワーカーverticlesを呼び出す

を動作するようにそれらを '呼び出す' にどのように

。それはそれらの間でコミュニケーションするための適切な方法です。この例を参照してください。
https://github.com/vert-x3/vertx-examples/blob/master/core-examples/src/main/java/io/vertx/example/core/verticle/worker/MainVerticle.java#L27

それらの間BoneCP接続プールを共有する方法。

Do not。代わりに、それぞれに小さな接続プールを作成します。そうしないと、予期しない動作が発生します。

config.setMinConnectionsPerPartition(1); 
config.setMaxConnectionsPerPartition(5); 
config.setPartitionCount(1); 

VERTXは@Jochen Bedersdorferと私はEventBusを使用することをお勧め理由です

それらの間の番号をロードバランシングを行います。あなたが示唆したように、あなたの作業者の頂点への参照を持つことができますが、1:1の設定が残っています。

フューチャーまたはAsyncResult経由リターンオブジェクトを(私はそうシリアライズは必要ありません、これは上のヒープ を行われていると考えている;?これは正しいです)

これは正しいです。しかし、再び、あなたは1:1のマッピングに悩まされています。これは、直列化(バッファを使用している)というパフォーマンスの面では、どれが悪いですか。

あなたはまだ多分あなたは全くワーカーverticlesを使用しますが、.executeBlockingような何かべきではない、そのようなものが必要な場合:あなたの助けのための
https://github.com/vert-x3/vertx-examples/blob/master/core-examples/src/main/java/io/vertx/example/core/execblocking/ExecBlockingExample.java#L25

関連する問題