欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Kafka基础

程序员文章站 2023-01-28 18:37:04
简介 #概念:消息中间件(消息系统) //消息系统分类: 点对点 消息队列(peer-to-peer) 发布/订阅 消息队列 消费者在消费时,是通过pull 主动从broker中拉取数据的 简介 #概念:消息中间件(消息系统) //消息系统分类: 点对点 消息队列(peer-to-peer) #作用 ......
  • 简介
  • #概念:消息中间件(消息系统)

         //消息系统分类:


     点对点 消息队列(peer-to-peer)

    Kafka基础

  •        

     

     

     

     

     

  • 发布/订阅 消息队列 
  • Kafka基础        

     

     

     

     

     

     

     

    消费者在消费时,是通过pull 主动从broker中拉取数据的

 


#作用:缓存地带

#消息系统适用场景

  • 解耦 各位系统之间通过消息系统这个统一的接口交换数据,无须了解彼此的存在
  • 冗余 部分消息系统具有消息持久化能力,可规避消息处理前丢失的风险
  • 扩展 消息系统是统一的数据接口,各系统可独立扩展
  • 峰值处理能力 消息系统可顶住峰值流量,业务系统可根据处理能力从消息系统中获取并处理对应量的请求
  • 可恢复性 系统中部分组件失效并不会影响整个系统,它恢复后仍然可从消息系统中获取并处理数据
  • 异步通信 在不需要立即处理请求的场景下,可以将请求放入消息系统,合适的时候再处理

#架构


Kafka基础

 

 

 

 

 

 

 

 

 

 

 

 

 


主要分为3部分

    生产者(producer),消费者(consumer),kafka(broker)外加一个zookeeper来储存源数据    

Broker 中可以包含多个topic ,topic 是一个逻辑存在的基本运行单元

topic 中可以包含多个partation, partition是真正存储数据的地方,类似于书架,一个partition是一个强有序的队列

partition是由segmend组成的

segmend由两部分组成

一部分是.log结尾的文件,作用存储kafka的数据

另一部分是.index结尾的文件,作用kafka存储数据的索引文件

 

#过程

生产者:  对数据的生产可以使用同步生产也可以使用异步生产,将生产完成的数据 push到kafka中

 

kafka:   kafka收到生产者生产的数据后,将数据保存到具体的partition中,将该批数据的元数据信息写到zookeeper上,

消费者:    当消费者要消费数据时,会先从zookeeper中获取数据偏移量以及元数据,获取之后,通过主动拉取的形式来消费数据。

 

#kafka数据生产的格式:

* (key,value)格式的数据:在对数据进行存储的时候,采用的存储策略是对key进行hashcode取模来进行具体分配到哪个partiton中进行存储

* string格式的数据:在对数据进行存储的时候,采用的策略是轮训策略。

如果以上的存储策略都不符合业务生产需求,可以自定义存储策略 需要集成Partitioner接口

  • 目录结构

    注意:演示的所有的命令行操作都在bin目录下进行

Kafka基础

  • 配置详解

Kafka基础

要想启动,我们只需要修改kafka的配置文件就可以了

Kafka基础

注意

1.外网地址尽量写ip,别写主机名,不然可能访问不到

2.本地地址如果写ip地址的话,启动producer,consumer 参数为本地ip

3.本地地址如果写localhost的话,启动producer,consumer参数为localhost

默认localhost

Kafka基础

  • 服务启动与查看

     

    由于kafka服务以来与zookeeper所以需要先启动zookeeper

    zookeeper又需要java 来支持,所以需要大家自行准备jdk

     

    命令

启动zookeeper服务 ./zookeeper-server-start.sh ../config/zookeeper.properties

Kafka基础

启动kafka服务./kafka-server-start.sh ../config/server.properties

Kafka基础

创建topic

./kafka-topics.sh --zookeeper localhost:2181 --create --topic test4 --partitions 3 --replication-factor 1

--zookeeperzookeepe连接地址:端口

--create 说明要创建

--topic topic名称    

--partitions partitions数量

Kafka基础

启动生产者

./kafka-console-producer.sh --broker-list localhost:9092 --topic test3

由于生产者并不依赖于zookeeper,但是生产者需要知道写入数据到那个broker中的

又因为topic 是运行的基本单元,因此需要指定topic以及broker所在地址

Kafka基础

启动消费者

./kafka-console-consumer.sh --zookeeper localhost:2181 --topic test3

Kafka基础

在生产者发送数据 可以看到消费者已经在消费

Kafka基础