设计模式大部分都是扯蛋的,真正有用的不多,广泛应用的更少寥寥无几,半同步半异步(Half-Sync/Half-Async)正是其中之一
一: 同步和异步的问题
同步: 编码简单,逻辑清晰, 但效率低
异步: 效率高,但结构复杂,需处理各种时序和竞争问题
对于网络通信来说异步可以避免大量的阻塞,提高效率, 因此高性能服务器基本都是异步的. 但对于业务处理来说异步并没有明显性能优势,反而会导致编码复杂.
于是Half-Sync/Half-Async便横空出世来解决个问题了
二, 异步层/ 同步层和队列层
半同步半异步模式将底层的网络通讯用异步实现, 上层的逻辑处理用同步实现,中间通过一个队列来连接.
它的应用非常广泛,别的不说,我们的操作系统本身就是一个Half-Sync/Half-Async模式:
三, 实际编程应用
这个模式在实际编码中也有广泛应用, 以搜索引擎中cache和query的通信为例, 其实就是一个Half-Sync/Half-Async 的例子. 其最显著的特征就是:
异步接收-->放入队列-->同步处理 或 同步处理-->放入队列-->异步发送