网络编程学习_设计模式_半同步半异步模式

设计模式大部分都是扯蛋的,真正有用的不多,广泛应用的更少寥寥无几,半同步半异步(Half-Sync/Half-Async)正是其中之一

一: 同步和异步的问题

同步: 编码简单,逻辑清晰, 但效率低

异步: 效率高,但结构复杂,需处理各种时序和竞争问题

对于网络通信来说异步可以避免大量的阻塞,提高效率, 因此高性能服务器基本都是异步的. 但对于业务处理来说异步并没有明显性能优势,反而会导致编码复杂.

于是Half-Sync/Half-Async便横空出世来解决个问题了


二, 异步层/ 同步层和队列层

半同步半异步模式将底层的网络通讯用异步实现, 上层的逻辑处理用同步实现,中间通过一个队列来连接.

它的应用非常广泛,别的不说,我们的操作系统本身就是一个Half-Sync/Half-Async模式:


三, 实际编程应用

这个模式在实际编码中也有广泛应用, 以搜索引擎中cache和query的通信为例, 其实就是一个Half-Sync/Half-Async 的例子. 其最显著的特征就是:

异步接收-->放入队列-->同步处理 或 同步处理-->放入队列-->异步发送



网络编程学习_设计模式_半同步半异步模式_第1张图片


你可能感兴趣的:(网络编程学习_设计模式_半同步半异步模式)