第一章:Kafka介绍

        欢迎来到Kafka的世界

        当今世界,应用程序(商业、社会、或者其他类型)不断的产生实时数据,这些数据需要通过简单的方式快速可靠的传送给各种接收者。大多数时候,这些信息的生产者与消费者彼此独立不能互相访问。有时候这一点导致需要重建信息的生产者或者消费者,用以在他们之间建立一个集成点。因此,需要一种机制,能把信息的生产者与消费者无缝的集成起来,以避免在应用程序另一端任何形式的重写。

        在当前大数据时代,第一个重大的挑战是收集这些海量数据,第二挑战是分析这些数据,这些分析通常包括以下等类型的数据。

    • 用户行为数据

    • 应用程序性能跟踪

    • 实时日志数据

    • 事件消息

  消息发布是一种在消息传递的帮助下连接各种应用程序的机制,通过一个消息代理,比如kafka,将大量实时数据快速路由到多个消费者,Kafka提供了一种生产者与消费者之间的无缝集成机制,既不需要阻塞生产者产生消息,也不需要让生产者知道谁是消费者

        Apache Kafka是一个开源的分布式消息发布订阅系统,主要的设计特点如下:

    • 持久化消息:要获取大数据的真正意义,任何类型的数据都不能丢失。Apache Kafka被设计成,存储大量消息数据,甚至TB级时,性能仍是常数时间O(1)

    • 高吞吐量:

    • 分布式:Apache Kafka在Kafka服务器上支持消息分区,并且向一组消费者发送消息时能够保证消息语义的顺序。

    • 多个客户端支持Apache Kafka系统可以非常简单的与其他不同平台整合,比如Java, .NET, PHP, Ruby, 和 Python。

    • 实时:由生产者线程产生的消息应该立刻被消费者线程看见,这对于基于事件驱动的系统,例如复杂事件处理系统(CEP),是至关重要的特性。

        Kafka提供了一个实时的发布-订阅解决方案,克服了数据量在以数量级增长的情况下实时数据的使用,Kafka同样支持在Hadoop系统中数据的平行加载。

        下图展示了一个基于Kafka消息系统的典型数据统计分析系统解决方案:

        第一章:Kafka介绍_第1张图片

        在生产端有各种不同的生产者,比如以下:

    • 前端web应用程序生成的日志

    • 生产者商代理生成web分析日志

    • 生产者适配器生产的转换日志

    • 生产者服务生产的调用跟踪日志

    在消费端有各种不同的消费者,比如以下:

    • 离线消费者,在hadoop或者传统的数据仓库中使用或存储消息

    • 近似实时消费者,在NoSQL数据库中,比如:HBase或Cassandra,使用或存储消息以供实时分析

    • 实时消费者,在内存数据库过滤消息并触发后续组件相关事件

    Kafka的必要性

    大量数据由具有基于网络呈现与活动的公司生产,数据是这些基于互联网的系统的新材料之一,通常包括用户活动事件,对应有登陆、页面浏览、点击、社交网络活动(例如:喜欢、分享和评论)和操作及系统指标。

你可能感兴趣的:(第一章:Kafka介绍)