Kafka学习笔记01【2024最新版】

一、Kafka-课程介绍

官网地址:Apache KafkaApache Kafka: A Distributed Streaming Platform.icon-default.png?t=N7T8https://kafka.apache.org/

kafka 3.6.1版本,作为经典分布式订阅、发布的消息传输中间件,kafka在实时数据处理、消息队列、流处理等领域具有广泛的应用场景。高性能、高可靠、高吞吐,被数千家公司应用于高性能的数据管道、流分析和数据集成等不同场景,在海量实时数据传输和事件驱动的微服务架构中也被广泛地使用。

学习步骤:

1、kafka集群启动

2、主题创建

3、生产消息

4、存储消息

5、消费消息

大数据场景中,我们将kafka和Flume、Spark和Flink等软件进行集成,那么kafka依然用作数据传输的消息中间件,那Flume就作为producer生产者来生产数据,而我们的Spark和Flink分布式计算引擎就作为consumer消费者来消费数据

三、Kafka-软件介绍

为什么分布式系统之间它需要使用一个软件来完成数据交换的这个过程?那说到我们数据交换啊,在java开发的这个普通场景中,主要指的就是线程和线程之间的数据交换以及呢进程和进程之间的数据交换。我们线程和线程之间是如何做数据交换的,其实呢我们主要是用内存来完成这个操作的。

首先我们的java虚拟机当中,每个线程呢其实是有它独立的这个栈内存空间的,每个线程是独立的,那么这两个我们的线程它们是如何交互的呢?首先它们两块内存是独立的,不过呢java虚拟机还有一块内存是它们共享的,这块内存呢我们称之为堆内存,咱们这个堆内存呢,其实就是我们所有线程共享的,那既然是所有线程共享的,那么是不是就可以将线程的数据发送到这块内存当中呢?这个肯定是没有问题的,那我们另外一个线程啊,其实就可以想办法呢,从这个堆内存当中把数据给我获取过来,因为你是共享的吗?你共享的话,你的数据放进去,我这边应该是可以获取到的,这个应该是没有问题的,那么为了数据的操作方便,java还提供了专门的数据模型Q来作为数据的缓冲区进行数据的传输,就是我们通过一种队列的方式来完成,比较常见的呢就是阻塞队列啊BlockingQueue或者那个双端队列DQ啊等等。其实我们通过内存就可以实现我们数据的传输了,那么根本也不需要额外的第三方软件来完成。(缺点会导致内存不够用了,内存溢出)

接下来再说说进程和进程之间的数据交互,我们在执行java程序的时候,就会启动一个java虚拟机的进程,那这个时候呢如果你想启用第二个进程的话,那它们两个能不能共享内存来完成我们的数据交互呢?其实是不行的,为什么呢?因为我们的java虚拟机啊,它在启动的时候会向操作系统申请内存,意味着两个不同的进程它们申请的内存其实是不一样的,那也就是说每个进程的内存空间是独立的,它们无法共享,因此我们进程之间传递数据呢都是采用网络数据流来进行传输的,比如我们使用java提供的基础的socket、ServerSocket这样的接口来实现网络的数据传输(数据需要重复发送)

缓冲区【消息中间件】

四、Kafka-JMS介绍

Java Message Service【JMS】

P2P模型

PS模型

五、Kafka-组件

六、Kafka-安装与启动

windows安装步骤:

1、解压 kafka_2.12-3.7.0.tgz

2、kafka_2.12-3.7.0目录下新建data目录

3、修改config目录下的zookeeper.properties

dataDir=D:/xxx/kafka_2.12-3.7.0/data/zk

4、在kafka_2.12-3.7.0目录下新建zk.cmd文件

call bin/windows/zookeeper-server-start.bat config/zookeeper.properties

5、双击zk.cmd,启动zookeeper

6、修改config目录下的server.properties

log.dirs=D:/gitee/kafka_2.12-3.7.0/data/kafka

7、在kafka_2.12-3.7.0目录下新建kfk.cmd文件

call bin/windows/kafka-server-start.bat config/server.properties

8、双击kfk.cmd,启动kafka

十三、Kafka-基础架构图形推演

数据只保存在内存中是不安全的,我们需要把数据保存到日志文件中。为什么是日志文件呢?就是因为kafka早期就是做日志数据传输的,所以它的文件就叫做.log

架构

kafka采用生产者消费者的模型,所以它是允许多个生产者来生产数据,同时呢它也允许多个消费者来消费数据

有没有发现什么问题?我们当前的这个Kafka Broker 有很多的生产者和消费者对它进行访问,这个频繁的数据请求访问呢?大概率就会因为吞吐量过大产生IO热点问题,从而导致这个单一的这个节点成为整个分布式系统的性能瓶颈,进行就会降低系统的可用性和稳定性,一旦我们当前的Broker它宕掉了,那我们的数据其实就无法访问了,你连服务都没有了,怎么可能访问数据呢?

横向扩展:增加服务节点,搭建服务器集群,降低单点故障带来的风险(增加多个Broker节点,把Topic划分为多个数据块【添加编号进行区分】,放在多个Broker节点,消费者添加消费者组)

纵向扩展:增加系统的资源配置,比如使用IO效率更好的固态硬盘以及更大的内存、更多的CPU核,还有更快的网络(其实无法从根本上解决问题的,咱们的资源是有限的,一旦单机的吞吐量超过阈值,无论你增加什么样的资源都是无法解决问题的)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/4287.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【NTN 卫星通信】NTN应该使用FDD还是TDD双工模式

1 概述 现在主流的商用地面通信系统一般都支持FDD和TDD两种模式,实用于不同的频段。那么卫星通信也需要有这两种模式吗? 2 NTN 双工模式分析 在考虑TDD模式时,需要设置保护时间,以防止终端同时发射和接收。该保护时间直接取决于终…

容器安全-镜像扫描

前言 容器镜像安全是云原生应用交付安全的重要一环,对上传的容器镜像进行及时安全扫描,并基于扫描结果选择阻断应用部署,可有效降低生产环境漏洞风险。容器安全面临的风险有:镜像风险、镜像仓库风险、编排工具风险,小…

【ZZULIOJ】1085: 求奇数的乘积(多实例测试)(Java)

目录 题目描述 输入 输出 样例输入 Copy 样例输出 Copy code 题目描述 给你n个整数,求他们中所有奇数的乘积 输入 输入数据包含多个测试实例,每个测试实例占一行,每行的第一个数为n,表示本组数据一共有n个,接…

计算机网络第十七天(第一天的答案)

网络互连复习笔记 1、ospf三张表:路由表、邻居表、链路状态数据库 2、组播地址的含义: 224.0.0.5所有的ospf路由器 224.0.0.6所有的ospfDR路由器 3、ospf报文类型: Hello(组播) 用于发现直连链路上的ospf邻居和维护ospf邻居…

Python_AI库 Matplotlib的应用简例:绘制与保存折线图

本文默认读者已具备以下技能: 熟悉Python基础语法,以自行阅读python代码块熟悉Vscode或其它编辑工具的应用 在数据可视化领域,Matplotlib无疑是一个强大的工具。它允许我们创建各种静态、动态、交互式的可视化图形,帮助我们更好…

python中如何用matplotlib写雷达图

#代码 import numpy as np # import matplotlib as plt # from matplotlib import pyplot as plt import matplotlib.pyplot as pltplt.rcParams[font.sans-serif].insert(0, SimHei) plt.rcParams[axes.unicode_minus] Falselabels np.array([速度, 力量, 经验, 防守, 发球…

JET毛选学习笔记:如何利用《矛盾论》从做实验到做科研vol. 1

一、前情回顾 上一轮讲了基于《实践论》的方法论学习一门实验,从获取间接经验到实践,总结,再实践,再总结,反反复复无穷尽也,不知道大家悟出了多少呢?其实,有一个概念我刻意避开了没…

新科技辅助器具赋能视障生活:让盲人出行融入日常

随着科技日新月异的发展,一款名为蝙蝠避障专为改善盲人日常生活的盲人日常生活辅助器具应运而生,它通过巧妙整合实时避障与拍照识别功能,成功改变了盲人朋友们的生活格局,为他们提供了更为便捷、高效的生活体验。 这款非同…

注意力机制:SENet详解

SENet(Squeeze-and-Excitation Networks)是2017年提出的一种经典的通道注意力机制,这种注意力可以让网络更加专注于一些重要的featuremap,它通过对特征通道间的相关性进行建模,把重要的特征图进行强化来提升模型的性能…

【Redis 开发】Redisson

Redisson RedissonRedisson分布式锁Redisson可重入锁Redission解决超时释放的问题Redission解决锁的判断一次性问题Redission分布式锁主从一致性问题 Redisson Redisson是一个在Redis的基础上实现的java驻内存数据网格,就是提供了一系列的分布式的java对象 官方地址…

分布式与一致性协议之Paxos算法(二)

Paxos算法 如何达成共识 想象这样一个场景,某地出现突发事件,当地村委会、负责人等在积极研究和搜集解决该事件的解决方案,你也决定参与其中,提交提案,建议一些解决方法。为了和其他村民的提案做区分,你的…

以太网LAN双向透明传输CH9120透传芯片实现以太网转232串口转485转TTL串口

网络串口透传芯片 CH9120 1、概述 CH9120 是一款网络串口透传芯片。CH9120 内部集成 TCP/IP 协议栈,可实现网络数据包和串口数据的双向透明传输,具有 TCP CLIENT、TCP SERVER、UDP CLIENT 、UDP SERVER 4 种工作模式,串口波特率最高可支持到…

BUUCTF-WEB2

[SUCTF 2019]EasySQL1 1.启动靶机 2.寻找注入点和注入方法 随便输入一个字母,没有回显 随便输入一个数字,发现有回显,并且回显结果一样 3.堆叠注入 1; show databases; #查看数据库 1; show tables; #查看数据表 里面有个flag 1;set …

常见SSH功能概述

SSH的基本功能详解 用户身份验证 密码认证 密码身份验证是SSH中最基本的认证形式。在这种方式下,用户输入用户名和密码进行登录。密码在网络中的传输是加密的,保证了认证过程的安全性。尽管如此,基于密码的登录通常易于暴力破解&#xff0…

基于springboot的企业级工位管理系统源码数据库

基于springboot的企业级工位管理系统源码数据库 随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了企业级工位管理系统的开发全过程。通过分析企业级工位管理系统管理的不足,创建了一个计算机管理企业级工…

并发情况下,Elasticsearch 保证读写一致的方法

1: 可以通过版本号使用乐观并发控制,以确保新版本不会被旧版本覆盖,由应用层来处理具体的冲突; 2: 另外对于写操作,一致性级别支持 quorum/one/all,默认为 quorum,即只有当大多数分…

图像处理ASIC设计方法 笔记19 连通域标记ASIC系统设计

目录 核心的模块有:标记ASIC的工作流程如下:该芯片的系统结构具有如下特点:P131 第6章 连通域标记与轮廓跟踪 本章节讲述了多值分割图像连通域标记芯片的系统设计 多值分割图像连通域标记芯片(以下简称"标记芯片",也称"标记 ASIC"),完成图像连通域标…

ffmpeg中stream_loop参数不生效原因分析

问题 使用ffmpeg把一个视频文件发布成一个rtmp流,并设置成循环推流,此时需要使用参数stream_loop,命令如下: ffmpeg.exe -stream_loop -1 -re -i D:\tools\ffmpeg-5.1.2\bin\sei.h264 -c copy -f flv -safe 0 rtmp://localhost:1935/live/te…

ESP32的wifi---一些误区

该芯片包含热点AP模式和客户端STA模式 热点AP模式:是指电脑或手机直接连接ESP32发出的热点实现连接,如果电脑连接模块AP热点,这样电脑就不能上网。 因此再使用电脑端和模块进行网络通信时,一般情况下都是使用STA模式。也就是电脑…

视频号小店要交多少保证金?这里面的秘密,全网无人敢说!

大家好,我是电商糖果 关于视频号小店的保证金的问题,有不少人询问过糖果。 这毕竟是个新平台,很多人对于它的收费标准不太清楚。 糖果做视频号小店一年多了,也开了多家小店。 下面就来给大家详细的说一下。 首先,我…