`

分布式消息系统 Kafka 简介

 
阅读更多
Kafka是分布式发布-订阅消息系统。它最初由LinkedIn公司开发,之后成为Apache项目的一部分。Kafka是一个分布式的,可划分的,冗余备份的持久性的日志服务。它主要用于处理活跃的流式数据。

在大数据系统中,常常会碰到一个问题,整个大数据是由各个子系统组成,数据需要在各个子系统中高性能,低延迟的不停流转。传统的企业消息系统并不是非常适合大规模的数据处理。为了已在同时搞定在线应用(消息)和离线应用(数据文件,日志)Kafka就出现了。Kafka可以起到两个作用:

降低系统组网复杂度。

降低编程复杂度,各个子系统不在是相互协商接口,各个子系统类似插口插在插座上,Kafka承担高速数据总线的作用。

1、Kafka主要特点:

同时为发布和订阅提供高吞吐量。据了解,Kafka每秒可以生产约25万消息(50 MB),每秒处理55万消息(110 MB)。

可进行持久化操作。将消息持久化到磁盘,因此可用于批量消费,例如ETL,以及实时应用程序。通过将数据持久化到硬盘以及replication防止数据丢失。

分布式系统,易于向外扩展。所有的producer、broker和consumer都会有多个,均为分布式的。无需停机即可扩展机器。

消息被处理的状态是在consumer端维护,而不是由server端维护。当失败时能自动平衡。

支持online和offline的场景。

2、Kafka的架构:

Kafka的整体架构非常简单,是显式分布式架构,producer、broker(kafka)和consumer都可以有多个。Producer,consumer实现Kafka注册的接口,数据从producer发送到broker,broker承担一个中间缓存和分发的作用。broker分发注册到系统中的consumer。broker的作用类似于缓存,即活跃的数据和离线处理系统之间的缓存。客户端和服务器端的通信,是基于简单,高性能,且与编程语言无关的TCP协议。


3、几个基本概念:

Topic:特指Kafka处理的消息源(feeds of messages)的不同分类。

Partition:Topic物理上的分组,一个topic可以分为多个partition,每个partition是一个有序的队列。partition中的每条消息都会被分配一个有序的id(offset)。

Message:消息,是通信的基本单位,每个producer可以向一个topic(主题)发布一些消息。

Producers:消息和数据生产者,向Kafka的一个topic发布消息的过程叫做producers。

Consumers:消息和数据消费者,订阅topics并处理其发布的消息的过程叫做consumers。

Broker:缓存代理,Kafa集群中的一台或多台服务器统称为broker。

4、消息发送的流程:


1. Producer根据指定的partition方法(round-robin、hash等),将消息发布到指定topic的partition里面

2. kafka集群接收到Producer发过来的消息后,将其持久化到硬盘,并保留消息指定时长(可配置),而不关注消息是否被消费。

3. Consumer从kafka集群pull数据,并控制获取消息的offset

转自:http://my.oschina.net/leejun2005/blog/304145
分享到:
评论

相关推荐

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

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

    分布式消息系统Kafka.pdf

    分布式消息系统Kafka.pdf 本文主要介绍了分布式消息系统Kafka的概述、架构、应用场景、工作原理等方面的知识点。 1. Kafka 概述 Kafka 是一个快速、可扩展的、高吞吐的、可容错的分布式“发布-订阅”消息系统。...

    开课吧-05分布式消息系统Kafka.pdf

    分布式消息系统Kafka是一种高效、可扩展且容错性强的发布-订阅模型的消息中间件,由Scala和Java语言编写。Kafka的设计目标是提供高吞吐量的消息传递能力,相较于ActiveMQ、RabbitMQ等传统消息队列,Kafka具备更高的...

    开课吧-01分布式消息系统Kafka.pdf

    【分布式消息系统 Kafka】 Kafka 是一款高性能的分布式消息系统,由 Apache 软件基金会开发,主要用于构建实时数据管道和流应用。它的核心特性包括高吞吐量、可扩展性、容错性和持久性。Kafka 使用 Scala 和 Java ...

    KAFKA分布式消息系统(window)

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

    浅谈分布式消息技术:Kafka.docx

    《深入理解Kafka:分布式消息系统的精髓》 Kafka,这一由LinkedIn原创并最终成为Apache顶级项目的分布式消息系统,以其高效、稳定...理解并熟练掌握Kafka的原理和应用,对于构建高效率、高可用的分布式系统至关重要。

    kafka:一个分布式消息系统

    "Kafka:一个分布式消息系统" ...Kafka 是一个功能强大、灵活的分布式消息系统,能够满足大多数分布式系统的消息传递需求。它提供了高性能、可扩展性强、可靠的消息传递服务,可以满足各种分布式系统的需求。

    基于NS3的分布式消息系统Kafka的仿真实现.pdf

    #资源达人分享计划#

    分布式消息队列kafka详解.rar

    分布式消息队列Kafka是一种高吞吐、低延迟、可扩展的消息系统,广泛应用于大数据处理、实时流处理和数据集成场景。以下是对Kafka的详细解释: 1. **概念理解**: Kafka是由LinkedIn开发并贡献给Apache软件基金会的...

    40 1 分布式消息通信Kafka

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

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

    总而言之,分布式消息系统在构建高可用、可扩展的分布式系统中扮演着至关重要的角色。根据业务需求、性能指标以及团队的技术栈,选择合适的分布式消息系统能够有效提升系统的效率和稳定性。在评估和选择过程中,对...

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

    Kafka 的这些特点为构建可靠的分布式系统和大数据处理提供了坚实的基础。 首先,分布式系统的核心在于能够分布在多个物理机器上运行,分布式系统可以提升系统的可用性、容错性和可伸缩性。Kafka 作为一个分布式消息...

    Kafka分布式消息系统实战(与Java+Scala+Hadoop+Storm集成)

    Kafka是分布式的消息队列,作为云计算服务的基石,它广泛的应用在实时数据流方面,是实时数据处理的数据中枢,广泛应用在很多互联网企业,例如:linkedin,facebook,腾讯,百度,阿里等。实时数据流是现在互联网...

    基于分布式的发布订阅消息系统Kafka

    **基于分布式的发布订阅消息系统Kafka** Kafka是一种高性能、可扩展的分布式消息系统,由LinkedIn开发并贡献给了Apache软件基金会。它被设计为一个实时处理大量数据的平台,适用于大数据流处理、日志聚合、网站活性...

    Kafka分布式消息系统

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

    大数据 分布式 读写 kafka

    “对大数据分布式开发有兴趣朋友,可以看看”,这句话意味着这个压缩包可能包含了一些示例代码和教程,适合初学者或对分布式系统有兴趣的人学习。通过这个项目,用户可以了解如何在分布式环境中使用Kafka处理大规模...

    KAFKA分布式消息系统

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

    基于NS3的分布式消息系统Kafka的仿真实现 (2015年)

    在数据已渗透到我们生活的各个领域的时代,人们对于数据的挖掘和使用愈发频繁。作为以消息为单位进行数据...Kafka 即是一种处理海量数据的分布式消息系统[1]。本文总结了Kafka系统的特征和架构策略,对其进行抽象建模,通

Global site tag (gtag.js) - Google Analytics