一、官网

  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. Grafana 监控系统是否重启

    一.概述 Linux 内核(以下简称内核)是一个不与特定进程相关的功能集合,内核的代码很难轻易的在调试器中执行和跟踪.开发者认为,内核如果发生了错误,就不应该继续运 行.因此内核发生错误时,它的行为通 ...

  2. DDD领域模型数据访问权限之权限(十二)

    实现权限的领域对象:BAS_Permission public partial class BAS_Permission:AggreateRoot { private IRepository<B ...

  3. ERP商品类型管理相关业务处理(三十五)

    根据类型编号获取父类名称 -- ============================================= CREATE FUNCTION [dbo].[FN_getParentTyp ...

  4. CCF CSP认证考试试题

    1. 201803-1 跳一跳 试题编号: 201803-1 试题名称: 跳一跳 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 近来,跳一跳这款小游戏风靡全国,受到不少玩家的 ...

  5. poj 1511 正向 反向 构两个图

    有向图 源点为1 求源点到其他各点的最短距离之和 再在其他点到源点的最短距离之和 再加起来 多源点一终点 只要反向构图就行了 Sample Input 2 //T2 2 //结点数 边数1 2 13 ...

  6. 线程池 多线程运行结束后 如何关闭? ExecutorService的正确关闭方法

    前言 最近在使用ExecutorService的时候,对于与ExecutorService相关的概念有些迷糊, 加上本身ExecutorService内部的有些方法名在取名上也容易让使用者误解,导致 ...

  7. 基于thinkphp的RBAC权限控制

    RBAC  Role-Based Access Control 权限控制在后台管理中是十分常见的,它的模型大体上是下面这张图的形式 我用的字段和上面不一样,图只是个示例 一个简易的权限控制模型只需要3 ...

  8. Mysql mysqld_safe启动与myslqd启动坑

    一.用mysqld_safe启动时候无法看到报错信息. 二.用mysqld启动时候可以看到日志实时打印.

  9. P2393 yyy loves Maths II

    P2393 yyy loves Maths IIlong double比如保留5位小数*1000000都变成整数最后再/1000000避免精度误差scanf("%Lf",& ...

  10. 利用zabbix监控oracle数据库

    一.概述 zabbix是一款非常强大,同时也是应用最为广泛的开源监控软件,本文将给大家介绍如何利用zabbix监控oracle数据库. 二.环境介绍 以下是我安装的环境,实际部署时并不需要跟我的环境一 ...