`

Apache Kafka 分布式消息系统

阅读更多
Reference: http://www.infoq.com/cn/articles/apache-kafka
http://kafka.apache.org/documentation.html
RabbitMQ,遵循AMQP协议,由内在高并发的erlanng语言开发,用在实时的对可靠性要求比较高的消息传递上。

kafka是Linkedin于2010年12月份开源的消息发布订阅系统,它主要用于处理活跃的流式数据,大数据量的数据处理上。

Kafka代理

与其它消息系统不同,Kafka代理是无状态的。这意味着消费者必须维护已消费的状态信息。这些信息由消费者自己维护,代理完全不管。这种设计非常微妙,它本身包含了创新。

从代理删除消息变得很棘手,因为代理并不知道消费者是否已经使用了该消息。Kafka创新性地解决了这个问题,它将一个简单的基于时间的SLA应用于保留策略。当消息在代理中超过一定时间后,将会被自动删除。
这种创新设计有很大的好处,消费者可以故意倒回到老的偏移量再次消费数据。这违反了队列的常见约定,但被证明是许多消费者的基本特征。

Kafka生产者性能要好很多的主要原因包括:

Kafka不等待代理的确认,以代理能处理的最快速度发送消息。
Kafka有更高效的存储格式。平均而言,Kafka每条消息有9字节的开销,而ActiveMQ有144字节。其原因是JMS所需的沉重消息头,以及维护各种索引结构的开销。LinkedIn注意到ActiveMQ一个最忙的线程大部分时间都在存取B-Tree以维护消息元数据和状态。

Kafka消费者性能要好很多的主要原因包括:

Kafka有更高效的存储格式;在Kafka中,从代理传输到消费者的字节更少。
ActiveMQ和RabbitMQ两个容器中的代理必须维护每个消息的传输状态。LinkedIn团队注意到其中一个ActiveMQ线程在测试过程中,一直在将KahaDB页写入磁盘。与此相反,Kafka代理没有磁盘写入动作。最后,Kafka通过使用sendfile API降低了传输开销。

Messaging traditionally has two models: queuing and publish-subscribe. In a queue, a pool of consumers may read from a server and each message goes to one of them; in publish-subscribe the message is broadcast to all consumers. Kafka offers a single consumer abstraction that generalizes both of these—the consumer group.
Consumers label themselves with a consumer group name, and each message published to a topic is delivered to one consumer instance within each subscribing consumer group. Consumer instances can be in separate processes or on separate machines.

If all the consumer instances have the same consumer group, then this works just like a traditional queue balancing load over the consumers.

If all the consumer instances have different consumer groups, then this works like publish-subscribe and all messages are broadcast to all consumers.



That there cannot be more consumer instances than partitions.
  • 大小: 26.2 KB
分享到:
评论

相关推荐

    KAFKA分布式消息系统(window)

    **KAFKA分布式消息系统在Windows环境下的搭建与应用** KAFKA是一个高吞吐量的分布式消息系统,由LinkedIn开发并开源,现在是Apache软件基金会的顶级项目。它主要设计用于处理实时流数据,允许应用程序发布和订阅...

    kafkatcl:Apache Kafka 分布式消息系统的 Tcl 接口

    KafkaTcl,Apache Kafka 分布式消息系统的 Tcl 接口KafkaTcl 为 Kafka C 语言 API“librdkafka”提供了一个 Tcl 接口。功能提供自然的 Tcl 接口快速地异步线程安全自由!执照在许可的伯克利版权下开源,请参阅文件 ...

    Apache Kafka 下一代分布式消息系统

    Apache Kafka 是一个高性能的分布式消息系统,它具有可分区、可备份和基于 Zookeeper 协调的特性。作为下一代分布式消息系统,Kafka 提供了发布/订阅消息队列的机制。Kafka 的这些特点为构建可靠的分布式系统和大...

    KAFKA分布式消息系统(linux)

    **Kafka分布式消息系统在Linux环境下的应用与实践** Kafka是一种高性能的分布式消息系统,由LinkedIn开发并贡献给了Apache软件基金会。它被设计为一个可扩展、容错且低延迟的消息中间件,广泛用于大数据实时处理、...

    Kafka分布式消息队列的高性能研究.pdf

    Kafka是一种高吞吐量的分布式消息队列系统,它最初由LinkedIn开发,后来成为了Apache软件基金会的顶级项目。Kafka的主要设计目标是提供低延迟、高可扩展性和容错性的消息传递服务。在大数据处理场景中,Kafka常用于...

    Kafka分布式消息系统

    Kafka 是一种高性能的分布式消息队列,最初由 LinkedIn 开发,现在已成为 Apache 软件基金会的顶级项目。Kafka 主要设计用于处理大规模的日志数据,它以高吞吐量、低延迟和容错性著称。LinkedIn 的日志数据主要包含...

    KAFKA分布式消息系统

    Kafka 是一种分布式消息系统,最初由 LinkedIn 开发,现在是 Apache 软件基金会的顶级项目。Kafka 主要设计目标是处理大规模实时数据,它适用于日志聚合、流处理和作为微服务间的通信桥梁。 Kafka 的核心概念包括...

    【引领数据流动的未来:深度解析Kafka分布式消息系统】

    在数据洪流席卷的今天,Apache Kafka以其卓越的性能、高度的可扩展性和强大的容错机制,傲然屹立于分布式消息系统的巅峰。本资源《Kafka权威指南》,不仅是一本技术手册,更是通往高效数据处理的金钥匙。它不仅仅...

    kafka:一个分布式消息系统

    "Kafka:一个分布式消息系统" Kafka 是一个分布式消息系统,旨在提供高性能、可扩展性强、可靠的消息传递服务。Kafka 的架构包括话题(Topic)、生产者(Producer)、代理(Broker)和消费者(Consumer)四个组件。...

    40 2 深入了解和理解大数据Kafka分布式消息系统的体系架构和实现原理

    教程视频:Kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写。Kafka是一种高吞吐量的分布式发布订阅消息系统

    分布式消息系统Kafka项目-生产者消费者代码实现(基于5台虚拟机完全分布式)

    分布式消息系统Kafka是大数据处理领域中的重要组件,它被广泛应用于实时数据流处理和存储。本项目将探讨如何在基于5台虚拟机的环境中实现Kafka的完全分布式配置,以便构建一个高可用、高性能的消息传递平台。我们将...

    Apache Kafka实战.pdf

    《Apache Kafka实战》这本书深入浅出地介绍了Apache Kafka这一分布式流处理平台的各个方面,旨在帮助读者掌握Kafka的实际应用和核心概念。Kafka是一个高吞吐量、低延迟的消息发布订阅系统,常用于构建实时数据管道和...

    kafka分布式发布订阅消息系统 v3.3.1.tgz

    《Kafka分布式发布订阅消息系统 v3.3.1 深度解析》 Apache Kafka是一款高吞吐量、分布式、基于发布/订阅的消息系统,它最初由LinkedIn开发,并最终捐赠给了Apache软件基金会。Kafka v3.3.1作为其最新的版本,带来了...

    分布式消息系统研究综述.pdf

    本文将深入探讨四种主流的开源分布式消息系统:RabbitMQ、Kafka、ActiveMQ和RocketMQ,分析它们的架构特点和性能表现,以帮助科研人员和系统开发者在实际应用中做出明智的选择。 1. **RabbitMQ**:作为一款基于AMQP...

    kafka分布式发布订阅消息系统 v2.6.3.tgz

    《Kafka分布式发布订阅消息系统 v2.6.3 深度解析》 Apache Kafka是一款高吞吐、低延迟的分布式发布订阅消息系统,它最初由LinkedIn开发,并于2011年开源,后来成为了Apache顶级项目。Kafka v2.6.3是其稳定且功能...

    kettle kafka 消息生产插件

    标题中的“kettle kafka 消息生产插件”指的是Pentaho Data Integration(通常称为Kettle或PDI)中的一款插件,它允许用户通过Kettle工作流将数据发布到Apache Kafka分布式消息系统。Kafka是一种高效、可扩展且容错...

    kafka 分布式消息中间件 基于 Linux 的最新版 kafka_2.12-1.0.0 CSDN 下载

    是一款分布式消息发布和订阅的系统,具有高性能和高吞吐率。 消息的发布(publish)称作producer,消息的订阅(subscribe)称作consumer,中间的存储阵列称作broker。 多个broker协同合作,producer、consumer和...

    大数据 分布式 读写 kafka

    1. Apache Kafka:一个分布式消息系统,用于实时数据流处理。 2. 分布式数据处理:如何在多台机器上分布数据处理任务,提高处理效率和容错性。 3. Maven:Java项目的构建和依赖管理工具,用于编译、测试和打包项目。...

    Apache Kafka Cookbook(PACKT,2015)

    《Apache Kafka Cookbook》是由PACKT在2015年出版的一本专著,专注于介绍Apache Kafka这一分布式流处理平台的实战技巧和最佳实践。Apache Kafka是一个高性能、可扩展且容错性强的消息中间件,它被广泛应用于大数据...

    Streaming Architecture New Designs Using Apache Kafka and MapR Streams

    本文将深入探讨"Streaming Architecture New Designs Using Apache Kafka and MapR Streams"这一主题,阐述如何利用这两种强大的工具构建高效、可扩展的流处理系统。 Apache Kafka是一种分布式流处理平台,由...

Global site tag (gtag.js) - Google Analytics