简介

首先简单说下对kafka的理解:

  1、kafka是一个分布式的消息缓存系统;

  2、kafka集群中的服务器节点都被称作broker

  3、kafka的客户端分为:一是producer(消息生产者)负责往消息队列中放入消息;另一类是consumer(消息消费者)负责从消息队列中取消息。客户端和服务器之间的通信采用tcp协议

  4、kafka中不同业务系统的消息可以通过topic(主题)进行区分,也就是说一个主题就是一个消息队列,而且每一个消息topic都会被分区,以分担消息读写的负载

  5、parition(分区)是物理上的概念,每个topic包含一个或多个partition,创建topic时可指定parition数量。每个partition对应于一个文件夹,该文件夹下存储该partition的数据和索引文件。每一个分区都可以有多个副本,以防止数据的丢失

  6、某一个分区中的数据如果需要更新,都必须通过该分区所有副本中的leader来更新

  7、消费者可以分组,每一个consumer属于特定的组,同一topic的一条消息只能被同一个consumer group内的一个consumer消费,但多个consumer group可同时消费这一消息。比如有两个消费者组A和B,共同消费一个topic:topic-1,A和B所消费的消息不会重复.

  比如 topic-1中有100个消息,每个消息有一个id,编号从0-99,那么,如果A组消费0-49号,B组就消费50-99号

  8、消费者在具体消费某个topic中的消息时,可以指定起始偏移量

集群安装、启动

  1、下载安装包并解压

tar xf kafka_2.10-0.8.1.1.tgz
cd kafka_2.10-0.8.1.1

  2、修改config/server.properties配置文件

broker.id=1
zookeeper.connect=192.168.2.100:2181, 192.168.2.110:2181, 192.168.2.120:2181

  注:kafka集群依赖zookeeper集群,所以此处需要配置zookeeper集群;zookeeper集群配置请参见:http://www.cnblogs.com/skyfeng/articles/6701458.html

  3、将kafka解压包使用scp命令拷贝至集群其他节点,命令:

scp -r kafka_2.10-0.8.1.1/ 192.168.2.110://home/hadoop/app

  4、将zookeeper集群启动,请参见:http://www.cnblogs.com/skyfeng/articles/6701458.html

  5、在每一台节点上启动broker

bin/kafka-server-start.sh config/server.properties
//运行在后台命令:
bin/kafka-server-start.sh config/server.properties 1>/dev/null 2>&1 & 
//使用jps命令查看是否启动
[hadoop@hadoop1-1 kafka_2.10-0.8.1.1]$ jps
2400 Jps
2360 Kafka
2289 QuorumPeerMain

简单测试  

  1、在kafka集群中创建一个topic

[hadoop@hadoop1-1 kafka_2.10-0.8.1.1]$ bin/kafka-topics.sh --create --zookeeper 192.168.2.100:2181 --replication-factor 3 --partitions 1 --topic topictest
Created topic "topictest".

    replication-factor:表示副本数量

    partitions :分区数量

  2、用一个producer向某一个topic中写入消息

[hadoop@hadoop1-1 kafka_2.10-0.8.1.1]$ bin/kafka-console-producer.sh --broker-list 192.168.2.100:9092 --topic topictest
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.

  3、用一个comsumer从某一个topic中读取信息

[hadoop@hadoop1-2 kafka_2.10-0.8.1.1]$ bin/kafka-console-consumer.sh --zookeeper 192.168.2.100:2181 --from-beginning --topic topictest
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.

  在生产者中输入内容,消费者会及时从队列中获取消息,如下图:

  

  4、查看一个topic的分区及副本状态信息

[hadoop@hadoop1-3 kafka_2.10-0.8.1.1]$ bin/kafka-topics.sh --describe --zookeeper 192.168.2.110:2181 --topic topictest
Topic:topictest PartitionCount:1 ReplicationFactor:3 Configs:
Topic: topictest Partition: 0 Leader: 1 Replicas: 1,0,2 Isr: 1,0,2
[hadoop@hadoop1-3 kafka_2.10-0.8.1.1]$ bin/kafka-topics.sh --describe --zookeeper 192.168.2.100:2181 --topic topictest
Topic:topictest PartitionCount:1 ReplicationFactor:3 Configs:
Topic: topictest Partition: 0 Leader: 1 Replicas: 1,0,2 Isr: 1,0,2
[hadoop@hadoop1-3 kafka_2.10-0.8.1.1]$ bin/kafka-topics.sh --describe --zookeeper 192.168.2.120:2181 --topic topictest
Topic:topictest PartitionCount:1 ReplicationFactor:3 Configs:
Topic: topictest Partition: 0 Leader: 1 Replicas: 1,0,2 Isr: 1,0,2
[hadoop@hadoop1-3 kafka_2.10-0.8.1.1]$

  5、查看topic

bin/kafka-topics.sh --list --zookeeper 192.168.2.100:

kafka分布式消息队列介绍以及集群安装的更多相关文章

  1. Kafka 分布式消息队列介绍

    Kafka 分布式消息队列 类似产品有JBoss.MQ 一.由Linkedln 开源,使用scala开发,有如下几个特点: (1)高吞吐 (2)分布式 (3)支持多语言客户端 (C++.Java) 二 ...

  2. Kafka分布式消息队列

    基本架构 Kafka分布式消息队列的作用: 解耦:将消息生产阶段和处理阶段拆分开,两个阶段互相独立各自实现自己的处理逻辑,通过Kafka提供的消息写入和消费接口实现对消息的连接处理.降低开发复杂度,提 ...

  3. 【转】快速理解Kafka分布式消息队列框架

     from:http://blog.csdn.net/colorant/article/details/12081909 快速理解Kafka分布式消息队列框架 标签: kafkamessage que ...

  4. (十)RabbitMQ消息队列-高可用集群部署实战

    原文:(十)RabbitMQ消息队列-高可用集群部署实战 前几章讲到RabbitMQ单主机模式的搭建和使用,我们在实际生产环境中出于对性能还有可用性的考虑会采用集群的模式来部署RabbitMQ. Ra ...

  5. kafka分布式消息队列 — 基本概念介绍

    [http://www.inter12.org/archives/818] 这个应该算是之前比较火热的词了,一直没时间抽出来看看.一个新东西出来,肯定是为了解决某些问题,不然不会有它的市场.先简单看下 ...

  6. EQueue - 一个纯C#写的分布式消息队列介绍2

    一年前,当我第一次开发完EQueue后,写过一篇文章介绍了其整体架构,做这个框架的背景,以及架构中的所有基本概念.通过那篇文章,大家可以对EQueue有一个基本的了解.经过了1年多的完善,EQueue ...

  7. 使用Kafka的一些简单介绍: 1集群 2原理 3 术语

    目录 第一节 Kafka 集群 Kafka 集群搭建 Kafka 集群快速搭建 第二节 集群管理工具 集群管理工具 集群 Issues 第三节 使用命令操纵集群 第四节 Kafka 术语说明 第五节 ...

  8. 分布式消息队列RocketMQ(一)安装与启动

    分布式消息队列RocketMQ 一.RocketMQ简介 RocketMQ(火箭MQ) 出自于阿里,后开源给apache成为apache的顶级开源项目之一,顶住了淘宝10年的 双11压力 是电商产品的 ...

  9. zookeeper 介绍与集群安装

    zookeeper 介绍 ZooKeeper是一个分布式开源框架,提供了协调分布式应用的基本服务,它向外部应用暴露一组通用服务——分布式同步(Distributed Synchronization). ...

随机推荐

  1. 每天一个Linux命令(23)--linux 目录结构(二)

    二./usr 的意义与内容 依据FHS的基本定义, /usr 里面放置的数据属于可分享的与不可变动的(shareable,static), 如果你知道如何透过网络进行分区的挂载(例如在服务器篇会谈到的 ...

  2. cassandra 数据到Java对象的映射绑定

    类似Hibernate和MyBatis的关系映射,自动帮你将查询数据或是修改的参数进行数据映射和绑定. 支持查询后返回数据ResultSet到Java对象的映射,支持修改.删除.查询之前参数的绑定. ...

  3. 2017 3-4/5 两天的学习的REVIEW

    明天就要去面试啦,去感受一下,估计又是一顿虐,蓝瘦-- 3月4日:计算机安全基础技术与原理方面的学习 密码体制(密码)由五个部分组成: 消息空间(m),密文空间(c),密钥空间(k),加密算法(E), ...

  4. 配置Server Side TAF

    实验环境:Oracle 11.2.0.4 RAC 参考MOS文档: How To Configure Server Side Transparent Application Failover (文档 ...

  5. Python全栈开发——Linux命令学习

    Linux -- 一切皆文件 pwd: 查看当前所在目录 '/' :根目录 cd : 切换目录   eg.cd /    切换到根目录 ls:查看当前根目录下有几块盘.几个文件 ls -l:查看详细信 ...

  6. wemall app商城源码android开发MD5加密工具类

    wemall-mobile是基于WeMall的android app商城,只需要在原商城目录下上传接口文件即可完成服务端的配置,客户端可定制修改.本文分享android开发MD5加密工具类主要代码,供 ...

  7. Oracle-操作

    登录PL_SQL,输入用户名sys 密码 安装时输入的密码,选择 sysdba 打开plsqldev.exe所在目录下的PlugIns文件夹,如果没有请从其它地方拷入 打开运行命令窗口,输入命令 re ...

  8. 浅谈jquery插件开发模式

    首先根据<jQuery高级编程>的描述来看,jQuery插件开发方式主要有三种: 通过$.extend()来扩展jQuery 通过$.fn 向jQuery添加新的方法 通过$.widget ...

  9. NOI全国赛(1998)——围巾裁剪

    裁缝有一块非常珍贵的丝绸围巾.可惜的是,围巾的某些部分已经被蛀虫给咬坏了.裁缝当然不愿意就这么把围巾给丢了,于是,他想把围巾给裁成两块小围巾送给他的两个女儿.自然,两块小围巾的面积之和越大越好.  这 ...

  10. windows phone 8.1开发:socket通信聊天

    本例用WPF程序做服务器端,windows phone程序做客户端.我们使用基于UDP协议的Socket通信.更多关于socket信息请查看:http://msdn.microsoft.com/zh- ...