1

我们正在设计一个客户端服务器系统。N 个客户端可以连接到服务器发送多条消息。服务器将消息插入数据库中,并将消息发布到外部服务器,并返回一个唯一的 id 给客户端,以便客户端跟踪消息。

为了避免瓶颈和 IO 等待时间,想将此服务拆分为两个任务

  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