概述

Kafka是一款分布式消息发布和订阅系统,它的特点是高性能、高吞吐量。
最早设计的目的是作为LinkedIn的活动流和运营数据的处理管道。这些数据主要是用来对用户做用户画
像分析以及服务器性能数据的一些监控。

所以kafka一开始设计的目标就是作为一个分布式、高吞吐量的消息系统,所以适合运用在大数据传输
场景。

应用场景

由于kafka具有更好的吞吐量、内置分区、冗余及容错性的优点(kafka每秒可以处理几十万消息),让
kafka成为了一个很好的大规模消息处理应用的解决方案。所以在企业级应用长,主要会应用于如下几
个方面:

  1. 行为跟踪:kafka可以用于跟踪用户浏览页面、搜索及其他行为。通过发布-订阅模式实时记录到对应的topic中,通过后端大数据平台接入处理分析,并做更进一步的实时处理和监控。
  2. 日志收集:日志收集方面,很多公司使用kafka代理日志聚合。日志聚合表示从服务器上收集日志文件,然后放到一个集中的平台(文件服务器)进行处理。在实际应用开发中,我们应用程序的log都会输出到本地的磁盘上,排查问题的话通过linux命令来搞定,如果应用程序组成了负载均衡集群,并且集群的机器有几十台以上,那么想通过日志快速定位到问题,就是很麻烦的事情了。所以一般都会做一个日志统一收集平台管理log日志用来快速查询重要应用的问题。所以很多公司的套路都是把应用日志集中到kafka上,然后分别导入到es和hdfs上,用来做实时检索分析和离线统计数据备份等。而另一方面,kafka本身又提供了很好的api来集成日志并且做日志收集。

kafka比较适合于处理大数据领域,对日志数据做行为分析等,并发量非常高,但是对于消息的一致性等操控却没那么精致。

kafka的架构

一个典型的kafka集群包含若干Producer(可以是应用节点产生的消息,也可以是通过Flume收集日志
产生的事件),若干个Broker(kafka支持水平扩展)、若干个Consumer Group,以及一个zookeeper集群。kafka通过zookeeper管理集群配置及服务协同。Producer使用push模式将消息发布到broker,consumer通过监听使用pull模式从broker订阅并消费消息。kafka消费消息的模式是拉取模式。

多个broker协同工作,producer和consumer部署在各个业务逻辑中。三者通过zookeeper管理协调请
求和转发。这样就组成了一个高性能的分布式消息发布和订阅系统。

  1. Broker:Kafka集群包含一个或多个服务器,这种服务器被称为broker(kafka节点)。broker端不维护数据的消费状态,提升了性能。直接使用磁盘进行存储,线性读写,速度快:避免了数据在JVM内存和系统内存之间的复制,减少耗性能的创建对象和垃圾回收。
  2. Producer:消息生产者,负责发布消息到Kafka broker。
  3. Consumer:消息消费者,向Kafka broker读取消息的客户端,consumer从broker拉取(pull)数据并进行处理。
  4. Topic:每条发布到Kafka集群的消息都有一个类别,这个类别被称为Topic。(物理上不同Topic的消息分开存储,逻辑上一个Topic的消息虽然保存于一个或多个broker上但用户只需指定消息的Topic即可生产或消费数据而不必关心数据存于何处)。
  5. Partition:分区,Parition是物理上的概念,每个Topic包含一个或多个Partition.Topic只是一个逻辑概念,真正用于存储消息的是分区。
    Topic在逻辑上可以被认为是一个queue,每条消费都必须指定它的Topic,可以简单理解为必须指明把这条消息放进哪个queue里。为了使得Kafka的吞吐率可以线性提高,物理上把Topic分成一个或多个Partition,每个Partition在物理上对应一个文件夹,该文件夹下存储这个Partition的所有消息和索引文件。若创建topic1和topic2两个topic,且分别有13个和19个分区,则整个集群上会相应会生成共32个文件夹
    比如创建了一个test_topic时指定了3个分区,会出现test_topic_0,test_topic_1,test_topic_2三个文件夹,代表三个分区,用于存储消息,分区配合集群可以实现kafka的水平扩展,优化效率。
  6. Consumer Group:消费者组,每个Consumer属于一个特定的Consumer Group(可为每个Consumer指定group name,若不指定group name则属于默认的group),同一个消费者组理应消费者处理消息的逻辑应当一样,但是这不确定,要靠开发人员来指定(可以不一样,但是理应一样)。
Kafka的安装部署

下载地址:http://kafka.apache.org/downloads

这里演示安装2.0.0:
https://archive.apache.org/dist/kafka/2.0.0/kafka_2.11-2.0.0.tgz

因为kafka依赖于zookeeper来做master选举一起其他数据的维护,所以需要先安装启动zookeeper节点。所以前提是要有个Zookeeper服务节点。

把下载的压缩包解压,进入config目录。

部分总要配置文件:

server.properties  #服务器broker的配置文件producer.properties  # 生产者配置文件consumer.properties  #消费者配置文件zookeeper.properties  #Zookeeper配置文件log4j.properties  #日志配置文件

kafka内置了zookeeper的服务,所以在bin目录下提供了这些脚本,zookeeper-server-start.sh
zookeeper-server-stop.sh,配置目录下存在zookeeper.properties配置文件。

我们可以通过脚本来启动Zookeeper服务,但是通常Zookeeper服务是另外搭建的。

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

修改server.properties文件的Zookeeper服务地址。

启动:
先前台启动看看是否成功:

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


成功了,然后后台启动

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

查看日志文件:

启动成功。

消息中间件kafka概述和安装相关推荐

  1. Kafka集群安装Version1.0.1(自带Zookeeper)

    1.说明 Kafka集群安装,基于版本1.0.1, 使用kafka_2.12-1.0.1.tgz安装包, 其中2.12是编译工具Scala的版本. 而且不需要另外安装Zookeeper服务, 使用Ka ...

  2. 高吞吐消息中间件Kafka集群环境搭建(3台kafka,3台zookeeper)

    高吞吐消息中间件Kafka集群环境搭建(3台kafka,3台zookeeper) 一.集群搭建要求 1.搭建设计 2.分配六台Linux,用于安装拥有三个节点的Kafka集群和三个节点的Zookeep ...

  3. kafka安装完整步骤_还在寻找Kafka最新的安装教程吗?精细的安装步骤分享给大家...

    Kafka集群部署 概述 之前的大数据集群主要是离线处理的方式对集群的数据进行开发处理.当前的集群数据量已经达到了PB级别了,离线数据获取主要是从数仓侧进行全量或者增量的方式导入大数据平台,部分是通过 ...

  4. 大数据技术之Kafka(一)Kafka概述、Kafka快速入门、Kafka架构深入

    文章目录 1 Kafka 概述 1.1 定义 1.2 消息队列 1.2.1 传统消息队列的应用场景 1.2.2 消息队列的两种模式 1.3 Kafka 基础架构 2 Kafka 快速入门 2.1 安装 ...

  5. REDIS01_概述、安装、key、字符串String、列表List、集合Set、Hash哈希、Zset有序集合、持久化策略

    文章目录 ①. Redis - 概述 ②. Redis - 安装 ③. 常用五大数据类型 ④. 字符串类型 - String ⑤. 列表类型 - list ⑥. 集合类型 - Set ⑦. 哈希类型 ...

  6. 微服务 消息中间件kafka消息丢失问题

    微服务 消息中间件kafka消息丢失问题 1. kafka消息丢失概述 1.1 kafka概述 1.2 kafka架构 1.3 kafka问题 2. kafka消息传递语义 3. kafka消息丢失问 ...

  7. KafKa集群安装、配置

    一.事前准备 1.kafka官网:http://kafka.apache.org/downloads. 2.选择使用版本下载. 3.kafka集群环境准备:(linux) 192.168.145.12 ...

  8. zookeeper+kafka集群安装之中的一个

    zookeeper+kafka集群安装之中的一个 准备3台虚拟机, 系统是RHEL64服务版. 1) 每台机器配置例如以下: $ cat /etc/hosts ... # zookeeper host ...

  9. kafka学习汇总系列(一)kafka概述

    一.kafka概述 在流式计算中,kafka是用来缓存数据的,storm通过消费kafka的数据进行计算.kafka的初心是,为处理实时数据提供一个统一.高通量.低等待的平台: 1.kafka是一个分 ...

最新文章

  1. 实战SSM_O2O商铺_17【商铺编辑】Dao层开发
  2. 跟随我在oracle学习php(14)
  3. JDBC操作oracle
  4. MapReduce排序-实现比较器和序列化代码
  5. linux ksh教程下载,学习Linux中ksh的用法
  6. layui循环遍历数据_Layui之动态循环遍历出的富文本编辑器显示
  7. EMNLP'21 | 学习改写非自回归机器翻译的翻译结果
  8. 3种隐藏服务器真实IP的方法【高防服务器、CDN、...】
  9. open ai gpt_GPT-3:第一个人工智能?
  10. Percentile
  11. 七夕送什么蓝牙耳机,经济实惠的蓝牙耳机盘点
  12. 看看你去苹果公司的话能挣多少钱
  13. 程序员女朋友的相册是这样的
  14. POE供电 网线 电源 网络情况图
  15. 【bzoj1123】[POI2008]BLO
  16. matlab打印函数disp如何不换行
  17. 西工大c语言noj作业答案,西工大noj答案
  18. Shopee店铺装修是什么?怎么做到效果翻倍?
  19. 计算机模拟泊松分布,第19讲 计算机模拟matlb.ppt
  20. 大数据批量处理神器 - 自定义周期批量消费队列的实现

热门文章

  1. Python案例:输出指定要求的回文日期
  2. Java学习笔记2.3.4 运算符与表达式 - 逻辑运算符
  3. Python编程基础08:循环结构
  4. Spring框架学习笔记11:基于Java配置方式SSM框架西蒙购物网
  5. 队列C++ | 用数组实现队列_1
  6. 2.图像作为函数 | 标量、函数、混合图像_6
  7. 融云发送图片消息_IM消息ID技术专题(五):开源分布式ID生成器UidGenerator的技术实现...
  8. python线性回归可视化_【Python可视化5】Seaborn之线性回归
  9. 【英语学习】【Level 08】U01 Let's Read L4 Hot off the press
  10. Intel 64/x86_64/IA-32/x86处理器 - 通用指令(1) - 数据传输指令