在微服务中使用代理

本文涉及的产品
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
实时数仓Hologres,5000CU*H 100GB 3个月
实时计算 Flink 版,5000CU*H 3个月
简介: 【6月更文挑战第16天】本文介绍了消息队列的原理,重点关注AMQP(5672端口)及其在分布式系统中的作用。消息代理执行错误检查、路由、分发任务,类比于邮政系统,确保可靠传输和系统性能提升,适应微服务架构的需求。

1 概念和基本结构

各种消息代理中,如RabbitMQ和Kafka,作为中间件实现同步(HTTP等)和异步(AMQP等)通信。所有协议共享FIFO队列、TCP基础和生产者-消费者模型,但细节各异,AMQP功能最全。

treeoflife6.png

标准端口 5672 高级消息队列协议或AMQP简称

user1  \                          /  service 3
        \                        /
user2 --- message broker(消息代理)  ---- service 1
        /                        \
user3  /                          \  service 2  

2 常用架构方案

消息同步方案

  • 同步:

              HTTP,如 REST、SOAP、RPC、gRPC 等
    
  • 异步:

         消息队列,如 AMQP、Kafka、MQTT 等
    

对消息可靠性要求较高时考虑 RabbitMQ,否则kafka

RabbitMQ
Apache Qpid
Apache Kafka
Apache ActiveMQ
Redis

Eclipse OpenMQ

JoramMQ

Eclipse Mosquitto

HiveMQ

Solace PubSub+

Google Cloud Pub/Sub

Amazon SQS

Amazon MQ

IBM MQ

Azure Event Hubs

Azure Service Bus

注意:Headers 表示具有任意数量键的 dictionary 或 map,而 attrs 表示一组有限的键值对。

  • 相似点:

所有协议都有队列的 FIFO 概念

所有协议都基于 TCP

所有协议都有生产者、消费者的概念

所有协议都有负载(payload)与正文(body)

  • 不同点:

AMQP 有不同的消息传递模型

Cloud-based 的消息队列具有死信队列

消息检索(routing key)方法不同

Headers 和 attrs 的支持有限

Redis、STOMP、MQTT 的功能最不丰富,而 AMQP 的功能最丰富

Cloud-based 的消息队列具有一些独特的配置以及相关 API。

3 消息代理的任务

这是分布式系统中的一种架构模式,其中消息代理是一种应用程序,它将来自源应用程序的单个协议消息转换为来自目标应用程序的协议消息,从而充当它们之间的中介。

此外,消息代理的任务包括:

    检查消息是否有错误;
    路由到特定的接收者;
    将消息拆分为几个较小的消息,然后汇总接收者的响应并将结果发送到源;
    将消息保存到数据库;
    调用网络服务;
    向订阅者分发消息;

但它到底是什么?

如果您简化这个庞大的描述,您可以将消息代理描绘成现实生活中的邮局(您已经多次遇到过):

发件人(您产品的用户)将包裹(任何数据)带到邮局并指定收件人(另一种服务)。

邮局员工接受包裹并将其放入存储区(将其放入待发送队列中)并发出包裹已成功接收寄件人的收据。

一段时间后,包裹被送到收件人(另一种服务),他不必在家接受包裹。

在这种情况下,他的包裹将在邮箱中等待,直到他收到为止。

4 小结

使用这种架构模式可以解决的最重要的问题之一是并行化任务并保证结果,解决如何转发的问题,即使在发送数据时接收服务不可用。

由于微服务架构在大多数现代项目中占主导地位,这种方法可以最大限度地提高整个系统的性能和弹性。

发件人将包裹交给 消息代理后,不再关心包裹如何送达,但他知道无论如何都会送达。

目录
相关文章
|
缓存 负载均衡 监控
【微服务】一文读懂网关概念+Nginx正反向代理+负载均衡+Spring Cloud Gateway(多栗子)
不知道什么是网关?正向代理?反向代理?负载均衡?负载均衡策略?Nginx和Gateway的区别?假如这些你都不知道,没关系,本文举了大量通俗易懂的例子来阐述了这些概念,保证小白也能看懂,并且最后还提到了gateway的一些配置。
5366 2
【微服务】一文读懂网关概念+Nginx正反向代理+负载均衡+Spring Cloud Gateway(多栗子)
|
弹性计算 监控 负载均衡
Spring Cloud 微服务网关代理 Zuul| 学习笔记
快速学习 Spring Cloud 微服务网关代理 Zuul。
Spring Cloud 微服务网关代理 Zuul| 学习笔记
|
监控 测试技术 应用服务中间件
如何用代理平台解决微服务的一些痛点
为什么要做代理平台 微服务架构越来越流行,在一个上百号人开发的项目中,使用微服务的方式,大量模块之间通过接口调用,随之也带来了许多问题: 接口不能及时提供造成阻塞:往往客户端需要等待后台接口进入测试阶段,才能开始进行开发。
1621 0
|
15天前
|
设计模式 Java API
微服务架构演变与架构设计深度解析
【11月更文挑战第14天】在当今的IT行业中,微服务架构已经成为构建大型、复杂系统的重要范式。本文将从微服务架构的背景、业务场景、功能点、底层原理、实战、设计模式等多个方面进行深度解析,并结合京东电商的案例,探讨微服务架构在实际应用中的实施与效果。
63 6
|
15天前
|
设计模式 Java API
微服务架构演变与架构设计深度解析
【11月更文挑战第14天】在当今的IT行业中,微服务架构已经成为构建大型、复杂系统的重要范式。本文将从微服务架构的背景、业务场景、功能点、底层原理、实战、设计模式等多个方面进行深度解析,并结合京东电商的案例,探讨微服务架构在实际应用中的实施与效果。
30 1
|
2月前
|
安全 应用服务中间件 API
微服务分布式系统架构之zookeeper与dubbo-2
微服务分布式系统架构之zookeeper与dubbo-2
|
2月前
|
负载均衡 Java 应用服务中间件
微服务分布式系统架构之zookeeper与dubbor-1
微服务分布式系统架构之zookeeper与dubbor-1
|
3月前
|
Kubernetes Cloud Native Docker
云原生之旅:从容器到微服务的架构演变
【8月更文挑战第29天】在数字化时代的浪潮下,云原生技术以其灵活性、可扩展性和弹性管理成为企业数字化转型的关键。本文将通过浅显易懂的语言和生动的比喻,带领读者了解云原生的基本概念,探索容器化技术的奥秘,并深入微服务架构的世界。我们将一起见证代码如何转化为现实中的服务,实现快速迭代和高效部署。无论你是初学者还是有经验的开发者,这篇文章都会为你打开一扇通往云原生世界的大门。
|
3月前
|
负载均衡 应用服务中间件 持续交付
微服务架构下的Web服务器部署
【8月更文第28天】随着互联网应用的不断发展,传统的单体应用架构逐渐显露出其局限性,特别是在可扩展性和维护性方面。为了解决这些问题,微服务架构应运而生。微服务架构通过将应用程序分解成一系列小型、独立的服务来提高系统的灵活性和可维护性。本文将探讨如何在微服务架构中有效部署和管理Web服务器实例,并提供一些实际的代码示例。
122 0
|
15天前
|
消息中间件 供应链 架构师
微服务如何实现低耦合高内聚?架构师都在用的技巧!
本文介绍了微服务的拆分方法,重点讲解了“高内聚”和“低耦合”两个核心设计原则。高内聚强调每个微服务应专注于单一职责,减少代码修改范围,提高系统稳定性。低耦合则通过接口和消息队列实现服务间的解耦,确保各服务独立运作,提升系统的灵活性和可维护性。通过领域建模和事件通知机制,可以有效实现微服务的高效拆分和管理。
41 7
下一篇
无影云桌面