简介

首先简单说下对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. 《深入理解Java虚拟机》学习笔记之工具

    善于利用工具,不仅可以加快我们分析数据,还可以快速定位和解决问题.现在我们就来看看虚拟机性能监控和故障处理工具. 在JDK的bin目录可以看到sun免费送给了我们很多小工具,这些工具虽然小巧但功能强大 ...

  2. grpc-gateway:grpc对外提供http服务的解决方案

    我所在公司的项目是采用基于Restful的微服务架构,随着微服务之间的沟通越来越频繁,就希望可以做成用rpc来做内部的通讯,对外依然用Restful.于是就想到了google的grpc. 使用grpc ...

  3. <c>----<choose><when><otherwise>

    <c:choose> <c:when test="${username== '1' && password== '2'}"> <jsp ...

  4. 1712: [Usaco2007 China]Summing Sums 加密

    1712: [Usaco2007 China]Summing Sums 加密 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 338  Solved: 12 ...

  5. 1625: [Usaco2007 Dec]宝石手镯

    1625: [Usaco2007 Dec]宝石手镯 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 919  Solved: 618 [Submit][S ...

  6. PHP-day01

    <!--php嵌入HTML--><html><head> <title>day01</title></head><body ...

  7. ajax上传图片

    选择文件后 ajax上传图片到后台,后台执行保存操作,返回上传的图片路径,显示到页面 需要引入ajaxfileupload.js js代码 <script type="text/jav ...

  8. effective C++ Item 33 避免隐藏继承而来的名字

    1. 普通作用域中的隐藏 名字实际上和继承没有关系.有关系的是作用域.我们都知道像下面的代码: int x; // global variable void someFunc() { double x ...

  9. ADO.NET温习(一)

    ADO.NET概述 本节复习如何使用ADO.NET访问C#程序中的数据,主要介绍如何使用SqlConnection类和OleDbConnection类连接数据库,以及断开与数据库连接.深入讨论命令对象 ...

  10. 使用Hibernate中出现了Caused by: java.sql.SQLException: Field 'gid' doesn't have a default value

    那是因为表中没有设置主键自动增长,只需要改变表中的主键设置为自动增长即可