2.消息系统原理
一个消息系统负责将数据从一个应用传递到另外一个应用,应用只需关注于数据,无需关注数据在两个 或多个应用间是如何传递的。
点对点消息传递
- 在点对点消息系统中,消息持久化到一个队列中。此时,将有一个或多个消费者消费队列中的数 据。但是一条消息只能被消费一次。
- 当一个消费者消费了队列中的某条数据之后,该条数据则从消息队列中删除。
- 该模式即使有多个消费者同时消费数据,也能保证数据处理的顺序。
- 基于推送模型的消息系统,由消息代理记录消费状态。
- 消息代理将消息推送(push)到消费者后,标记这条消息为已经被消费,但是这种方式无法很 好地保证消费的处理语义。
发布订阅消息传递
- 在发布-订阅消息系统中,消息被持久化到一个topic中。
- 消费者可以订阅一个或多个topic,消费者可以消费该topic中所有的数据,同一条数据可以被多个 消费者消费,数据被消费后不会立马删除。
- 在发布-订阅消息系统中,消息的生产者称为发布者,消费者称为订阅者。
- Kafka 采取拉取模型(Poll),由自己控制消费速度,以及消费的进度,消费者可以按照任意的偏移 量进行消费。