2017-06-10 4 views
0

Spring Bootを使用して設計したRestFul Webサービスがあります。非ブロッキング非同期Webサービスを構築する方法Springブートを使用する

Webサービスは、起動中に多くのデータベース呼び出しを行う必要があり、残りの部分では大量のIO操作を実行して結果を提供するため、非常に重いです。

私はRestful Apiを非同期にして、スケーラビリティを高めることができます。また、結果を提供するのに時間がかかります。

私は、私もこれを実装しますが、私は、これは非同期であるかどうかをテストすることはできませんよhttps://spring.io/guides/gs/async-method/

非同期(async)春に見えました。リクエストがURLに行われた場合、私は

ような何かをしたい場合はどのよう

/すべてのプロセスが完了した後、すべての

それは瞬時にしてから、結果を処理しているWebサービスのように示しているが、それは実際の結果を示しています。

これはどのように可能ですか?

また、私はこのhttp://callistaenterprise.se/blogg/teknik/2014/04/22/c10k-developing-non-blocking-rest-services-with-spring-mvc/を調べました。

この問題にはコードがありません。これは私がそれを修正する方法として直面している設計上の問題です。ありがとう

答えて

0

あなたは2つの別々の質問をしています。私は私の意見では、その性能も

をテストするにはどうすればよいのJava

  • で非同期サーバをIを構築するにはどうすればよい

    1. は、最初のものにあなたの解決策は有効です。もちろん、、またはQuazar、またはAkkaを使用することができます。しかし、それはあなたのユースケースに依存します。

      2番目の質問には、wrk toolを使用することをおすすめします。コードがそれほどブロックされてはならないので、より多くの同時リクエストを処理することができます。 wrkは別のマシンから実行するのが最善であり、Javaが実行されているサーバーからは実行しないことに注意してください。

  • 0
    Public interface Callback<T>{ 
    
    public void callWhenDone(T result); 
    //process the result in you implemenation 
    } 
    

    処理DBクエリ

    public class MyThread implements Runnable { 
        Callback callback; 
    
        //create thread by passing implemenation of callback 
        public MyThread(Object parameter,Callback c) { 
          // store parameter for later user 
          this.callback=c;  
    
    
        } 
        public void run() { 
         //call db queries and when you get the results call the callbak 
         callback.callWhenDone(result); 
        } 
    } 
    

    スタートスレッド新しいMyThread(パラメータ、CallBackImplemntation)のためのスレッドを起動します.start()

    関連する問題