在微服务中使用代理

本文涉及的产品
实时数仓Hologres,5000CU*H 100GB 3个月
大数据开发治理平台 DataWorks,不限时长
实时计算 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的一些配置。
3514 2
【微服务】一文读懂网关概念+Nginx正反向代理+负载均衡+Spring Cloud Gateway(多栗子)
|
弹性计算 监控 负载均衡
Spring Cloud 微服务网关代理 Zuul| 学习笔记
快速学习 Spring Cloud 微服务网关代理 Zuul。
183 0
Spring Cloud 微服务网关代理 Zuul| 学习笔记
|
监控 测试技术 应用服务中间件
如何用代理平台解决微服务的一些痛点
为什么要做代理平台 微服务架构越来越流行,在一个上百号人开发的项目中,使用微服务的方式,大量模块之间通过接口调用,随之也带来了许多问题: 接口不能及时提供造成阻塞:往往客户端需要等待后台接口进入测试阶段,才能开始进行开发。
1575 0
|
13小时前
|
敏捷开发 设计模式 负载均衡
深入理解微服务架构中的服务发现与注册机制
【7月更文挑战第24天】在微服务架构的海洋中,服务发现与注册机制如同灯塔指引着航行的船只。本文将探索这一机制的重要性、实现原理以及面临的挑战,带领读者领略微服务架构中的关键导航系统。
|
1天前
|
存储 设计模式 监控
探索微服务架构的弹性设计
【7月更文挑战第23天】在现代软件开发中,微服务架构因其灵活性和可扩展性而受到青睐。然而,随之而来的挑战是如何确保系统在面对故障时能够持续运行。本文将深入探讨如何通过弹性设计原则和实践来增强微服务架构的韧性,包括冗余、服务降级、超时控制等策略,并结合实例分析其应用。
|
12小时前
|
Kubernetes 监控 开发者
探索后端开发中的微服务架构实践
在现代软件开发领域,微服务架构作为一种灵活、可扩展的后端解决方案,正逐渐取代传统的单体式架构。本文将深入探讨微服务的设计理念、实施策略及其在企业级应用中的具体应用案例,旨在为读者提供一套系统的微服务实践指南。通过对比分析微服务与单体架构的性能差异,结合具体数据和案例研究,本文揭示了微服务在提高系统可维护性、可扩展性和敏捷性方面的优势。最后,文章讨论了微服务实施过程中可能遇到的挑战及解决策略,为后端开发者提供了宝贵的参考和启示。
|
1天前
|
监控 安全 前端开发
探索微服务架构中的API网关模式
【7月更文挑战第23天】在云原生时代,微服务架构已成为构建可扩展、灵活且容错的系统的标准方法。然而,随着服务的增多,如何有效地管理跨服务通信成为了一个挑战。API网关模式应运而生,作为微服务生态系统中的关键组件,它负责请求的路由、转发、过滤和加工处理。本文将从API网关的定义出发,深入探讨其在微服务架构中的应用,以及如何实现高效的服务治理。我们将通过实例分析来揭示API网关设计的最佳实践,并讨论其对系统性能、安全性和可维护性的影响。
|
2天前
|
弹性计算 负载均衡 监控
探索微服务架构下的API网关模式
在现代的分布式系统中,微服务架构已经成为了主流。随着服务的不断增多,如何高效地管理这些服务之间的通信成为了一个关键问题。本文将深入探讨API网关模式,一种有效的解决方案,它能够提供请求路由、负载均衡、认证授权和监控等功能。我们将通过对比分析、案例研究以及数据统计来展示API网关模式的优势,并讨论其在实际部署中的最佳实践和可能面临的挑战。
21 5
|
1天前
|
缓存 监控 负载均衡
探索微服务架构中的API网关模式
在微服务架构的海洋中,API网关如同一座灯塔,指引着服务间的通信。本文将深入探讨API网关的设计哲学、关键功能以及在实际应用中的考量因素。通过对比分析,我们将揭示API网关如何在提高系统可维护性、增强安全性和优化性能方面发挥其不可或缺的作用。此外,文章还将提供实践指南,帮助读者在构建或改进微服务架构时,做出明智的API网关选择和部署决策。
|
1天前
|
Kubernetes 搜索推荐 开发者
探索后端开发的未来之路:微服务架构与容器化技术
随着云计算技术的不断成熟和普及,后端开发领域正经历着前所未有的变革。本文将深入探讨微服务架构和容器化技术如何重塑后端开发的面貌,提升系统的可扩展性、灵活性和可靠性。通过分析现代后端系统面临的挑战,我们将展示微服务和容器化如何提供解决方案,并预测这些技术如何塑造后端开发的未来发展。
13 3