一、官网

  http://kafka.apache.org/downloads.html

二、Kafka简介

  Kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写。Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。 这种动作(网页浏览,搜索和其他用户的行动)是在现代网络上的许多社会功能的一个关键因素。 这些数据通常是由于吞吐量的要求而通过处理日志和日志聚合来解决。 对于像Hadoop的一样的日志数据和离线分析系统,但又要求实时处理的限制,这是一个可行的解决方案。Kafka的目的是通过Hadoop的并行加载机制来统一线上和离线的消息处理,也是为了通过集群来提供实时的消息。

  类似的组件还有:Azure的ServiceBus、RabbitMQ等,据网上描述,Kafka比RabbitMQ性能强。

三、安装

  1、安装Java

yum install java-1.8.-openjdk.x86_64

  2、配置JAVA环境变量

export JAVA_HOME=/usr/lib/jvm/java-1.8.-openjdk-1.8.0.-8.b10.el7_5.x86_64/jre
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

  说明:配置时注意JAVA_HOME后面要加到/jre,这个比较特殊。另外,红色区域可以换成您对应的安装版本的路径。

  3、下载Kafka:http://kafka.apache.org/downloads.html

cd /opt
wget http://mirrors.hust.edu.cn/apache/kafka/1.1.0/kafka_2.12-1.1.0.tgz

  4、解压并进入目录

tar -zvxf ./kafka_2.-1.1..tgz
cd kafka_2.-1.1.

  5、启动Zookeeper

  使用安装包中的脚本启动单节点Zookeeper 实例:(参数-daemon表示后台运行)

bin/zookeeper-server-start.sh -daemon config/zookeeper.properties

  6、启动Kafka服务

bin/kafka-server-start.sh config/server.properties

  7、创建一个测试的Topic

bin/kafka-topics.sh --create --zookeeper localhost: --replication-factor  --partitions  --topic test

  查看Topic:

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

  8、产生消息

bin/kafka-console-producer.sh --broker-list localhost: --topic test
>hello xingzhu
>hello sindrol

  9、消费消息

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

  好了,到此,单台Kafka已经安装完成。

四、集群配置

  1、单机多broker 集群配置

     利用单节点部署多个broker。 不同的broker 设置不同的 id,监听端口及日志目录。 例如:

cp config/server.properties config/server-.properties 

    编辑配置:

config/server-.properties:
broker.id=
port=
log.dir=/tmp/kafka-logs-

    启动Kafka服务:

bin/kafka-server-start.sh config/server-.properties &

    启动多个服务后,可以参考第三节内容,产生和消费消息。

  2、多机多broker 集群配置

    分别在多个节点按上述方式安装Kafka,配置启动多个Zookeeper 实例。 例如: 在10.4.253.22,10.4.253.23,10.4.253.24三台机器部署,Zookeeper配置如下:

initLimit=
syncLimit=
server.=10.4.253.22::
server.=10.4.253.23::
server.=10.4.253.24::

    分别配置多个机器上的Kafka服务 设置不同的broke id,zookeeper.connect设置如下:

zookeeper.connect=10.4.253.22:,10.4.253.23:,10.4.253.24:

    启动Zookeeper与Kafka服务,按上文方式产生和消费消息,验证集群功能。

五、外网访问

  安装完成并启动后,如果想要外网通过外网IP访问,需要在config/service.properites中添加如下修改:

advertised.listeners=PLAINTEXT://xxx.xxx.xxx.xxx:port

  修改完成后,重新启动Kafka服务。

六、C#调用

  引入库:kafka-net(https://github.com/Jroland/kafka-net)

  1、模拟消费端

using KafkaNet;
using KafkaNet.Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace KafkaClientDemo.Consumer
{
class Program
{
static void Main(string[] args)
{
var options = new KafkaOptions(new Uri("http://42.159.154.132:9092"));
var router = new BrokerRouter(options); var consumer = new KafkaNet.Consumer(new ConsumerOptions("test", router)); Console.WriteLine("waiting ...");
//Consume returns a blocking IEnumerable (ie: never ending stream)
foreach (var message in consumer.Consume())
{
Console.WriteLine("Response: P{0},O{1} : {2}", message.Meta.PartitionId, message.Meta.Offset, Encoding.UTF8.GetString(message.Value, , message.Value.Length));
}
}
}
}

  2、模拟消息生产端

using KafkaNet;
using KafkaNet.Model;
using KafkaNet.Protocol;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace KafkaClientDemo
{
class Program
{
static void Main(string[] args)
{
var options = new KafkaOptions(new Uri("http://42.159.154.132:9092"));
var router = new BrokerRouter(options);
var client = new Producer(router);
//var topic = client.GetTopic("test"); using (client)
{
while (true)
{
Console.Write(">");
var text = Console.ReadLine();
client.SendMessageAsync("testTopic", new[] { new Message(text, "key_" + DateTime.Now.Ticks) }).Wait(); if (text == "exit")
break;
}
}
}
}
}

  运行效果:

  

  我在部署和学习时,参考了https://www.mtyun.com/library/how-to-install-kafka-on-centos7文章,非常感谢原作者分享。

在Centos6或者7上安装Kafka最新版的更多相关文章

  1. Window上安装kafka

    kafka在windows上的安装.运行 - 进阶者ryan-su - CSDN博客 https://blog.csdn.net/u010283894/article/details/77106159 ...

  2. 如何在CentOS6.4系统上安装KVM虚拟机

    CentOS6.4系统上安装KVM虚拟机   备注:以下操作说明是经过实验验证后总结出来的笔录,有需要的朋友可以进行参考,以下是基于VMware12.5.2虚拟机版本上安装的实验环境. 一.安装KVM ...

  3. 在CentOS 7上安装Kafka

    简介 Kafka 是一种高吞吐的分布式发布订阅消息系统,能够替代传统的消息队列用于解耦合数据处理,缓存未处理消息等,同时具有更高的吞吐率,支持分区.多副本.冗余,因此被广泛用于大规模消息数据处理应用. ...

  4. Kafka安装之二 在CentOS 7上安装Kafka

    一.简介 Kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写.Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据. 这 ...

  5. linux上安装Kafka

    写个一篇kafka文章了.但是那都是针对性能来说的,下面看一下完整的,kafka步骤: 安装单机三个 Broker 的 Kafka 集群,使用 Kafka 集群发布和接收消息.学完本课程,对 Kafk ...

  6. window上安装kafka(单机)

    1.第一步骤,先安装JDK,请参考:https://www.cnblogs.com/xubao/p/10692861.html 2.第二步骤,安装zookeeper,请参考:https://www.c ...

  7. 在CentOS6.8系统上安装MySQL5.7(转)

    mysql-57">如何在CentOS 6.8系统上安装MySQL 5.7? 一.检查系统上是否已经安装MySQL 命令: ? 1 2 3 4 5 [root@localhost ~] ...

  8. Windows上安装Kafka需要注意的几点

    1.不能安装在有空格的路径上 比如:D:\Program Files 2.设置日志路径时,要用"/",不能用Windows上的"\",比如: # A comma ...

  9. 在阿里云ECS(CentOS6.5)上安装mysql

    首先查看服务器上是否已经安装过mysql 命令: rpm -qa | grep mysql 结果: 可以看到ECS上已经有mysql-libs这个包了.这并不影响安装. 查看yum服务器上提供的mys ...

随机推荐

  1. 绝对定位后,position:absolute;不能使用margin: 0 auto;实现居中;

    声明: web小白的笔记,欢迎大神指点!联系QQ:1522025433. 我们都知道margin: 0 auto:可也实现块状元素的水平居中:但是对于绝对顶为的元素就会失效: 请看实例: <!d ...

  2. 2017-2018-2 20155309 南皓芯 Exp9 Web安全基础

    基础问题回答 1.SQL注入攻击原理,如何防御 原理:它是利用现有应用程序,将恶意的SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入恶意SQL语句得到一个存在安全漏洞的网站上的数 ...

  3. php 发送超大数据处理

    set_time_limit(0);//设置永不超时 ignore_user_abort(); //设置客户端断开,继续处理 //总数 $allusercount= $this->gamedb_ ...

  4. Python os.path.basename

    一.获取对应路径下文件的名字 >>> os.path.basename("/etc/sysconfig/selinux") 'selinux' >>& ...

  5. Python replace

    一.replace替换 a = "wohaoshuai" a.replace('a','o') wohooshuoi a.replace('a','') wohoshui

  6. CSS3滚动条美化,CSS3滚动条皮肤

    CSS3 -webkit-scrollbar滚动条皮肤美化实现,利用-webkit-scrollbar,-webkit-scrollbar-track,-webkit-scrollbar-thumb这 ...

  7. 6-1 并行程序模拟 uva210

    用到了 deque 和queue 操作说明: queue  qu:      qu.push(x); int d=qu.front(); qu.pop();        和栈一样只有push和pop ...

  8. win10 更新之后,无法开启wifi,“组或资源的状态不是执行请求操作的正确状态”

    netsh wlan netsh wlan start hostednetwork 请参考最新博客:http://www.cnblogs.com/tanrong/p/8184325.html 已尝试解 ...

  9. hdu1003 Max Sum【最大连续子序列之和】

    题目链接:https://vjudge.net/problem/HDU-1003 题目大意:给出一段序列,求出最大连续子序列之和,以及给出这段子序列的起点和终点. 解题思路:最长连续子序列之和问题其实 ...

  10. Linux系统之常用文件搜索命令

    (一)常用文件搜索命令 (1)which命令 (2)find命令 (3)locate (4)updatedb (5)grep (6)man (7)whatis (一)常用文件搜索命令 (1)which ...