1

クライアントサーバーシステムを設計しています。N 個のクライアントがサーバーに接続して、複数のメッセージを送信できます。サーバーはメッセージをデータベースに挿入し、メッセージを外部サーバーに投稿し、クライアントがメッセージを追跡できるように一意の ID をクライアントに返します。

ボトルネックと IO 待機時間を回避するには、このサービスを 2 つのタスクに分割します

  1. 詳細をデータベースに記録する
  2. を使用して 20 の http 投稿を送信するバッチ プロセス

    Task sendMessage =new Task[20]
    ExecutorService threadExecutor = Executors.newFixedThreadPool( 20 );
    //get the list of message not send from database send them and update the database
    for(int i=0;i<10;i++) {
        threadExecutor.execute( task[i] );//send message via HTTP post
    }  
    

これは良いデザインでしょうか。パフォーマンスを向上させるために、ポイント 2 を個別に実行することをお勧めします。また、上記の場合、各スレッドがデータベースに接続して更新すると、ロックやダーティ ライトが発生しますか?

4

0 に答える 0