异步通信原理

1、 异步通信原理

在这里插入图片描述
在这里插入图片描述

1.1. 观察者模式

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

1.2. 生产者消费者模式

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

1.3. 缓冲区

  • 解耦
    • 假设生产者和消费者分别是两个类。如果让生产者直接调用消费者的某个方法,那么生产者对于消费者就会产生依赖
  • 支持并发
    1. 生产者直接调用消费者的某个方法过程中函数调用是同步的 。
    2. 万一消费者处理数据很慢,生产者就会白白糟蹋大好时光
  • 支持忙闲不均
    1. 缓冲区还有另一个好处。如果制造数据的速度时快时慢,缓冲区的好处就体现出来了。
    2. 当数据制造快的时候,消费者来不及处理,未处理的数据可以暂时存在缓冲区中。
    3. 等生产者的制造速度慢下来,消费者再慢慢处理掉。

1.4. 数据单元

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

2、消息系统原理

一个消息系统负责将数据从一个应用传递到另外一个应用,应用只需关注于数据,无需关注数据在两个 或多个应用间是如何传递的。

2.1. 点对点消息传递

  • 点对点消息系统中,消息持久化到一个队列中。此时,将有一个或多个消费者消费队列中的数据。但是一条消息只能被消费一次
  • 当一个消费者消费了队列中的某条数据之后,该条数据则从消息队列中删除。
  • 该模式即使有多个消费者同时消费数据,也能保证数据处理的顺序。
  • 基于推送模型的消息系统,由消息代理记录消费状态。

在这里插入图片描述

2.2. 发布订阅消息传递

  • 在发布-订阅消息系统中,消息被持久化到一个topic中。
  • 消费者可以订阅一个或多个topic,消费者可以消费该topic中所有的数据,同一条数据可以被多个消费者消费,数据被消费后不会立马删除
  • 在发布-订阅消息系统中,消息的生产者称为发布者,消费者称为订阅者。
  • Kafka 采取拉取模型(Poll),由自己控制消费速度,消费者可以按照任意的偏移量进行消费。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值