.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
目录
相关文章
|
7天前
|
Cloud Native 云计算 Docker
云原生之旅:从容器化到微服务架构
【9月更文挑战第27天】本文将引领读者进入云原生的世界,探索如何通过容器化技术实现应用的快速部署与扩展,并深入理解微服务架构的设计哲学。我们将一起见证代码如何转化为可在云端无缝运行的服务,同时讨论云原生生态中的最佳实践和面临的挑战。
|
5天前
|
Kubernetes Cloud Native 持续交付
探索云原生架构:打造弹性可扩展的应用
【9月更文挑战第29天】在云计算的浪潮中,云原生架构成为企业追求高效、灵活和可靠服务的关键。本文将深入解析云原生的概念,探讨如何利用容器化、微服务和持续集成/持续部署(CI/CD)等技术构建现代化应用。我们将通过一个简易的代码示例,展示如何在Kubernetes集群上部署一个基于Node.js的应用,从而揭示云原生技术的强大能力和潜在价值。
19 6
|
6天前
|
监控 Cloud Native 持续交付
云原生架构:构建弹性与高效的现代应用##
随着云计算技术的不断成熟,云原生架构逐渐成为企业技术转型的重要方向。本文将深入探讨云原生的核心概念、主要技术和典型应用场景,以及如何通过云原生架构实现高可用性、弹性扩展和快速迭代,助力企业在数字化转型中保持竞争优势。 ##
25 6
|
4天前
|
Cloud Native 持续交付 微服务
云原生时代的微服务架构实践
【9月更文挑战第30天】随着云计算技术的不断进步,云原生已经成为现代软件开发的重要趋势。本文将通过深入浅出的方式,介绍如何在云原生环境下设计并实施微服务架构,以及如何利用容器化技术和自动化工具来提升服务的可维护性和可扩展性。我们将一起探讨微服务架构的核心原则、优势,以及在云平台中部署和管理微服务的最佳实践。无论你是初学者还是有经验的开发者,这篇文章都将成为你探索云原生和微服务世界的一盏明灯。
|
7天前
|
运维 Cloud Native 持续交付
云原生架构:构建未来应用的基石
本文将深入探讨云原生架构的核心概念、主要优势以及实际应用案例,揭示其在现代IT领域的重要性。通过详细解析云原生技术的各个方面,帮助读者更好地理解和应用这一前沿技术。
|
7天前
|
监控 Cloud Native 持续交付
云原生时代的微服务架构设计原则与实践
【9月更文挑战第27天】本文深入探讨了在云原生环境下,如何高效地实施微服务架构。通过分析微服务的基本概念、设计原则和关键技术,结合实际案例,指导读者理解并应用微服务架构于云计算项目之中。文章旨在为软件开发者和架构师提供一条清晰的路径,以实现更加灵活、可扩展且易于维护的系统。
|
7天前
|
Kubernetes 负载均衡 Cloud Native
云原生时代的微服务架构演进之路
【9月更文挑战第27天】随着云计算技术的飞速发展,云原生概念应运而生,并迅速成为推动企业IT转型的重要力量。本文将深入探讨云原生环境下微服务架构的设计原则、关键技术及实践案例,旨在为读者揭示在云原生时代下,如何通过微服务架构提升系统的可伸缩性、灵活性和容错能力,进而支撑业务的快速迭代与创新。
12 3
|
6天前
|
运维 Cloud Native Devops
云原生架构下的企业数字化转型之路##
在当今数字化浪潮中,企业如何实现高效、灵活的转型,成为行业焦点。云原生技术以其独特的优势,如容器化、微服务、DevOps等,正引领一场变革。本文将深入探讨云原生技术的基本原理、核心组件及其在实际应用中的案例,为企业提供一条清晰的云原生转型路径。通过分析云原生如何助力企业提升业务敏捷性、降低运维成本、增强系统弹性和安全性,我们将揭示其背后的深刻内涵与广阔前景。 ##
|
9天前
|
Cloud Native 持续交付 云计算
探索云原生架构:构建现代应用的新范式
在当今数字化浪潮中,云原生架构以其敏捷性、弹性和可扩展性成为企业技术转型的核心驱动力。本文将引领读者深入理解云原生的概念,剖析其关键技术组件——微服务、容器化、DevOps实践及持续交付/持续部署流程,并揭示这些技术如何相互协作,共同构建高效、可靠且易于管理的现代软件系统。通过对云原生架构的全面解读,我们旨在为开发者、架构师乃至企业决策者提供有价值的见解与指导,助力其在快速变化的市场环境中保持竞争力。
|
6天前
|
运维 Cloud Native Devops
云原生时代的微服务架构演进之路
【9月更文挑战第28天】在云原生的浪潮下,微服务架构如同星辰般熠熠生辉。本文将带你穿梭于微服务的世界,探索其与云原生技术如何交织出现代软件工程的新篇章。从微服务的诞生谈起,到如何在云平台上高效部署,我们将一同见证这场架构变革给开发和运维带来的深刻影响。你将看到,随着容器化、自动化运维等技术的融入,微服务不仅仅是一种架构风格,更是一种推动业务创新的力量。

热门文章

最新文章

下一篇
无影云桌面