• MQ架构设计原理


    MQ架构设计原理

    什么是消息中间件

    消息中间件基于队列模型实现异步/同步传输数据

    作用:可以实现支撑高并发、异步解耦、流量削峰、降低耦合度。

    传统的http请求存在那些缺点

    1.Http请求基于请求与响应的模型,在高并发的情况下,客户端发送大量的请求达到

    服务器端有可能会导致我们服务器端处理请求堆积。

    2.Tomcat服务器处理每个请求都有自己独立的线程,如果超过最大线程数会将该请求缓存到队列中,如果请求堆积过多的情况下,有可能会导致tomcat服务器崩溃的问题。

    所以一般都会在nginx入口实现限流,整合服务保护框架。

    3.http请求处理业务逻辑如果比较耗时的情况下,容易造成客户端一直等待,阻塞等待

    过程中会导致客户端超时发生重试策略,有可能会引发幂等性问题。

    注意事项:接口是为http协议的情况下,最好不要处理比较耗时的业务逻辑,耗时的业务逻辑应该单独交给多线程或者是mq处理。

    Mq应用场景有那些

    1. 异步发送短信
    2. 异步发送新人优惠券
    3. 处理一些比较耗时的操作

    同步发送http请求

     

    客户端发送请求到达服务器端,服务器端实现会员注册业务逻辑,

    1.insertMember() --插入会员数据  1s

    2.sendSms()----发送登陆短信提醒 3s

    3.sendCoupons()----发送新人优惠券  3s

    总共响应需要6s时间,可能会导致客户端阻塞6s时间,对用户体验不是很好。

    多线程与MQ方式实现异步?

    多线程处理业务逻辑

     

    用户向数据库中插入一条数据之后,在单独开启一个线程异步发送短信和优惠操作。

    客户端只需要等待1s时间

    优点:适合于小项目 实现异步

    缺点:有可能会消耗服务器cpu资源资源

    Mq处理业务逻辑

     

    先向数据库中插入一条会员数据,让后再向MQ中投递一个消息,MQ服务器端在将消息推送给消费者异步解耦处理发送短信和优惠券。

    Mq与多线程之间区别

    MQ可以实现异步/解耦/流量削峰问题;

    多线程也可以实现异步,但是消耗到cpu资源,没有实现解耦。

    Mq消息中间件名词

    Producer 生产者:投递消息到MQ服务器端;

    Consumer  消费者:从MQ服务器端获取消息处理业务逻辑;

    Broker   MQ服务器端

    Topic 主题:分类业务逻辑发送短信主题、发送优惠券主题

    Queue 存放消息模型 队列 先进先出 后进后出原则 数组/链表

    Message 生产者投递消息报文:json

    主流mq区别对比

    特性

    ActiveMQ

    RabbitMQ

    RocketMQ

    kafka

    开发语言

    java

    erlang

    java

    scala

    单机吞吐量

    万级

    万级

    10万级

    10万级

    时效性

    ms级

    us级

    ms级

    ms级以内

    可用性

    高(主从架构)

    高(主从架构)

    非常高(分布式架构)

    非常高(分布式架构)

    功能特性

    成熟的产品,在很多公司得到应用;有较多的文档;各种协议支持较好

    基于erlang开发,所以并发能力很强,性能极其好,延时很低管理界面较丰富

    MQ功能比较完备,扩展性佳

    只支持主要的MQ功能,像一些消息查询,消息回溯等功能没有提供,毕竟是为大数据准备的,在大数据领域应用广。

  • 相关阅读:
    线程池:
    C#:实现托盘
    Linux内核 TCP/IP、Socket参数调优
    redis配置文件redis.conf参数说明
    redis安装与参数说明
    巧用linux服务器的/dev/shm/,如果合理使用,可以避开磁盘IO不给力,提高网站访问速度。
    mkdir:批量创建文件夹
    linux下的shell运算(加、减、乘、除)
    Linux查看文件编码格式及文件编码转换
    解决vi/vim中粘贴会在行首多很多缩进和空格的问题
  • 原文地址:https://www.cnblogs.com/dongl961230/p/15819135.html
Copyright © 2020-2023  润新知