kafka消息队列(1)

文章目录

概述

消息队列这个并不陌生,所谓消息队列,就是消息+队列(MessageQueue,简称MQ)。

本质是就是个队列,FIFO先入先出,只不过队列中存放的内容是message,从而叫消

息队列。

主要用途:不同的server,进程process,线程thread之间通信。

使用消息队列的场景

  • 异步处理
  • 流量控制
  • 服务解耦
  • 发布订阅
  • 高并发缓冲

消息队列--发布订阅

这个比较常用,比如游戏里跨服:

  • 广播通知哪个boss复活,可以去打boss
  • 广播通知boss被谁杀了

消息队列--基本概念和原理1

  1. Broker
  2. 消息的生产者,消费者

Broker换句话说就是MQ的服务器。

消息的生产者Producer:发送消息到消息队列。

消息的消费者Consumer:从消息队列接收消息。

消息队列--基本概念和原理2

  • 点对点消息队列模型

    消息生产者向一个特定的队列发送消息,消息消费

    者从该队列中接收消息;

    一条消息只有一个消费者能收到;

  • 发布订阅消息模型-Topic

    发布订阅消息模型中,支持向一个特定的主题Topic发布消息,0个或多个订阅者接收来自这个消息主题的消息。在这种模型下发布者和订阅者彼此不知道对方。实际操作过程中,发布订阅消息模型中,支持向一个特定的主题Topic发布消息,0个或多个订阅者接收来自这个消息主题的消息。在这种模型下,发布者和订阅者彼此不知道对方。

  • 消息的顺序性保证

    基于Queue消息模型,利用FIFO先进先出的特性,可以保证消息的顺序性。

  • 消息的ACK确认机制

    即消息的Ackownledge确认机制,为了保证消息不丢失,消息队列提供了消息Acknowledge机制,即ACK机制,当Consumer确认消息已经被消费处理,发送一个ACK给消息队列,此时消息队列便可以删除这个消息了。如果Consumer宕机/关闭,没有发送ACK,消息队列将认为这个消息没有被处理,会将这个消息重新发送给其他的Consumer重新消费处理。

  • 消息的持久化

    消息的持久化,对于一些关键的核心业务来说是非常重要的,启用消息持久化后,消息队列宕机重启后,消息可以从持久化存储恢复,消息不丢失,可以继续消费处理。

  • 消息的同步和异步收发

    同步:消息的收发支持同步收发的方式 一应一答。同时还有另一种同步方式:同步收发场景下,消息生产者和消费者双向应答模式。消息的接收如果以同步的方式(Pull)进行接收,如果队列中为空,此时接收将处于同步阻塞状态,会一直等待,直到消息的到达。

    异步:消息的收发同样支持异步方式:异步发送消息,不需要等待消息队列的接收确认;异步接收消息,以Push的方式触发消息消费者接收消息。

小结

本篇主要写了Kafka消息队列,大概写了消息队列的部分基本概念和原理,还有些内容放在后边写。感兴趣,可以一起来学习学习。OK,本篇结束。

相关推荐
别动我齐刘海9 小时前
C++ 工程化学习
java·linux·前端·c++·学习·机器学习·机器人
程序员老陆9 小时前
C++ std::promise深度解析
c++·程序设计
青少儿编程课堂10 小时前
迪杰斯特拉(Dijkstra)算法:单源最短路与赛场路线规划
c++·python·算法·bfs·信息学竞赛
沫璃染墨11 小时前
《Qt从零入门系列(十三):QSS样式表详解——从选择器与层叠规则到控件美化实战》
开发语言·css·c++·qt·ui·qt6.3·qss
道尔柯南12 小时前
C++ 面向对象编程入门:类和对象(上)
开发语言·c++·算法
aqiu11111114 小时前
【C++算法打怪专栏】C++ `unordered_set` 常用初始化与插入方法总结
开发语言·c++·算法
Terra.K14 小时前
高精度阶乘求和模板深度解析
开发语言·c++·算法
智码看视界14 小时前
C++智能指针全景剖析及面试20问
开发语言·c++·深度学习·面试·内存管理·智能指针
Peregrine915 小时前
C++ - > 类和对象
java·c++·算法
‎ദ്ദിᵔ.˛.ᵔ₎17 小时前
c++11:fuction包装器
开发语言·c++