同步、异步、阻塞、非堵塞

同/异、阻/非堵塞的组合,有四种类型,如下表:

组 合 方 式 性能分析
同步 非 阻塞 提升 I/O 性能的常用手段,就是将 I/O 的阻塞改成非阻塞方式,尤其在网络 I/O 是长连接,同时传输数据也不是很多的情况下,提升性能非常有效。 这种方式通常能提升 I/O 性能,但是会增加CPU 消耗,要考虑增加的 I/O 性能能不能补偿 CPU 的消耗, 也就是系统的瓶颈是在 I/O 还是在 CPU 上。
异步 阻塞 这种方式在分布式数据库中经常用到,例如在网一个分布式数据库中写一条记录,通常会有一份是同步阻塞的记录,而还有两至三份是备份记录会写到其它机器上,这些 备份记录通常都是采用异步阻塞的方式写 I/O。异步阻塞对网络 I/O 能够提升效率,尤其像上面这种同时写多份相同数据的情况。
异 步非 阻塞 这种组合方式用起来比较复杂,只有在一些非常复杂的分布式情况下使用,像集群之 间的消息同步机制一般用这种 I/O 组合方式。如 Cassandra 的 Gossip 通信机制就是采用异步非阻塞的方式。它适合同时要传多份相同的数据到集群中不同的机器,同时 数据的传输量虽然不大,但是却非常频繁。这种网络 I/O 用这个方式性能能达到最高。