1.异步通信原理

1.异步通信原理

观察者模式

  • 观察者模式(Observer),又叫发布-订阅模式(Publish/Subscribe)
  • 定义对象间一种一对多的依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到 通知并自动更新。
  • 一个对象(目标对象)的状态发生改变,所有的依赖对象(观察者对象)都将得到通知。
  • 现实生活中的应用场景
    • 京东到货通知

生产者消费者模式

  • 传统模式
    • 生产者直接将消息传递给指定的消费者
    • 耦合性特别高,当生产者或者消费者发生变化,都需要重写业务逻辑
  • 生产者消费者模式
    • 通过一个容器来解决生产者和消费者的强耦合问题。生产者和消费者彼此之间不直接通讯,而通过阻塞队列来进行通讯
  • 数据传递流程
    • 生产者消费者模式,即N个线程进行生产,同时N个线程进行消费,两种角色通过内存缓冲区 进行通信,
    • 生产者负责向缓冲区里面添加数据单元
    • 消费者负责从缓冲区里面取出数据单元
      • 一般遵循先进先出的原则

缓冲区

  • 解耦
    • 假设生产者和消费者分别是两个类。如果让生产者直接调用消费者的某个方法,那么生产者 对于消费者就会产生依赖
  • 支持并发
    • 生产者直接调用消费者的某个方法过程中函数调用是同步的
    • 万一消费者处理数据很慢,生产者就会白白糟蹋大好时光

数据单元

  • 关联到业务对象
    • 数据单元必须关联到某种业务对象
  • 完整性
    • 就是在传输过程中,要保证该数据单元的完整
  • 独立性
    • 就是各个数据单元之间没有互相依赖
    • 某个数据单元传输失败不应该影响已经完成传输的单元;也不应该影响尚未传输的单元。
  • 颗粒度
    • 数据单元需要关联到某种业务对象。那么数据单元和业务对象应该处于的关系(一对一?一 对多)
    • 如果颗粒度过小会增加数据传输的次数
    • 如果颗粒度过大会增加单个数据传输的时间,影响后期消费