黑马头条 Kafka

我是南城余!阿里云开发者平台专家博士证书获得者!

欢迎关注我的博客!一同成长!

一名从事运维开发的worker,记录分享学习。

专注于AI,运维开发,windows Linux 系统领域的分享!

知识库链接:

黑马头条D1 · 语雀


参考文章:

【黑马头条之kafka及异步通知文章上下架】_黑马头条项目使用kafka的作用是什么-CSDN博客

黑马头条使用Kafka是为了实现文章管理端和APP端的文章状态(已发布、或点赞等数据量大的操作)进行及时性传递。

1. 消息中间件分类

2. Kafka安装

docker pull zookeeper:3.4.14
docker run -d --name zookeeper -p 2181:2181 zookeeper:3.4.14docker pull wurstmeister/kafka:2.12-2.3.1docker run -d --name kafka \
--env KAFKA_ADVERTISED_HOST_NAME=192.168.200.130 \
--env KAFKA_ZOOKEEPER_CONNECT=192.168.200.130:2181 \
--env KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.200.130:9092 \
--env KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 \
--env KAFKA_HEAP_OPTS="-Xmx256M -Xms256M" \
--net=host wurstmeister/kafka:2.12-2.3.1

3. Kafka入门

设置多个组 可以满足一对多

4. Kafka分区

5. Kafka高可用设计

6. Kafka生产者

7. spring boot 集成kafka

在yml中同时配置序列化和反序列化(序列化在Java中,简单理解就是将对象转换为字节流,反序列化则相反,将字节流转化为Java对象)

8. Kafka的一些问题记录

8.1. kakfa的同步和异步有啥区别

同步会确认服务器的确认,确认完才能发送消息,异步则不需要!

在Apache Kafka中,同步(Synchronous)和异步(Asynchronous)通常是指生产者(Producer)发送消息到Kafka集群的方式。下面是它们的区别:

  1. 同步发送(Synchronous Sending):
    • 在同步发送中,生产者发送消息后会等待服务器的确认(acknowledgment)。
    • 生产者会等待直到收到对消息的确认,以确保消息已经成功写入Kafka集群的指定分区。
    • 这种方式可以提供更高的可靠性,因为生产者会等待直到Kafka确认接收到消息并将其写入至少一个分区。但同时,它可能会引入一些延迟,因为生产者需要等待确认。
  1. 异步发送(Asynchronous Sending):
    • 在异步发送中,生产者发送消息后不会等待服务器的确认,而是继续发送下一批消息。
    • 这种方式可以提供更高的吞吐量,因为生产者可以继续发送新消息而不必等待每个消息的确认。
    • 不过,这也意味着生产者不能立即得知消息是否成功写入Kafka。如果发生错误,可能需要通过回调函数或其他方式来处理。

选择同步还是异步发送取决于应用程序的需求和性能要求。同步发送通常用于对数据可靠性有更高要求的情况,而异步发送则适用于对延迟和吞吐量有更高要求的情况。在异步发送中,生产者可能需要实现一些方式来处理潜在的错误和重试机制,以确保消息最终被成功写入。

8.2. Kafka的分区,主题有啥区别

分区是物理上的,主题是逻辑上的,两者其实属于同一纬度,是人们为了更好的区分。

在Apache Kafka中,分区(Partition)和主题(Topic)是两个核心的概念,它们在消息传递和存储中起到关键作用。

  1. 主题(Topic):
    • 主题是消息发布和订阅的逻辑容器。它是一种逻辑概念,用于组织和分类消息。你可以将主题看作是消息的分类或主题的命名标识符。
    • 生产者将消息发送到特定的主题,而消费者则从特定的主题订阅消息。主题可以有多个订阅者,允许多个消费者独立地消费同一主题的消息。
    • 主题可以被配置为拥有多个分区,以便实现水平扩展和提高并行性。
  1. 分区(Partition):
    • 分区是主题的物理子集,每个分区是一个有序且不可变的消息序列。每个消息都属于一个特定的分区。
    • 分区允许Kafka在集群中并行处理和存储消息。它们是Kafka实现高吞吐量和水平扩展性的关键因素之一。
    • 每个分区在物理上存储在不同的地方,并且可以在不同的机器上。这有助于分散负载和提高容错性。
    • 消费者可以独立地从每个分区读取消息,这提高了并发性。

关键区别:

  • 主题(Topic)是逻辑概念,用于组织和分类消息;而分区(Partition)是主题的物理子集,用于实现水平扩展和并行处理。
  • 主题可以包含一个或多个分区,每个分区存储特定范围的消息。
  • 消费者订阅主题,但实际上消费者是从分区中读取消息的。

总体而言,主题提供了逻辑上的组织和分类,而分区则允许在分布式环境中高效地存储和处理消息。

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

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

相关文章

C语言中的结构体

在C语言中,结构体(struct)是一种可以封装多个不同类型数据的数据结构。通过使用结构体,我们可以将多个相关的变量组合成一个单一的实体,从而方便地进行管理和操作。在本篇博客中,我们将通过示例代码来详细探…

4.0 Zookeeper Java 客户端搭建

本教程使用的 IDE 为 IntelliJ IDEA,创建一个 maven 工程,命名为 zookeeper-demo,并且引入如下依赖,可以自行在maven中央仓库选择合适的版本,介绍原生 API 和 Curator 两种方式。 IntelliJ IDEA 相关介绍:…

macOS Sonoma 14系统安装包

macOS Sonoma 14是苹果公司最新推出的操作系统,为Mac用户带来了全新的使用体验。Sonoma是苹果继Catalina之后的又一重要更新,它在改善系统性能、增加新功能、优化用户界面等方面做出了显著贡献。 macOS Sonoma 14系统有许多令人兴奋的新功能和改进&…

【DDD】学习笔记-数据模型与对象模型

在建立数据设计模型时,我们需要注意表设计与类设计之间的差别,这事实上是数据模型与对象模型之间的差别。 数据模型与对象模型 我们首先来分析在设计时对冗余的考虑。前面在讲解数据分析模型时就提及,在确定数据项模型时,需要遵…

Sentinel(理论版)

Sentinel 1.什么是Sentinel Sentinel 是一个开源的流量控制组件,它主要用于在分布式系统中实现稳定性与可靠性,如流量控制、熔断降级、系统负载保护等功能。简单来说,Sentinel 就像是一个交通警察,它可以根据系统的实时流量&…

Windows启动一个进程CreateProcess

CreateProcess 函数创建独立于创建进程运行的新进程。 参数接口BOOL CreateProcessA([in, optional] LPCSTR lpApplicationName,[in, out, optional] LPSTR lpCommandLine,[in, optional] LPSECURITY_ATTRIBUTES lpProcessAttributes…

算法学习——LeetCode力扣链表篇1

算法学习——LeetCode力扣链表篇1 203. 移除链表元素 203. 移除链表元素 - 力扣(LeetCode) 描述 给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val val 的节点,并返回 新的头节点 。 示例 示例 …

一个查看armv8系统寄存器-值-含义的方式

找到解压后的SysReg_xml_v86A-2019-12目录 wget https://developer.arm.com/-/media/developer/products/architecture/armv8-a-architecture/2019-12/SysReg_xml_v86A-2019-12.tar.gz wget https://developer.arm.com/-/media/developer/products/architecture/armv8-a-archi…

新版MQL语言程序设计:组合模式的原理、应用及代码实现

文章目录 一、什么组合模式二、为什么需要组合模式三、组合模式的实现原理四、组合模式的应用场景五、组合模式的代码实现 一、什么组合模式 组合模式是一种结构型设计模式,它允许将对象组合成树形结构以表示“部分-整体”的层次结构。组合模式使得用户对单个对象和…

Python 泛型

Python 中的泛型是指在定义函数或类时,允许参数或返回值的类型是任意类型的一种特性。泛型在实际开发中非常有用,它可以增强代码的灵活性、可重用性和安全性。 Python 中的泛型可以通过以下两种方式实现: 使用 TypeVar:Python 3.5 版本及以上的版本支持 TypeVar 类型变量,…

ChatGPT辅助编程,一次有益的尝试

如果大家想学习PCIe,搜索网上的信息,大概率会看到chinaaet上Felix的PCIe扫盲系列的博文 Felix-PCIe扫盲 每次看这个系列博文的时候,我都在想有没有什么方法可以把这个系列的博文都保存到一个pdf文件中,这样方便阅读。于是有了下…

final、finally、finalize区别

一、final (1) 声明类(最终类),类不可以被继承 (2) 声明方法(最终方法),子类不可以重写,当前类不可以重载 (3) 声明基本数据类型,值不可以改变;引用数据类型,可以改变值,但是不可以开辟新的内存…

蓝桥杯省赛无忧 课件99 裴蜀定理

前置算法 欧几里得算法 01 什么是裴蜀定理 02 裴蜀定理的数学证明 03 裴蜀定理扩展 04 例题 关联知识 EXGCD(扩展欧几里得算法)

SSRF漏洞给云服务元数据带来的安全威胁

文章目录 前言元数据服务威胁1.1 Metadata元数据1.2 RAM资源管理角色1.3 STS 临时凭据利用1.4 CF云环境利用框架1.5 元数据安全性增强 TerraformGoat2.1 永久性AccessKey2.2 SSRF靶场环境搭建2.3 腾讯云CVM配角色2.4 接管腾讯云控制台 SSRF组合拳案例3.1 上传图片功能SSRF3.2 文…

ubuntu22.04@laptop OpenCV Get Started: 001_reading_displaying_write_image

ubuntu22.04laptop OpenCV Get Started: 001_reading_displaying_write_image 1. 源由2. Read/Display/Write应用Demo2.1 C应用Demo2.2 Python应用Demo 3. 过程分析3.1 导入OpenCV库3.2 读取图像文件3.3 显示图像3.4 保存图像文件 4. 总结5. 参考资料 1. 源由 读、写、显示图像…

Android中设置Toast.setGravity()了后没有效果

当设置 toast.setGravity()后,弹窗依旧从原来的位置弹出,不按设置方向弹出 类似以下代码: var toast Toast.makeText(this, R.string.ture_toast, Toast.LENGTH_SHORT)toast.setGravity(Gravity.TOP, 0, 0)//设置toast的弹出方向为屏幕顶部…

蓝桥杯刷题day07——斐波那契与7

1、题目描述 斐波那契数列的递推公式为:FnFn-1Fn-2, 其中F1F21. 请问, 斐波那契数列的第 1 至 202202011200 项(含)中, 有多少项的个位 是 7 。 答案提交 这是一道结果填空的题, 你只需要算出结果后提交即可。本题的结果为一 个整数, 在提交答案时只填…

云计算运营模式介绍

目录 一、云计算运营模式概述 1.1 概述 二、云计算服务角色 2.1 角色划分 2.1.1 云服务提供商 2.1.2 云服务消费者 2.1.3 云服务代理商 2.1.4 云计算审计员 2.1.5 云服务承运商 三、云计算责任模型 3.1 云计算服务模式与责任关系图 3.2 云计算服务模式与责任关系解析…

刚刚晋升为管理者,还不会如何管理团队?你要重点关注这9个策略

管理团队需要明确团队目标、提前要求承诺、明确组织架构、团队高效协作、洞察员工、引入敏捷、执行可视化、及时反馈和复盘优化。 这样管理团队可以极大提高团队组织能力。团队组织能力强大的话,团队成员是可以实现自我管理的,会自我驱动去完成目标和执…

第01课:自动驾驶概述

文章目录 1、无人驾驶行业概述什么是无人驾驶智慧出行大趋势无人驾驶能解决什么问题行业趋势无人驾驶的发展历程探索阶段(2004年以前)发展阶段(2004年-2016年)成熟阶段(2016年以后) 2、无人驾驶技术路径无人…