1.异步通信原理
观察者模式
- 观察者模式(Observer),又叫发布-订阅模式(Publish/Subscribe)
- 定义对象间一种一对多的依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到 通知并自动更新。
- 一个对象(目标对象)的状态发生改变,所有的依赖对象(观察者对象)都将得到通知。
- 现实生活中的应用场景
生产者消费者模式
- 传统模式
- 生产者直接将消息传递给指定的消费者
- 耦合性特别高,当生产者或者消费者发生变化,都需要重写业务逻辑
- 生产者消费者模式
- 通过一个容器来解决生产者和消费者的强耦合问题。生产者和消费者彼此之间不直接通讯,而通过阻塞队列来进行通讯
- 数据传递流程
- 生产者消费者模式,即N个线程进行生产,同时N个线程进行消费,两种角色通过内存缓冲区 进行通信,
- 生产者负责向缓冲区里面添加数据单元
- 消费者负责从缓冲区里面取出数据单元
缓冲区
- 解耦
- 假设生产者和消费者分别是两个类。如果让生产者直接调用消费者的某个方法,那么生产者 对于消费者就会产生依赖
- 支持并发
- 生产者直接调用消费者的某个方法过程中函数调用是同步的
- 万一消费者处理数据很慢,生产者就会白白糟蹋大好时光
数据单元
- 关联到业务对象
- 完整性
- 独立性
- 就是各个数据单元之间没有互相依赖
- 某个数据单元传输失败不应该影响已经完成传输的单元;也不应该影响尚未传输的单元。
- 颗粒度
- 数据单元需要关联到某种业务对象。那么数据单元和业务对象应该处于的关系(一对一?一 对多)
- 如果颗粒度过小会增加数据传输的次数
- 如果颗粒度过大会增加单个数据传输的时间,影响后期消费