一、什么是消息系统

消息系统负责将数据从一个应用程序传输到另一个应用程序,因此应用程序可以专注于数据,但不担心如何共享它。 分布式消息传递基于可靠消息队列的概念。 消息在客户端应用程序和消息传递系统之间异步排队。 有两种类型的消息模式可用: 一种是点对点,另一种是发布 - 订阅(pub-sub)消息系统。

基于kafka的消息总线架构设计 kafka消息系统_kafka


二、Kafka

2.1、Kafka简介

Apache Kafka是一个分布式发布 - 订阅消息系统和一个强大的队列,可以处理大量的数据,并使您能够将消息从一个端点传递到另一个端点。 Kafka适合离线和在线消息消费。 Kafka消息保留在磁盘上,并在群集内复制以防止数据丢失。 Kafka构建在ZooKeeper同步服务之上。 它与Apache Storm和Spark可以非常好地集成,用于实时流式数据分析。


2.2、Kafka特性

  • 可靠性 - Kafka是分布式,分区,复制和容错的。
  • 可扩展性 - Kafka消息传递系统轻松缩放,无需停机。
  • 分布式 - 日志的分区partition (分布)在Kafka集群的服务器上。
  • 耐用性 - Kafka使用分布式提交日志,这意味着消息会尽可能快地保留在磁盘上,因此它是持久的。
  • 性能 - Kafka对于发布和订阅消息都具有高吞吐量。 即使存储了许多TB的消息,它也保持稳定的性能。

2.3、Kafka架构




基于kafka的消息总线架构设计 kafka消息系统_kafka_02


2.4、Kafka核心概念



基于kafka的消息总线架构设计 kafka消息系统_基于kafka的消息总线架构设计_03



2.5、Kafka数据流

对于每一个topic, Kafka集群都会维持一个分区日志。

每个分区都是有序且顺序不可变的记录集,并且不断地追加到结构化的commit log文件。

分区中的每一个记录都会分配一个id来表示顺序,也叫offset。offset用来唯一的标识分区中每一条记录。



基于kafka的消息总线架构设计 kafka消息系统_分布式_04


Kafka 集群保留所有发布的记录—无论他们是否已被消费—并通过一个可配置的参数——保留期限来控制。

例如,如果保留策略设置为100天(当然不建议大家这样做),一条记录发布后100天内,可以随时被消费,100天后这条记录会被抛弃并释放磁盘空间。



基于kafka的消息总线架构设计 kafka消息系统_kafka_05