wxvirus wxvirus
首页
  • Go文章

    • Go语言学习
  • Rust

    • Rust学习
  • Java

    • 《Java》
  • Python文章

    • Python
  • PHP文章

    • PHP设计模式
  • 学习笔记

    • 《Git》
  • HTML
  • CSS
  • JS
  • 技术文档
  • GitHub技巧
  • 刷题
  • 博客搭建
  • 算法学习
  • 架构设计
  • 设计模式
  • 学习
  • 面试
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

无解的lifecycle

let today = new Beginning()
首页
  • Go文章

    • Go语言学习
  • Rust

    • Rust学习
  • Java

    • 《Java》
  • Python文章

    • Python
  • PHP文章

    • PHP设计模式
  • 学习笔记

    • 《Git》
  • HTML
  • CSS
  • JS
  • 技术文档
  • GitHub技巧
  • 刷题
  • 博客搭建
  • 算法学习
  • 架构设计
  • 设计模式
  • 学习
  • 面试
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • C&C++

  • PHP

  • Python

  • Go

    • go基础

    • go核心

    • 网络编程

    • gowebsocket

    • gocasbin

    • K8S

    • rabbitmq

      • rabbitmq了解
        • 为啥要用 MQ
        • 案例
        • 抗压
        • 知识点
      • 快速部署和go客户端使用
      • 生产者发送消息
      • 交换机
    • 框架相关

    • go-zero

    • kafka

    • rpc

    • 性能相关

  • microservice

  • rust

  • Java

  • 学习笔记

  • 后端
  • Go
  • rabbitmq
wxvirus
2023-01-15

rabbitmq了解

# RabbitMQ 了解

# 为啥要用 MQ

如果项目就几万条数据。1-2 百并发,就增删改查业务

那么,就不需要 MQ

# 案例

解耦 + 异步

假设有一个用户注册需要以下流程

  1. 用户数据入库
  2. 发送新人欢迎邮件
  3. 赠送新人虚拟币【或积分】
graph TD
	入库 --> 邮件 --> 虚拟币
1
2

其实只要入库成功就算成功了,下面 2 步完全不需要去等待,如果有 MQ 就可以完成异步。

graph TD
	A(MQ)
	B(入库)
	C(邮件)
	D(虚拟币)
	B -- 入库成功把user_id发到MQ里 --> A
	A --> C
	A --> D
1
2
3
4
5
6
7
8

本质上其实入库完就算成功了,于此同时,会有另外的程序去 MQ 里拿到用户 id 去发送邮件和赠送虚拟币的过程。

所以,基本只有有异步操作,就可以使用 MQ

# 抗压

下订单功能,压力大了之后,对应的下单 API 可能就扛不住了,这个时候可以整一个负载均衡,再假如负载均衡也出现问题,还是会出现压力,然后其实我们可以在一定程度上,可以把下单直接扔给MQ集群,最后可以由下单接口消费者慢慢去处理。

graph LR;
	A(高并发下单)
	B(下订单API 1)
	C(下订单API 2)
	D(下订单API 3)
	F(MQ集群)
	A --> F
	F -- 慢慢消费 --> B
	F -- 慢慢消费 --> C
	F -- 慢慢消费 --> D
1
2
3
4
5
6
7
8
9
10

# 知识点

  1. 就像 HTTP 协议(应用层)一样,浏览器不可能直接裸奔在 TCP 上,所以必须有一个 HTTP 协议来进行互相识别
  2. MQ 也有协议:如AMQP,也属于应用层协议
  3. 浏览器(web服务软件)等都是HTTP协议的实现者,那么RabbitMQ是AMQP的实现者(由erlang编写)
编辑 (opens new window)
#RabbitMQ
上次更新: 2023/01/15, 21:39:37
K8S的API调用
快速部署和go客户端使用

← K8S的API调用 快速部署和go客户端使用→

最近更新
01
vue3配合vite初始化项目的一些配置
07-26
02
网盘系统开发学习
07-24
03
linux多进程
06-19
更多文章>
Theme by Vdoing | Copyright © 2021-2024 wxvirus 苏ICP备2021007210号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式