一、概述

  1.kafka是什么

    根据标题可以有个概念:kafka是storm的上游数据源之一,也是一对经典的组合,就像郭德纲和于谦

    根据官网:http://kafka.apache.org/intro 的解释呢,是这样的:

 

   Apache Kafka® is a distributed streaming platform

    ApacheKafka®是一个分布式流媒体平台

  l Apache Kafka是一个开源消息系统,由Scala写成。是由Apache软件基金会开发的一个开源消息系统项目。

  l Kafka最初是由LinkedIn开发,并于2011年初开源。2012年10月从Apache Incubator毕业。该项目的目标是为处理实时数据提供一个统一、高通量、低等待的平台。

  l Kafka是一个分布式消息队列:生产者、消费者的功能。它提供了类似于JMS的特性,但是在设计实现上完全不同,此外它并不是JMS规范的实现

  l Kafka对消息保存时根据Topic进行归类,发送消息者称为Producer,消息接受者称为Consumer,此外kafka集群有多个kafka实例组成,每个实例(server)成为broker。

  l 无论是kafka集群,还是producer和consumer都依赖于zookeeper集群保存一些meta信息,来保证系统可用

 2.主要feature

   1:It lets you publish and subscribe to streams of records.发布和订阅消息流,这个功能类似于消息队列,这也是kafka归类为消息队列框架的原因

  2:It lets you store streams of records in a fault-tolerant way.以容错的方式记录消息流,kafka以文件的方式来存储消息流

  3:It lets you process streams of records as they occur.可以再消息发布的时候进行处理

  3.使用场景

    在流式计算中,Kafka一般用来缓存数据,Storm通过消费Kafka的数据进行计算。

    经典组合是:kafka+storm+redis

   4.消息队列补充

    JMS参考基础篇ActiveMQ相关介绍:http://www.cnblogs.com/jiangbei/p/8311148.html

    为什么需要消息队列:     

      消息系统的核心作用就是三点:解耦,异步和并行

    kafka是类JMS,它吸收了JMS两种模式,将发布/订阅模式中消费者或者数据的方式从被动推送变成主动拉取

二、相关概念与组件

  • Topics:一类消息,例如page view日志、click日志等都可以以topic的形式存在,Kafka集群能够同时负责多个topic的分发。
  • Producers:We'll call processes that publish messages to a Kafka topic producers。
  • Consumers:We'll call processes that subscribe to topics and process the feed of published messages consumers。消费组是逻辑上的一个订阅者
  • Broker:消息中间件处理结点,一个Kafka节点就是一个broker,多个broker可以组成一个Kafka集群。
  • Partition:topic物理上的分组,一个topic可以分为多个partition,每个partition是一个有序的队列。(相应的同个topic的不同分区,有消费者组的概念)
什么是consumer group? 一言以蔽之,consumer group是kafka提供的可扩展且具有容错性的消费者机制。
既然是一个组,那么组内必然可以有多个消费者或消费者实例(consumer instance),它们共享一个公共的ID,
即group ID。组内的所有消费者协调在一起来消费订阅主题(subscribed topics)的所有分区(partition)。
当然,每个分区只能由同一个消费组内的一个consumer来消费。(网上文章中说到此处各种炫目多彩的图就会紧跟着抛出来,我这里就不画了,请原谅)。
个人认为,理解consumer group记住下面这三个特性就好了: consumer group下可以有一个或多个consumer instance,consumer instance可以是一个进程,也可以是一个线程 group.id是一个字符串,唯一标识一个consumer group consumer group下订阅的topic下的每个分区只能分配给某个group下的一个consumer(当然该分区还可以被分配给其他group)
  • Segment:partition物理上由多个segment组成。

  更多详细介绍,参考http://kafka.apache.org/intro

            http://blog.csdn.net/a568078283/article/details/51464524

  消息发送流程:

  大数据入门第十七天——storm上游数据源 之kafka详解(一)入门与集群安装

 

kafka消息结构:讲解参考:https://blog.csdn.net/u013256816/article/details/80300225

大数据入门第十七天——storm上游数据源 之kafka详解(一)入门与集群安装

 

 

 

  请带着以下问题思考:

大数据入门第十七天——storm上游数据源 之kafka详解(一)入门与集群安装
分组策略
如何保证数据的完全生产

partition数量和broker的关系
每个partition数据如何保存到硬盘上
kafka有什么独特的特点(为什么它是大数据下消息队列的宠儿)

消费者如何标记消费状态
消费者负载均衡的策略
如何保证消费者消费数据是有序的
View Code

相关文章: