《Kafka 0.9.0 Documentation》----Getting Started

原创 2015年11月19日 14:50:30
一、基本概念
1.1、定义
Kafka是一个消息中间件框架。
1.2、结构
Kafka的整体结构如图1所示:

                                     图1


producer:生产者,生产消息。
consumer:消费者,消费消息。
kafka cluster:核心,提供服务将生产者生产的消息可靠高效地转发给消费者进行消费。一个"kafka cluster"由1到多个节点组成,每个节点被称为"broker"。
"producer和consumer"与"kafka cluster"之间的通信采用特定的协议。
1.3、数据流
1.3.1、主题和分区
Kafka以"主题(Topic)"为单位组织消息,Kafka在存储"主题"内所有消息时,又会进行分区,每个分区只能存放在一个"broker"上,而一个"broker"上可以存放多个分区。
为了容错,每个分区都可以有很多备份分区保存在"broker"上。存储分区的"broker"被称为"leader",存储相应的备份分区的"broker"被称为"follower",当该分区的"leader"失效时,会从所有相应的"follower"中选出一个成为新的"leader"。
1.3.2、生产者与主题
一个生产者进程可以绑定多个主题,多个生产者进程也可以绑定同一个主题,即生产者进程与主题的关系是“多对多”。
生产者进程会将生产的消息发送给所有绑定的主题。某个单个消息具体是发送给主题的哪个分区,可以有多种策略,比如轮转策略,根据消息的key值等。
分区内根据接收顺序存放消息,消费时,也根据相同的顺序进行消费。
1.3.3、消费者与主题
消费者进程组可以绑定多个主题,多个消费者进程组也可以绑定同一个主题,即消费者进程组与主题的关系是“多对多”。
一个主题内的分区跟绑定的消费者进程组内的某个消费者进程绑定,绑定的关系可以是"1:1"或者"N:1",而不可以是"1:M"或者"N:M",这样子才能保证消息被消费的顺序跟生产的顺序(其实是分区内接收消息的顺序)一致。
消费者进程消费分区内消息:一般是顺序读,允许是随机读。

一个可能的数据流拓扑图如图2所示:

                                                                                                            图2


1.4、其他

1、Kafka能够将主题内消息(具体是分区内消息)保存一段时间,该段时间被称为有效期,在有效期内,该消息可被消费。

2、与某个分区绑定的消费者进程可以对该分区内消息进行任意次消费,每次消费都可以对任意位置的消息进行消费。

3、分区的好处:如果不分区,一个"broker"可能存放不下一个主题内的所有消息;分区能够作为基本的并发单元,即分区内消息的消费顺序与生产顺序一致性(其实是分区内接收消息的顺序)能够以较小代价得到保证。
4、分区内消息的消费顺序与生产顺序(其实是分区内接收消息的顺序)被保证一致,而不同分区内消息的消费顺序与生产顺序不能被保证一致。即保证局部一致,而不是整体一致。要想获得整体一致,使得一个主题只包含一个分区(相应的,该唯一分区就只与一个消费者进程绑定了)就行。
5、同一台机器允许有多个消费者和生产者进程。
6、一个主题内分区接收某个生产者进程生产的消息的顺序跟生产顺序一致。需要注意的是,允许同时有多个生产者进程生产消息向同一个分区传递,因为多个生产者进程可以绑定同一个主题,进而最后会向同一个分区写入消息。


二、应用案例

可以被用来作为“消息中间件”(横向比较对象有:ActiveMQ,RabbitMQ等),“网站活动记录收集构件”,“度量统计数据收集构件”,“日志收集构件”(横向比较对象有:Scribe,Flume等)等。


三、安装运行
1、开启Kafka服务
Kafka服务依赖于Zookeeper服务,因此需要运行的命令如下:
bin/zookeeper-server-start.sh config/zookeeper.properties
bin/kafka-server-start.sh config/server.properties
zookeeper默认开启的服务端口为2181,kafka默认开启的服务端口为9092
2、通过管理命令创建一个“主题”
具体执行命令如下:
bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test
表示建立一个名为“test”的主题,主题只含有1个分区。分区的份数为1,即没有备份分区。
3、开启生产者进程
具体执行命令如下:
bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test 
输入消息内容,按"Enter"发送。
4、开启消费者进程
具体执行命令如下:

bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic test --from-beginning


参考文献:

[1]http://kafka.apache.org/documentation.html#gettingStarted

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Kafka 0.9.0 文档翻译-1、Getting Started

kafka目前应用比较广泛,中小规模的公司都把kafka当做大数据平台的数据总线,成为很多流计算系统的输入源,比如storm,flink,spark-streaming等。同时各种应用的日志做离线处理...

Kafka学习整理三(borker(0.9.0及0.10.0)配置)

原文地址:http://blog.csdn.net/louisliaoxh/article/details/51516084 Kafka日志本身是由多个日志段组成(log segment)。...

Apache Kafka 0.9.0说明文档

  • 2016-08-18 18:18
  • 809KB
  • 下载

Kafka(0.9.0.X版本)的消息传输担保机制

在分布式消息系统中,消息的传输担保有两个层面的含义,一是对消息发送与接收的担保,二是对消息成功处理的担保。我们常说的at most once, at least once与exactly once在这...

Sencha学习笔记1: Getting Started with Sencha Touch - 官方Sencha Touch入门指南

Sencha Touch is a high-performance HTML5 mobile application framework. You can use Sencha Touch to p...

Getting Started ObjectARX

下列主题讨论的系统要求ObjectARX并提供安装说明

Spring Security学习(一) Getting Started

翻译自GETTING STARTED保护Web应用程序本指南将引导您完成创建一个资源受Spring Security保护的简单Web应用程序的过程。你将建立什么您将构建一个Spring MVC应用程序...

Android doc |Getting Started|部分 转载 --管理Activity生命周期

管理Activity生命周期

Rift Getting Started Guide

Rift Getting Started Guide入手Oculus后,不会使用的请参看用户指导手册 网址:https://product-guides.oculus.com/en-us/docum...

elasticsearch Getting Started (二)-安装

elasticsearch Getting Started (二)-安装@[ElasticSearch]作者博客地址原文链接(英文)安装Elasticsearch 至少需要Java 7, 特别的这个版...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)