当前位置: 首页 > news >正文

仿论坛项目--Kafka,构建TB级异步消息系统

阻塞队列

• BlockingQueue

  • 解决线程通信的问题。
  • 阻塞方法:put、take。
    • 生产者消费者模式
  • 生产者:产生数据的线程。
  • 消费者:使用数据的线程。
    • 实现类
  • ArrayBlockingQueue
  • LinkedBlockingQueue
  • PriorityBlockingQueue、SynchronousQueue、DelayQueue等。
    在这里插入图片描述

Kafka入门

• Kafka简介

  • Kafka是一个分布式的流媒体平台。
  • 应用:消息系统、日志收集、用户行为追踪、流式处理。
    • Kafka特点
  • 高吞吐量、消息持久化、高可靠性、高扩展性。
    • Kafka术语
  • Broker、Zookeeper
  • Topic、Partition、Offset
  • Leader Replica 、Follower Replica
    在这里插入图片描述启动Kafka
    打开cmd,切换到安装路径E:\work\kafka_2.12-2.2.0
    再输入bin\windows\zookeeper-server-start.bat config\zookeeper.properties

Spring整合Kafka

• 引入依赖

  • spring-kafka
    • 配置Kafka
  • 配置server、consumer
    • 访问Kafka
  • 生产者
    kafkaTemplate.send(topic, data);
  • 消费者
    @KafkaListener(topics = {“test”})
    public void handleMessage(ConsumerRecord record)

发送系统通知

• 触发事件

  • 评论后,发布通知
  • 点赞后,发布通知
  • 关注后,发布通知
    • 处理事件
  • 封装事件对象
  • 开发事件的生产者
  • 开发事件的消费者
    在这里插入图片描述

显示系统通知

• 通知列表

  • 显示评论、点赞、关注三种类型的通知
    • 通知详情
  • 分页显示某一类主题所包含的通知
    • 未读消息
  • 在页面头部显示所有的未读消息数量

下列选项中,关于阻塞队列说法错误的是():

阻塞队列用于解决线程同步的问题。
阻塞队列的接口为BlockingQueue,该接口有ArrayBlockingQueue、LinkedBlockingQueue等多个实现类。
阻塞队列包含put方法,用于向队列中存入数据,当队列已满时,该方法将堵塞
阻塞队列包含take方法,用于从队列中获取数据,当队列已空时,该方法将堵塞

阻塞队列是一种特殊的队列,它能够解决多线程环境下的同步问题。
BlockingQueue 是 Java 中提供的一个接口,它定义了阻塞队列的基本操作,包括 put 方法和 take 方法等。
当使用 put 方法向队列中添加元素时,如果队列已经满了,则会阻塞当前线程直到其他线程消费掉一些元素或者等待一定时间后抛出异常。
同样地,当使用 take 方法从队列中取出元素时,如果队列为空,则也会阻塞当前线程直到其他线程生产新元素或者等待一定时间后抛出异常。

关于生产者与消费者模式,下列说法错误的是():

生产者线程,是负责产生数据的线程
消费者线程,是负责使用数据的线程
阻塞队列在生产者与消费者之间建立了缓冲,提高了系统的性能
生产者线程调用take方法,消费者线程调用put方法

“生产者线程,是负责产生数据的线程” — 这个描述是正确的,生产者通常是指创建或生成数据的角色。
“消费者线程,是负责使用数据的线程” — 这个描述也是正确的,消费者指的是消耗或使用由生产者产生的数据的角色。
“阻塞队列在生产者与消费者之间建立了缓冲,提高了系统的性能” — 这个描述同样正确,阻塞队列作为共享内存的一部分,可以在生产者和消费者之间建立缓冲区,从而提高系统性能。
“生产者线程调用take方法,消费者线程调用put方法” — 这个描述是错误的。实际上,生产者应该调用put方法来放入数据,而消费者则调用take方法来取走数据。

关于Kafka的特点,下列说法错误的是()

选项:o Kafka是一个分布式的流媒体平台。
o Kafka可以应用于消息系统、日志收集、用户行为追踪、流式处理等多种场景
o Kafka具有高吞吐量、消息持久化、高可靠性、高扩展性等优点
o Kafka采用硬盘持久化消息,所以性能比其他消息队列略低

Kafka是一个分布式的流媒体平台:这是正确的,Kafka是一个分布式的消息发布订阅平台,常用于构建实时的数据管道,以可靠地在应用程序之间传递数据。
Kafka可以应用于消息系统、日志收集、用户行为追踪、流式处理等多种场景:这也是正确的,Kafka由于其高性能和可扩展性,适用于多种应用场景,包括但不限于消息系统、日志收集、用户行为追踪和流式处理。
Kafka具有高吞吐量、消息持久化、高可靠性、高扩展性等优点:这是正确的,Kafka的设计目标之一就是提供高吞吐量、消息持久化、高可用性和可扩展性的特性。
Kafka采用硬盘持久化消息,所以性能比其他消息队列略低:这部分描述是错误的。虽然Kafka确实将消息存储在磁盘上进行持久化,但这并不意味着它的性能就低于其他消息队列。实际上,Kafka通过使用高效的数据结构和磁盘管理技术,能够在保持消息持久化的同时提供非常高的性能。因此,将消息持久化到磁盘并不一定会降低其性能表现。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 数据结构基本知识
  • 随机森林的知识博客:原理与应用
  • pytorch正向传播没问题,loss.backward()使定义的神经网络中权重参数变为nan
  • ELK学习笔记(一)——使用K8S部署ElasticSearch8.15.0集群
  • 目标检测-YOLOv4
  • 代码随想录算法训练营Day37|完全背包问题、518.零钱兑换II、377. 组合总和 Ⅳ、70. 爬楼梯(进阶版)
  • box64 安装
  • 微信小程序实践案例
  • IP/TCP/UDP协议的关键知识点
  • C++ | 单例设计模式(懒汉式单例模式源码|饿汉式单例模式)
  • EMC测试
  • Android 开发避坑经验第三篇:RecyclerView 高效使用与常见问题解决
  • 使用 `readResolve` 防止序列化破坏单例模式
  • 【python】python指南(三):使用正则表达式re提取文本中的http链接
  • 11. GIS三维建模工程师岗位职责、技术要求和常见面试题
  • 《Java编程思想》读书笔记-对象导论
  • 10个确保微服务与容器安全的最佳实践
  • css属性的继承、初识值、计算值、当前值、应用值
  • java正则表式的使用
  • miaov-React 最佳入门
  • nginx(二):进阶配置介绍--rewrite用法,压缩,https虚拟主机等
  • python大佬养成计划----difflib模块
  • vue-cli3搭建项目
  • windows下如何用phpstorm同步测试服务器
  • 分享一份非常强势的Android面试题
  • 检测对象或数组
  • 面试总结JavaScript篇
  • 如何使用 JavaScript 解析 URL
  • 问:在指定的JSON数据中(最外层是数组)根据指定条件拿到匹配到的结果
  • 怎样选择前端框架
  • 主流的CSS水平和垂直居中技术大全
  • "无招胜有招"nbsp;史上最全的互…
  • # 数仓建模:如何构建主题宽表模型?
  • (MIT博士)林达华老师-概率模型与计算机视觉”
  • (pt可视化)利用torch的make_grid进行张量可视化
  • (阿里云万网)-域名注册购买实名流程
  • (八)c52学习之旅-中断实验
  • (附源码)springboot炼糖厂地磅全自动控制系统 毕业设计 341357
  • (九)One-Wire总线-DS18B20
  • (论文阅读22/100)Learning a Deep Compact Image Representation for Visual Tracking
  • (一)pytest自动化测试框架之生成测试报告(mac系统)
  • *ST京蓝入股力合节能 着力绿色智慧城市服务
  • *算法训练(leetcode)第四十五天 | 101. 孤岛的总面积、102. 沉没孤岛、103. 水流问题、104. 建造最大岛屿
  • .NET 2.0中新增的一些TryGet,TryParse等方法
  • .net core docker部署教程和细节问题
  • .net core 源码_ASP.NET Core之Identity源码学习
  • .net 程序发生了一个不可捕获的异常
  • .NET 简介:跨平台、开源、高性能的开发平台
  • .Net 中的反射(动态创建类型实例) - Part.4(转自http://www.tracefact.net/CLR-and-Framework/Reflection-Part4.aspx)...
  • .NET/C# 使窗口永不获得焦点
  • .net6 core Worker Service项目,使用Exchange Web Services (EWS) 分页获取电子邮件收件箱列表,邮件信息字段
  • .NET编程C#线程之旅:十种开启线程的方式以及各自使用场景和优缺点
  • .net反编译的九款神器
  • .NET基础篇——反射的奥妙
  • .NET设计模式(11):组合模式(Composite Pattern)