Kafka
Kafka 简介
Kafka 是由 Apache 软件基金会开发的一个开源流处理平台,由 Scala 和 Java 编写,Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者在网站中的所有动作流数据。 对于像Hadoop一样的日志数据和离线分析系统,但又要求实时处理的限制,这是一个可行的解决方案。Kafka的目的是通过Hadoop的并行加载机制来统一线上和离线的消息处理,也是为了通过集群来提供实时的消息。
Kafka 的架构师 jay kreps 对于 kafka 的名称由来是这样讲的,由于jay kreps 非常喜欢 franz kafka,并且觉得kafka 这个名字很酷,因此取了个和消息传递系统完全不相干的名称 Kafka,该名字并没有特别的含义。
Kafka作为一个分布式流处理平台,其设计旨在提供高性能、高可扩展性和高可靠性的消息队列服务,特别适用于大规模数据流处理场景。
消息队列
消息队列(Message Queue,简称MQ)是一种应用间的通信方法,它通过在应用程序之间引入一个中间层,来解耦消息的生产和消费过程。
具体来说,消息队列的工作原理如下:
-
解耦(Decoupling):消息队列允许消息的生产者(Producer)和消费者(Consumer)独立工作,它们不需要直接交互或了解对方的存在。生产者只需将消息放入队列,而消费者则从队列中取出并处理消息。这样,系统组件之间就不需要紧密绑定,提高了系统的灵活性和可维护性。
-
削峰填谷(Load Leveling):在高流量期间,消息队列可以作为缓冲区暂时存储过多的请求,待系统有能力处理时再逐步消费这些消息。这样可以防止因瞬间高峰流量导致的服务崩溃,使系统负载更加平滑。
-
异步处理(Asynchronous Processing):消息队列支持异步处理模式,即生产者无需等待消息被处理完毕即可继续执行后续操作。这种方式可以提高整体系统的响应速度和吞吐量。
-
可扩展性和可靠性:通过复制和分布式部署,消息队列可以容易地扩展以应对更大的消息量,并通过消息确认和持久化机制确保消息不会丢失。
-
传输模式:主要有两种模式:
- 点对点(Point-to-Point, P2P)