前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何避免相互依赖的系统间耦合

如何避免相互依赖的系统间耦合

作者头像
王小明_HIT
发布2020-09-03 17:02:18
1.1K0
发布2020-09-03 17:02:18
举报
文章被收录于专栏:程序员奇点程序员奇点

如何避免相互依赖的系统间耦合

两个应用熊中需要远程传递数据,常规的做法是直接进行远程调用,使用 Http,或者 其他 RMI 方式进行调用,但是这种方式将系统耦合起来,一旦被调用的系统产生了故障或者升级,都可能会引起调用者导致不得不跟随升级。

如何避免这种情况?

主要手段是使用消息队列的异步架构。

消息队列实现异步架构

消息队列实现异步架构是相对于同步队列来说的,同步架构是指,当应用程序调用服务是,当前程序需要阻塞等待服务完成,才能接着进行后续执行。

消息异步架构如下:

消息队列异步架构主要角色包括消息生产者,消息队列,消息消费者。消息生产者通过是主应用程序生产者将调用请求封装成消息发送给消息队列。 消费者消费程序从队列中获取,消费消息,由消费者完成业务逻辑处理。

点对点模式场景

多个消费生产者向消息队列发送消息,多个消息消费者消费消息,每个消息只会被一个消息消费者消费。

一对多

消息生产者可以按照主题进行发送,多个消息消费者可订阅同一个主题,每个消费者都可以收到这主题消息拷贝,然后按照自己的业务逻辑分别进行处理。

消息队列异步架构优点

使用消息队列异步架构,可以实现更高的写操作性能和更低的耦合性

  1. 改善写操作请求的响应时间

使用消息队列,生产者应有程序只需要将消息发送到消息队列,然后继续执行,无需等待消息消费处理,加快了响应速度。

  1. 更容易实现伸缩

应用程序可以通过负载均衡实现集群伸缩,这个是基于应用服务器级别的伸缩,如果使用消息队列,将图片处理相关的操作放在消费者服务器上,那么就可以单独对图片处理的消费者集群进行伸缩。这个是基于应用级别的伸缩。

  1. 削峰 互联网的访问压力随时都在变化,系统的访问高峰和低谷的并发压力差别非常大。因此可以在压力最大的时候,使用消息队列,这样将需要处理的消息放入消息队列,消费者可以控制消费速度,能够降低系统访问高峰时的压力,在访问低谷时续消费消息队列中的消息。
  2. 解耦

调用这发消息到消息队列,不需要依赖被调用这的代码和处理结果,增加新的功能,只需要增加新的消费者即可。

总结

消息队列异步架构是改善互联网应用操作性能的手段,是低耦合,易扩展的分布式应用架构模式。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-08-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员奇点 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 如何避免相互依赖的系统间耦合
    • 消息队列实现异步架构
      • 点对点模式场景
    • 一对多
      • 消息队列异步架构优点
        • 总结
        相关产品与服务
        消息队列 CMQ 版
        消息队列 CMQ 版(TDMQ for CMQ,简称 TDMQ CMQ 版)是一款分布式高可用的消息队列服务,它能够提供可靠的,基于消息的异步通信机制,能够将分布式部署的不同应用(或同一应用的不同组件)中的信息传递,存储在可靠有效的 CMQ 队列中,防止消息丢失。TDMQ CMQ 版支持多进程同时读写,收发互不干扰,无需各应用或组件始终处于运行状态。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档