摸鱼大数据——Kafka——基本介绍

消息队列

1、产生背景

消息队列:指的数据在一个容器中,从容器中一端传递到另一端的过程

 消息(message): 指的是数据,只不过这个数据存在一定流动状态
 队列(queue): 指的容器,可以存储数据,只不过这个容器具备FIFO(先进先出)特性

 思考: 公共容器需要具备什么特点?
 1- 公共性: 各个程序都可以与之对接
 2- FIFO特性: 先进先出
 3- 具备高效的并发能力: 能够承载海量数据
 4- 具备一定的容错能力: 比如支持重新读取消息方案

2、消息队列介绍

2.1 常见的消息队列产品

MQ:message queue消息队列

 activeMQ: 出现时期比较早的一款消息队列的中间件产品,在早期使用人群是非常多,目前整个社区活跃度严重下降,使用人群很少了
 rabbitMQ: 此款是目前使用人群比较多的一款消息队列的中间件的产品,社区活跃度比较高,主要是应用传统业务领域中
 rocketMQ: 是阿里推出的一款消息队列的中间件的产品,目前主要是在阿里系环境中使用,目前支持的客户端比较少,主要是Java中应用较多
 Kafka: Apache旗下的顶级开源项目,是一款消息队列的中间件产品项目来源于领英,是大数据体系中目前为止最为常用的一款消息队列的产品

2.2 应用场景
  • 应用解耦合

  • 异步处理

  • 限流削峰

  • 消息驱动系统

2.3 消息队列中两种消息模型
 在Java中, 为了能够集成消息队列的产品, 专门提供了一个消息队列的协议: JMS(Java Message Server)  java消息服务
 ​
 消息队列中两个角色: 生产者(producer) 和 消费者(consumer)
 生产者: 生产/发送消息到消息队列中
 消费者: 从消息队列中获取消息
 ​
 在JMS规范中, 专门规定了两种消息消费模型: 
 1- 点对点消费模型: 指的一条消息最终只能被一个消费者所消费。微信聊天的私聊
 2- 发布订阅消费模型: 指的一条消息最终被多个消费者所消费。微信聊天的群聊

Kafka的基本介绍

1、Kafka基本介绍

Kafka是一款消息队列的中间件产品, 来源于领英公司, 后期贡献给了Apache, 目前是Aapche旗下的顶级开源项目, 采用语言是Scala

官方地址: Apache Kafka

kafka的特点:

  • 可靠性:Kafka集群是分布式的,并且有多副本的机制。数据可以自动复制

  • 可扩展性:Kafka集群可以灵活的调整,在线扩容

  • 耐用性:Kafka数据保存在磁盘上面,数据并且有多副本的机制。数据持久化,而且可以一定程度上防止数据丢失

  • 高性能:Kafka可以存储海量的数据,虽然是使用磁盘进行数据存储,但是Kafka有各种优化手段(例如:磁盘的顺序读写、零拷贝等)提高数据的读写速度(吞吐量)

2、zookeeper知识

Kafka需要使用到zookeeper服务!

启动zookeeper服务
 # 三台都需要启动zookeeper服务
 [root@node1 ~]# /export/server/zookeeper/bin/zkServer.sh start
 [root@node2 ~]# /export/server/zookeeper/bin/zkServer.sh start
 [root@node3 ~]# /export/server/zookeeper/bin/zkServer.sh start
zookeeper工具连接

把ZooInspector.rar解压然后进入ZooInspector\build双击zookeeper-dev-ZooInspector.jar

3、Kafka的架构

HDFS写入过程:

Kafka架构:

1- Kafka中集群节点叫broker,节点和节点之间没有主从之分,地位是完全一样
2- Topic:主题/话题,是业务层面对消息进行分类的。
3- 一个Topic可以设置多个Partition分区。
4- 同一个Partition分区可以设置多个副本,但是副本数不能超过(>)集群broker节点的个数
5- 虽然broker节点间没有主从之分,但是同一个Partition分区的不同副本间有主从之分,分为了Leader主副本和Follower从副本
6- 生产者将数据首先发送给到Leader主副本,接着是Leader主副本主动的往Follower从副本上同步消息
7- Zookeeper用来管理集群,以及管理元数据信息
8- ISR同步列表。该列表中存放的是与Leader主副本消息同步程度最接近的Follower从副本,也就是消息最小的一个列表。该列表作用,当Leader主副本无法对外提供服务的时候,会从该ISR列表中选择一个Follower从副本变成Leader主副本,对外提供服务


相关名词:
Kafka Cluster: Kafka集群
Topic: 主题/话题
Broker: Kafka中的节点
Producer: 生产者,负责生产/发送消息到Kafka中
Consumer: 消费者,负责从Kafka中获取消息
Partition: 分区。一个Topic可以设置多个分区,没有数量限制

  • 18
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

困了就倒头睡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值