欢迎来到Kafka的世界
前端
当今世界,应用程序(商业、社会、或者其余类型)不断的产生实时数据,这些数据须要经过简单的方式快速可靠的传送给各类接收者。大多数时候,这些信息的生产者与消费者彼此独立不能互相访问。有时候这一点致使须要重建信息的生产者或者消费者,用以在他们之间创建一个集成点。所以,须要一种机制,能把信息的生产者与消费者无缝的集成起来,以免在应用程序另外一端任何形式的重写。web
在当前大数据时代,第一个重大的挑战是收集这些海量数据,第二挑战是分析这些数据,这些分析一般包括如下等类型的数据。数据库
用户行为数据服务器
应用程序性能跟踪网络
实时日志数据分布式
事件消息oop
消息发布是一种在消息传递的帮助下链接各类应用程序的机制,经过一个消息代理,好比kafka,将大量实时数据快速路由到多个消费者,Kafka提供了一种生产者与消费者之间的无缝集成机制,既不须要阻塞生产者产生消息,也不须要让生产者知道谁是消费者性能
Apache Kafka是一个开源的分布式消息发布订阅系统,主要的设计特色以下:
大数据
持久化消息:要获取大数据的真正意义,任何类型的数据都不能丢失。Apache Kafka被设计成,存储大量消息数据,甚至TB级时,性能还是常数时间O(1)spa
高吞吐量:
分布式:Apache Kafka在Kafka服务器上支持消息分区,而且向一组消费者发送消息时可以保证消息语义的顺序。
多个客户端支持Apache Kafka系统能够很是简单的与其余不一样平台整合,好比Java, .NET, PHP, Ruby, 和 Python。
实时:由生产者线程产生的消息应该马上被消费者线程看见,这对于基于事件驱动的系统,例如复琐事件处理系统(CEP),是相当重要的特性。
Kafka提供了一个实时的发布-订阅解决方案,克服了数据量在以数量级增加的状况下实时数据的使用,Kafka一样支持在Hadoop系统中数据的平行加载。
下图展现了一个基于Kafka消息系统的典型数据统计分析系统解决方案:
在生产端有各类不一样的生产者,好比如下:
前端web应用程序生成的日志
生产者商代理生成web分析日志
生产者适配器生产的转换日志
生产者服务生产的调用跟踪日志
在消费端有各类不一样的消费者,好比如下:
离线消费者,在hadoop或者传统的数据仓库中使用或存储消息
近似实时消费者,在NoSQL数据库中,好比:HBase或Cassandra,使用或存储消息以供实时分析
实时消费者,在内存数据库过滤消息并触发后续组件相关事件
Kafka的必要性
大量数据由具备基于网络呈现与活动的公司生产,数据是这些基于互联网的系统的新材料之一,一般包括用户活动事件,对应有登录、页面浏览、点击、社交网络活动(例如:喜欢、分享和评论)和操做及系统指标。