- 核心:考虑当前设计是否存在“漏洞”
- 意图:杜绝类似问题的再次发生
案例:消息传递
例如有A设备和B设备。两个设备需要进行通信。
问题:当A设备无法收到B设备的RSP消息时,会发生什么?
当A设备无法收到RSP消息时,就无法发送ACK消息给设备B,然后两个设备的就进入了相互等待的状态。
问题:如何解决这个问题呢?
我们可以让设备B定时重发RSP消息,这样就可以避免两个设备进入死锁的状态了。
问题:但是当我们需要新增一个设备的时候,是否需要在每个设备中添加这种重发机制,这样就会使得代码的复用性不高。还有更好的办法解决这个问题吗?
解决方案二:增加消息中转层
- 负责所有设备之间通信消息的发送和接收
- 处理所有通信异常的处理(阻塞重发,报告错误,etc)