分布式消息队列Kafka原理
消息队列是位于生产者和消费者之间的中间件,解除了生产者和消费者的直接依赖关系,使得软件架构更容易扩展和伸缩。能够缓冲生产者产生的数据,防止消费者无法及时处理生产者产生的数据。
kafka架构由Producer、Broker和Consumer三类组件构成,其中Producer将数据写入Broker、Consumer则从Broker上读取数据进行处理,而Broker构成了连接Producer和Consumer的缓冲区。Kafka Broker中的消息被划分成若干个topic,同属一个topic的所有数据按照某种策略被分成多个partition,以实现负载分摊和数据并行处理。
分布式Kafka集群部署参考:
CentOS7搭建Kafka2.6分布式集群
一、Kafka设计动机
业务简单,只需要一条数据流水线即可,即从前端机器上收集日志,直接导入后端的存储系统中进行分析。当业务规模发展到一定程度后,业务逻辑会变得复杂起来,数据量也会越来越多,此时可能需要增加多条数据线,每条数据线将收集到的数据导入不同的存储和分析系统中。此时若仍采用之前的数据收集模式,将收集到的数据直接写入后端,则会产生以下几个潜在的问题:
- 数据生产者和消费者耦合度过高。
- 生产者和消费者间数据处理速率不对等。如果生产者产生数据速度过快,可能会导致消费者压力过大,设置崩溃。
- 大量并发的网络连接对后端消费者不够友好。大量生产者直接与消费者通信,对消费者造成过大的网络并发压力,会成为系统扩展过程中潜在的性能瓶颈。