前面我们说了RabbitMQ和RocketMQ的安装和简单的使用,这次我们说一下Kafka的安装配置,后面我会用几个真实案例来说一下MQ的真实使用场景。天冷了,不愿意伸手,最近没怎么写博客了,还请见谅。

一、目标

  1.知道什么是Kafka

  2.懂得kafka的单机和集群安装配置

  3.了解内部参数的简单配置

二、Kafka简介

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

三、Kafka使用场景

  • 日志收集:一个公司可以用Kafka可以收集各种服务的log,通过kafka以统一接口服务的方式开放给各种consumer,例如hadoop、Hbase、Solr等。
  • 消息系统:解耦和生产者和消费者、缓存消息等。
  • 用户活动跟踪:Kafka经常被用来记录web用户或者app用户的各种活动,如浏览网页、搜索、点击等活动,这些活动信息被各个服务器发布到kafka的topic中,然后订阅者通过订阅这些topic来做实时的监控分析,或者装载到hadoop、数据仓库中做离线分析和挖掘。
  • 运营指标:Kafka也经常用来记录运营监控数据。包括收集各种分布式应用的数据,生产各种操作的集中反馈,比如报警和报告。

四、相关术语

  • Broker

Kafka集群包含一个或多个服务器,这种服务器被称为broker

  • Topic

每条发布到Kafka集群的消息都有一个类别,这个类别被称为Topic。

  • Partition

Partition是物理上的概念,每个Topic包含一个或多个Partition.

  • Producer

负责发布消息到Kafka broker

  • Consumer

消息消费者,向Kafka broker读取消息的客户端。

  • Consumer Group

每个Consumer属于一个特定的Consumer Group(可为每个Consumer指定group name,若不指定group name则属于默认的group)。

五、单机安装

  1.安装jdk,输入yum install -y java-1.8.0-openjdk* 耐心等待即可,安装完成以后,输入$ java -version,检查是否安装成功。

  2.由于Kafka是基于Zookeeper环境的,我们安装一下Zookeeper(不安装也可以,最好配置一下,便于后期理解,建议安装3.*版本)。我以前写过Zookeeper的安装过程,想看的可以去了解一下https://www.cnblogs.com/cxiaocai/p/11597465.html

  3.输入wget https://archive.apache.org/dist/kafka/1.1.0/kafka_2.11-1.1.0.tgz 等待下载完成,Kafka现在是0.*,1.*,2.*三个版本,这里建议使用1.*版本,你也可以下载最新的2.3.1版本,下载方式wget https://mirrors.tuna.tsinghua.edu.cn/apache/kafka/2.3.1/kafka_2.12-2.3.1.tgz,这里说一下,kafka_2.12-2.3.1.tgz前面的2.12是Scala语言版本,后面的2.3.1才是我们的Kafka的版本。官网地址:http://kafka.apache.org/

  4.解压tar -zxvf kafka_2.11-1.1.0.tgz

  5.进入到config目录下,vim server.properties,我们在123行可以看到Zookeeper的配置如下(不是localhost的自己改一下)

  6.启动$ ./bin/kafka-server-start.sh -daemon config/server.properties

  7.进入Zookeeper下查看节点信息。

  输入jps看到我们的进程kafka,单机配置成功。

六、集群安装

  1.重复单机安装步骤。

  2.修改配置文件,在21行broker.id设置为不同的数字,第一台可以设置0,第二台1,依次类推,在123行 zookeeper.connect写入Zookeeper集群连接,例如zookeeper.connect=47.105.137.93:2181,114.215.145.41:2181,115.29.151.4:2181。

  3.分别启动三个Kafka。

  4.测试集群,创建一个主题./bin/kafka-topics.sh --create --zookeeper  47.105.137.93:2181,114.215.145.41:2181,115.29.151.4:2181  --replication-factor 1 --partitions 1 --topic test

  到其它服务器下查看现有主题即可。

七、简单使用

  1.创建主题 ./bin/kafka-topics.sh --create --zookeeper IP:端口,IP:端口 --replication-factor 副本数 --partitions 分区数 --topic 主题名

  例如:./bin/kafka-topics.sh --create --zookeeper 47.105.137.93:2181,114.215.145.41:2181,115.29.151.4:2181 --replication-factor 1 --partitions 1 --topic xiaocaijishu

  2.查看现有主题 ./bin/kafka-topics.sh --list --zookeeper IP:端口,IP:端口

   例如:./bin/kafka-topics.sh --list --zookeeper 47.105.137.93:2181,114.215.145.41:2181,115.29.151.4:2181

  3.删除主题 ./bin/kafka-topics.sh --delete --topic xiaocaijishu2 --zookeeper IP:端口,IP:端口

  例如:./bin/kafka-topics.sh --delete --topic xiaocaijishu2 --zookeeper 47.105.137.93:2181,114.215.145.41:2181,115.29.151.4:2181  

  4.发送消息 ./bin/kafka-console-producer.sh --broker-list Kafka服务器IP:9092 --topic 主题名

  例如:./bin/kafka-console-producer.sh --broker-list 47.105.137.93:9092 --topic xiaocaijishu

  5.消费消息./bin/kafka-console-consumer.sh --bootstrap-server Kafka服务器IP:9092 --consumer-property group.id=消费组名称 --topic 主题名

  例如: ./bin/kafka-console-consumer.sh --bootstrap-server 47.105.137.93:9092 --consumer-property group.id=xiaocaiGroup --topic xiaocaijishu

  6.查看现有消费组 ./bin/kafka-consumer-groups.sh --bootstrap-server Kafka服务器IP:9092 --list

   例如:./bin/kafka-consumer-groups.sh --bootstrap-server 47.105.137.93:9092 --list

最进弄了一个公众号,小菜技术,欢迎大家的加入

java架构之路(MQ专题)kafka集群配置和简单使用的更多相关文章

  1. Kafka集群配置---Windows版

    Kafka是一种高吞吐量的分布式发布订阅的消息队列系统,Kafka对消息进行保存时是通过tipic进行分组的.今天我们仅实现Kafka集群的配置.理论的抽空在聊 前言 最近研究kafka,发现网上很多 ...

  2. HyperLedger Fabric基于zookeeper和kafka集群配置解析

    简述 在搭建HyperLedger Fabric环境的过程中,我们会用到一个configtx.yaml文件(可参考Hyperledger Fabric 1.0 从零开始(八)--Fabric多节点集群 ...

  3. Kafka 集群配置SASL+ACL

    一.简介 在Kafka0.9版本之前,Kafka集群时没有安全机制的.Kafka Client应用可以通过连接Zookeeper地址,例如zk1:2181:zk2:2181,zk3:2181等.来获取 ...

  4. kafka集群配置与测试

    刚接触一些Apache Kafka的内容,用了两天时间研究了一下,仅以此文做相关记录,以供学习交流.  概念: kafka依赖的项: 1. 硬件上,kafka利用线性存储来进行硬盘直接读写. 2. k ...

  5. kafka能做什么?kafka集群配置 (卡夫卡 大数据)

    什么是Kafka 官网介绍: 几个概念: 详细介绍 : 操作kafka: kafka集群 消息测试 问题检测 什么是Kafka 官网介绍: ApacheKafka是一个分布式流媒体平台.这到底是什么意 ...

  6. kafka集群配置和java编写生产者消费者操作例子

    kafka 安装 修改配置文件 java操作kafka kafka kafka的操作相对来说简单很多 安装 下载kafka http://kafka.apache.org/downloads tar ...

  7. linux运维、架构之路-Hadoop完全分布式集群搭建

    一.介绍 Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS.HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件 ...

  8. Kafka集群配置

    kafka_2.11-0.9.0.1.tgz 1.进入项目前的目录 cd /home/dongshanxia mkdir kafka #创建项目目录 cd kafka #进入项目目录 mkdir ka ...

  9. kafka集群安装及简单使用

    关于kafka是什么及原理,请参考kafka官方文档的介绍:http://kafka.apache.org/documentation/#introduction ,英文不好的同学可以看这里http: ...

随机推荐

  1. PHP in_array

    1.函数的作用:判读一个元素是否在一个数组存在 2.函数的参数: @param mixed $needle @param array $array 3. if it’s ok to use isset ...

  2. Kubernetes WebSSH终端窗口自适应Resize

    追求完美不服输的我,一直在与各种问题斗争的路上痛并快乐着 上一篇文章Django实现WebSSH操作Kubernetes Pod最后留了个问题没有解决,那就是terminal内容窗口的大小没有办法调整 ...

  3. 微信小程序之页面引用utils中的js文件

    /* 只可使用相对路径 */const utils = require('../../../utils/util.js') Page({})

  4. PageObjec页面对象模式(理论)

    ui自动化测试的分层思想:实现测试数据与业务数据分离 1. 基础层 2. 对象层:每个页面的操作元素封装为一个文件 3.测试用例层:调用对象层封装的方法进行测试用例编写

  5. java web项目下的lib和build path 中jar包问题解惑

    一.build path&WEB-INFO/lib介绍 build path:可以说是引用: WEB-INFO/lib:可以说是固定在一个地方: eclipse编译项目的时候是根据build ...

  6. Yii2.0教程应用结构篇 —— 入口脚本

    入口脚本是应用启动流程中的第一环,一个应用(不管是网页应用还是控制台应用)只有一个入口脚本.终端用户的请求通过入口脚本实例化应用并将将请求转发到应用. Web 应用的入口脚本必须放在终端用户能够访问的 ...

  7. 将windows项目移植到linux上

    提要:由于项目使用java开发,移植中没有什么编译问题(移植很快,但小问题多) 1.移植过程中遇到的问题: (1).由于项目中使用了 1024以下的端口号,导致网络通信一直出错 原因:因为Linux要 ...

  8. krry-transfer ⏤ 基于 element 的升级版穿梭框组件发布到 npm 啦

    博客地址:https://ainyi.com/81 基于 element ui 的==升级版穿梭框组件==发布到 npm 啦 看过我之前博客的同学或许知道我之前写过关于 element 穿梭框组件重构 ...

  9. FBV与CBV

    一.FBV FBV(function base views) 就是在视图里使用函数处理请求,也是我们最开始接触和使用的方式. urls.py urlpatterns = [ path('login/' ...

  10. Spring Boot 使用@Scheduled定时器任务

    摘要: Spring Boot之使用@Scheduled定时器任务 假设我们已经搭建好了一个基于Spring Boot项目,首先我们要在Application中设置启用定时任务功能@EnableSch ...