IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> KafKa原理机制 -> 正文阅读

[大数据]KafKa原理机制

前言:

十年生死两茫茫,千行代码,Bug何处藏。
纵使产品经理祭苍天,又怎样?
朝令改,夕断肠。
相顾无言,惟有泪千行。
每晚灯火阑珊处,夜难寐,加班狂

在这里插入图片描述

KafKa

Kafka是一个分布式消息队列:生产者、消费者的功能,提供了类似于JMS的特性,作用是日志收集:一个公司可以用Kafka可以收集各种服务的log,通过kafka以统一接口服务的方式开放给各种consumer

Kafka对消息保存是根据Topic进行归类,发送消息者称为Producer,消息接受者称为Consumer

kafka集群有多个kafka实例(节点/broker)组成,每个实例(kafka节点)称为broker。
Kafka可以收集各种服务的log,通过kafka以统一接口服务的方式开放给各种consumer
在这里插入图片描述

Kafka的高效读写的原因

1.顺序写入磁盘

Kafka的producer生产数据,要写到log文件中,写的过程是一直追加到文件的末尾,顺序写入磁盘的速度600M/s,这个和硬盘是机械还是固态有一些关联,随机写入默认100K/s , 根据是否需要进行磁盘寻址

2.零复制技术

Linux中提供的一种文件处理技术,Linux总会将系统中还没有使用到的内存挪给 Page cache 当写操作发生的时候, 他会将写入page Cache中,并在该写入位置加入dirty标志,当读操作发生的时候,它会首先查找Page cache中是否存在,如果存下就直接返回,如果没有就从磁盘中读取再写入到Page Cache中

Zookeeper在kafka中的作用

0.8版本以后的Zookeeper就不在维护偏移量offset,Zookeeper在后续的Kafka中起到的是一个选举作用

Kafka集群中有一个broker被选举为Controller,负责管理集群中broker的上下线,所有topic的分区和副本分配和leader的选举工作Controller的管理工作都是依赖于Zookeeper的
在这里插入图片描述在这里插入图片描述

Kafka如何保证数据一致性

在这里插入图片描述

数据可靠性保证(ack机制)

为了保证producer发送数据,能够可靠的发送到指定topic,topic的每个partition收到producer发送数据就会向producer发送"ack"(acknowledgement 确认收到) 如果producer收到ack,就会进行下一轮的发送,否则就重新发送数据。

为了保证Topic的partition可以正常提供服务,会提供副本机制,所以会有多个partition存在

例如:一个topic存在三个partition,topic中有一个leader两个follower当leader接收到Producer发送的消息后,是等待所有follower全部完成后再发送ack还是只要有过半机制就发送ack

Kafka选择了全部完成方案,原因如下:

Kafka的每个分区都有大量的数据,过半机制的副本保存会造成大量数据冗余

全部完成方案的网络延迟会比较高,但网络延迟对Kafka的影响较小

(针对所有follower都开始同步数据,有一个follower,迟迟不能与leader进行同步的情况。采用ISR(一个存储着follower集合),如果follower长时间未向leader同步数据则该follower将被踢出ISR,如果是Leader发生故障,会从ISR中选举新的leader。)

ack应答机制作用是确认收到消息(发送ack的两种情况):

  1. prodeucer发送消息到leader,leader收到后发送ack
  2. leader 和 follower 之间同步完成会发送ack

ACK应答机制

所以Kafka为了用户提供了三种可靠级别设置,可以根据不同雪球来修改选择acks参数配置:参数是0 ,1 和 -1

在这里插入图片描述

幂等机制

幂等简单来说1的几次幂都等于1,也就是说一天消息无论发送几次都只算一次,无论多少条消息,我们只实例化一次

Kafka完成幂等性其实就是给消息添加一个唯一ID,这个ID组成PID(ProducerID),这样就可以保证每一个Producer发送的时候都是唯一,还会为Producer中每条消息添加一个消息ID,当消息发送到kafka后会暂时缓存ID,写入数据后没有收到ACK会重新发送,消息收到后会与缓存中ID进行比较,如果已存在,不再接收
在这里插入图片描述

offset的维护

Kafka0.9版本之前,consumer默认将offet保存在Zookeeper,从0.9版本开始后,consumer默认将offset保存在kafka这一个内置的topic中,该topic为 __consumer_offsets

手动维护(可以维护到redis中),自动维护(将偏移量维护到kafka记录偏移量的topic中)

确定kafka机器的数量(2n+1)

Kafka机器数量=2*(峰值生产速度20M*副本数/100)+1

kafka分区有多少个3-10个分区(分区影响消费的并发度,分区个数不建议超过集群的个数)

kafka副本数2(影响磁盘io)

Kafka中topic数量

(一般情况下一张表对应一个topic,也可以相同主题的表进行轻度聚合放在一个topic中
例如:
将商品列表,商品详情,商品点击放到一个topic中。
将广告放在一个tpoic中。
通知、前台活跃、后台活跃放到一个topic中。
评论、点击、收藏、点赞放到一个topic中。
故障日志放一个topic中)

Kafka 中数据量计算

每天总数据量150g-250g,每天产生1.5-2.5亿条日志,
平均每秒钟: 15000-25000万/24/60/60=1 500-2500条/每秒钟。
低谷每秒钟: 800 条。
高峰每秒钟: 1150 条* (2-20倍) -3300 条-23000条。
每条日志大小: 0.5k-2k
每秒多少数据量: 2.3M-20MB 。
在这里插入图片描述

Kafka如何进行分区的

在这里插入图片描述

Consumer消费数据的方式

  1. round-robin(轮询)将每一个分区一次发送给一个消费者组
  2. range(范围)按首先对同一个topic里面分区序号进行排序,并对消费者按照字母进行排序,照一定的范围进划分,尽量将每个消费中分区数据保存一致

常用命令示例

查看topic列表:
bin/kafka-topics.sh --zookeeper localhost:2181 –list
查看指定topic明细:
bin/kafka-topics.sh --zookeeper localhost:2181 --desc --topic demo

常用的kafka工具:kafkaTools

有收获?希望烙铁们来个三连击,让更多的同学看到这篇文章

1、烙铁们,关注我看完保证有所收获,不信你打我。

2、点个赞呗,可以让更多的人看到这篇文章,后续还会有很哇塞的产出。

本文章仅供学习及个人复习使用,如需转载请标明转载出处,如有错漏欢迎指出
务必注明来源(注明: 来源:csdn , 作者:-马什么梅-)
在这里插入图片描述

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-07-31 16:42:40  更:2021-07-31 16:43:23 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/5 3:14:30-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码