同步与异步:一个任务的完成需要依赖另外一个任务时,只有等待被依赖的任务完成后,依赖的任务才能完成,这是一种可靠的任务序列。
阻塞与非阻塞:主要是从CPU的消耗上来说的,阻塞就是CPU停下来等待一个慢的操作完成以后,CPU才接着完成其他事情。
同步阻塞:最常用的一种用法,使用也是最简单的,但是I/O性能一般很差,CPU大部分处于空闲状态。
同步非阻塞:提升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用这个方式性能能达到最高。
来源:oschina
链接:https://my.oschina.net/u/723271/blog/308720