.NET 云原生架构师训练营(模块二 基础巩固 消息队列 介绍与基础)--学习笔记

简介: 主要使用场景队列的三种形式消息队列的优点

2.6.1 消息队列 -- 介绍

  • 主要使用场景
  • 队列的三种形式
  • 消息队列的优点

主要使用场景

  • 典型的异步处理
  • 流量削锋
  • 应用解耦

队列的三种形式

  • 点对点
  • 工作队列
  • 发布与订阅

消息队列的优点

1、屏蔽异构平台的细节:发送方、接收方系统之间不需要了解双方,只需认识消息。

2、异步:消息堆积能力;发送方接收方不需同时在线,发送方接收方不需同时扩容(削峰)。

3、解耦:防止引入过多的API给系统的稳定性带来风险;调用方使用不当会给被调用方系统造成压力,被调用方处理不当会降低调用方系统的响应能力。

4、复用:一次发送多次消费。

5、可靠:一次保证消息的传递。如果发送消息时接收者不可用,消息队列会保留消息,直到成功地传递它。

6、提供路由:发送者无需与接收者建立连接,双方通过消息队列保证消息能够从发送者路由到接收者,甚至对于本来网络不易互通的两个服务,也可以提供消息路由。

2.6.2 RabbitMQ -- 基础

  • 主要场景
  • AMQP

主要场景

软件系统中使用消息队列的主要场景:

秒杀活动、抢购、消息通讯、邮件发送、电话短信等都是典型的采用消息中间件的业务场景。

001.jpg

AMQP

AMQP 0-9-1 Model Explained:https://www.rabbitmq.com/tutorials/amqp-concepts.html

002.jpg

  • 交换机
  • 队列
  • 绑定
  • 信道(Channel)
  • 消息

交换机

交换机的四种类型

  • Direct 直连
  • Fanout 发布订阅-广播
  • Topic 发布订阅-路由
  • Headers

Direct 直连

003.jpg

Fanout 发布订阅-广播

004.jpg

Topic 发布订阅-路由

Topics:https://www.rabbitmq.com/tutorials/tutorial-five-python.html

005.jpg

006.jpg

Headers

特性中可以做路由的匹配

队列

它们存储由应用程序使用的消息。

队列与交换共享一些属性,但也具有一些其他属性:

  • 名称
  • 持久(队列将在代理重新启动后幸存)
  • 独占(仅由一个连接使用,并且该连接关闭时队列将被删除)
  • 自动删除(至少有一个使用方的队列在最后一个使用方退订时被删除)
  • 参数(可选;由插件和特定于代理的功能使用,例如消息TTL,队列长度限制等)

必须先声明队列,然后才能使用队列。声明队列将导致它创建(如果尚不存在)。如果队列已经存在并且其属性与声明中的相同,则该声明无效。

如果有至少一个消费者订阅了队列,当消息到达队列时,消息会发送给订阅者。如果一个订阅者都没有,消息会在队列中等待,直到出现第一个订阅者

绑定

绑定是交换使用(其中包括)将消息路由到队列的规则。

为了指示交换机E将消息路由到队列Q,必须将Q绑定到E。绑定可能具有某些交换机类型使用的可选 路由键属性。

路由密钥的目的是选择发布到交换机的某些消息以路由到绑定队列。换句话说,路由键就像一个过滤器。

信道(Channel)

AMQP 引进的一个特殊的概念,建立在 tcp 之上的一个引用层协议

一个客户端与一个服务器建立一个连接,可以用于多个消费者

一个 tcp 连接里面可以产生多个信道

007.jpg

消息

  • 消息确认
  • 拒绝消息
  • 预读消息 prefetching
  • 消息格式

消息确认

什么时候从队列中移除

  • 默认模式(不需要 ack,发送到消费者之后即从队列中移除)
  • ack 模式(需要消息者回复)

消息格式

  • Content type
  • Content encoding
  • Routing key
  • Delivery mode (persistent or not)
  • Message priority
  • Message publishing timestamp
  • Expiration period
  • Publisher application id
目录
相关文章
|
人工智能 缓存 Kubernetes
.NET 9 首个预览版发布:瞄准云原生和智能应用开发
.NET 9 首个预览版发布:瞄准云原生和智能应用开发
277 3
|
消息中间件 存储 缓存
Kafka【基础知识 01】消息队列介绍+Kafka架构及核心概念(图片来源于网络)
【2月更文挑战第20天】Kafka【基础知识 01】消息队列介绍+Kafka架构及核心概念(图片来源于网络)
850 2
|
消息中间件 监控 大数据
Kafka消息队列架构与应用场景探讨:面试经验与必备知识点解析
【4月更文挑战第9天】本文详尽探讨了Kafka的消息队列架构,包括Broker、Producer、Consumer、Topic和Partition等核心概念,以及消息生产和消费流程。此外,还介绍了Kafka在微服务、实时数据处理、数据管道和数据仓库等场景的应用。针对面试,文章解析了Kafka与传统消息队列的区别、实际项目挑战及解决方案,并展望了Kafka的未来发展趋势。附带Java Producer和Consumer的代码示例,帮助读者巩固技术理解,为面试做好准备。
1397 0
|
10月前
|
消息中间件 存储 大数据
阿里云消息队列 Kafka 架构及典型应用场景
阿里云消息队列 Kafka 是一款基于 Apache Kafka 的分布式消息中间件,支持消息发布与订阅模型,满足微服务解耦、大数据处理及实时流数据分析需求。其通过存算分离架构优化成本与性能,提供基础版、标准版和专业版三种 Serverless 版本,分别适用于不同业务场景,最高 SLA 达 99.99%。阿里云 Kafka 还具备弹性扩容、多可用区部署、冷热数据缓存隔离等特性,并支持与 Flink、MaxCompute 等生态工具无缝集成,广泛应用于用户行为分析、数据入库等场景,显著提升数据处理效率与实时性。
|
机器学习/深度学习 存储 编解码
RT-DETR改进策略【Neck】| ArXiv 2023,基于U - Net v2中的的高效特征融合模块:SDI(Semantics and Detail Infusion)
RT-DETR改进策略【Neck】| ArXiv 2023,基于U - Net v2中的的高效特征融合模块:SDI(Semantics and Detail Infusion)
451 16
RT-DETR改进策略【Neck】| ArXiv 2023,基于U - Net v2中的的高效特征融合模块:SDI(Semantics and Detail Infusion)
|
机器学习/深度学习 存储 编解码
YOLOv11改进策略【Neck】| ArXiv 2023,基于U - Net v2中的的高效特征融合模块:SDI(Semantics and Detail Infusion)
YOLOv11改进策略【Neck】| ArXiv 2023,基于U - Net v2中的的高效特征融合模块:SDI(Semantics and Detail Infusion)
552 7
YOLOv11改进策略【Neck】| ArXiv 2023,基于U - Net v2中的的高效特征融合模块:SDI(Semantics and Detail Infusion)
|
存储 消息中间件 缓存
独特架构打造新一代消息队列Apache Pulsar
Apache Pulsar 是一个开源的分布式消息流平台,由雅虎开发并于 2016 年开源,2018 年成为 Apache 顶级项目。Pulsar 通过独特的架构提供多租户、持久化存储和批处理等高级功能,支持高吞吐量、低延迟的消息传递。其核心组件包括 Broker、Apache BookKeeper 和 Apache ZooKeeper,分别负责消息处理、持久化存储和集群管理。
598 1
|
Kubernetes Cloud Native Ubuntu
庆祝 .NET 9 正式版发布与 Dapr 从 CNCF 毕业:构建高效云原生应用的最佳实践
2024年11月13日,.NET 9 正式版发布,Dapr 从 CNCF 毕业,标志着云原生技术的成熟。本文介绍如何使用 .NET 9 Aspire、Dapr 1.14.4、Kubernetes 1.31.0/Containerd 1.7.14、Ubuntu Server 24.04 LTS 和 Podman 5.3.0-rc3 构建高效、可靠的云原生应用。涵盖环境准备、应用开发、Dapr 集成、容器化和 Kubernetes 部署等内容。
825 6
|
消息中间件 弹性计算 运维
云消息队列RabbitMQ 版架构优化评测
云消息队列RabbitMQ 版架构优化评测
263 6
|
Cloud Native API C#
.NET云原生应用实践(一):从搭建项目框架结构开始
.NET云原生应用实践(一):从搭建项目框架结构开始