贵阳建网站公司,网站建设有名的公司,wordpress游客购买,中国十大财务软件文章目录你们项目中哪些地方有使用到 MQ #xff1f;为什么需要使用 MQ#xff1f;MQ 如何避免消息堆积的问题#xff1f;MQ 宕机了消息是否会丢失呢#xff1f;生产者投递消息#xff0c;MQ 宕机了如何处理#xff1f;MQ 如何保证消息顺序一致性问题?为什么保证了消息顺…
文章目录你们项目中哪些地方有使用到 MQ 为什么需要使用 MQMQ 如何避免消息堆积的问题MQ 宕机了消息是否会丢失呢生产者投递消息MQ 宕机了如何处理MQ 如何保证消息顺序一致性问题?为什么保证了消息顺序一致性有可能降低我们消费者消费的速率解决方案MQ 如何保证消息幂等问题?你们项目中哪些地方有使用到 MQ
使用 MQ 异步发送优惠券使用 MQ 异步发送通知短信、邮件使用 MQ 异步扣库存使用MQ异步审核贷款金额使用MQ异步第三方接口(中国公民信息网) 为什么需要使用 MQ
1.异步处理多线程和 MQ 2.实现解耦 3.流量削峰MQ 可以实现抗高并发
可以按场景简述录单流程用户手机端填写录单流程服务端接收到请求信息后存储数据库响应客户录单成功然后写一条消息到MQ中具体生成整张保单信息的耗时处理报单中心模块监听MQ信息进行处理最后给客户发送保单成功短信通知。
解耦客户端请求到服务端用户信息写入落库主线程响应客户端另起一个子线程发送MQ系统耗时操作让具体的业务系统慢慢处理。当采用多线程时主线程和子线程都在同一个服务器上当服务器当即后一些操作就无法完成当使用MQ时具体业务耗时逻辑的操作有另一个服务器负责去完成二者没有关联当前这宕机后后者无影响。
流量削峰
背景客户端50个请求到服务端tomcat而tomcat内部线程容量是有限制的比如说同时处理只能处理50个任务当其他任务进行来时会缓存对队列中当处理的请求越来越多就会阻塞线程或者内存溢出。
处理方案客户端50个请求到服务端tomcat而tomcat不做具体耗时逻辑处理信息落库后直接响应客户端然后发一条消息到业务系统的MQ中就可以了。 MQ 与多线程实现异步的区别
1.多线程方式实现异步可能会消耗到我们的 CPU资源可能会影响到我们业务线程执行 会发生 CPU竞争的问题例如单核多线程cpu上下文切换会出现卡顿现象 2.MQ 方式实现异步是完全解耦适合于大型互联网项目 3.小的项目可以使用多线程实现异步大项目建议使用 MQ 实现异步 MQ 如何避免消息堆积的问题
1.提高消费者消费的速率对我们的消费者实现集群 2.消费者应该批量形式获取消息 减少网络传输的次数 说明同一个组中多个消费者不会重复消费同一条消息。均摊策略等等 理解
1.产生背景 生产者投递消息的速率与我们消费者消费的速率完全不匹配。
2.生产者投递消息的速率消费者消费的速率 导致我们消息会堆积在我们 MQ 服务器端中没有及时的被消费者消费 所以就会产生消息堆积的问题 3.注意的是 rabbitMQ 消费者我们的消息消费如果成功的话 消息会被立即删除。 kafka 或者 rocketMQ 消息消费如果成功的话消息是不会立即被删除。
MQ 宕机了消息是否会丢失呢
不会因为我们消息会持久化在我们硬盘中。
MQ 如何保证消息不丢失 1.MQ 服务器端 消息持久化到硬盘
2.生产者 消息确认机制 必须确认消息成功刷盘到硬盘中才能够人为消息投递成功。
3.消费者 必须确认消息消费成功 。
rabbitMQ 中才会将该消息删除。
rocketMQ 或者 kafka 中消息消费后会提交 offse偏移量消息并不会立即删除。
消息删除通过日志保留策略配置过了48小时在进行删除
生产者投递消息MQ 宕机了如何处理
1.生产者投递消息会将 msg 消息内容记录下来后期如果发生生产者投递消息失败 2.可以根据该日志记录实现补偿机制 3.补偿机制获取到该 msg 日志消息内容实现重试
MQ 如何保证消息顺序一致性问题?
将消息需要投递到同一个 MQ 服务器同一个分区模型中存放最终被同一个消费者消费。 核心原理设定相同的消息 key根据相同的消息 key 计算 hash 存放在同一个分区中。
产生背景
MQ服务器集群或者MQ采用分区模型架构存放消息每个分区对于一个消息者消费消息。
解决消息顺序一致性问题
核心办法消息一定要投递到同一个MQ、同一个分区模型最终被同一个消费者消费。
根据消息key计算%分区模型总数。
理解
1.大多数的项目是不需要保证 MQ 消息顺序一致性的问题只有在一些特定的场景可能会需要比如 MySQL 与 Redis 实现异步同步数据
2.所有消息需要投递到同一个 MQ 服务器同一个分区模型中存放最终被同一个消费者消费核心原理设定相同的消息 key根据相同的消息 key 计算 hash 存放在同一个分区中。 如果保证了消息顺序一致性有可能降低我们消费者消费的速率。
为什么保证了消息顺序一致性有可能降低我们消费者消费的速率解决方案 MQ 如何保证消息幂等问题?