北京商城网站建设,网站在线支付接口申请,律师网络推广哪个比较好,seo课程培训班费用使用mq优点
mq是一种常见的中间件#xff0c;在项目中经常用到#xff0c;它具有异步、解耦、削峰填谷的作用。
异步
比如下单流程#xff0c;A服务—B服务#xff0c;总的耗时是A耗时时间B耗时时间#xff0c;而改为A—mq----B后#xff0c;A发送mq后立刻…使用mq优点
mq是一种常见的中间件在项目中经常用到它具有异步、解耦、削峰填谷的作用。
异步
比如下单流程A服务—B服务总的耗时是A耗时时间B耗时时间而改为A—mq----B后A发送mq后立刻返回不需要等待BA与B之间从同步改为了异步当B是个外部服务且比较耗时时可考虑。实践中如果消息消费依赖事务提交可使用TransactionSynchronizationManager确保提交事务先于消费消息。
TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronization() {Overridepublic void afterCommit() {//发送qm}});解耦
还是上边的例子A服务中硬编码调用B服务如果还有其他C服务、D服务等都要硬编码代码耦合。使用mq后A只管发送mq其他消费者订阅就可以了A不需要知道B、C、D的存在如果后边再加入E、FA服务也不需要改代码。比如订单支付后要更改积分、更改库存、更改物流状态那么就可以使用消息的发布-订阅模式达到解耦。
削峰填谷
大体看了下常见的mq实现rabbitmq、kafak、rocketmq至少支持1w/s的tps但数据库就没有这么大的处理能力了还是下单流程订单数据可以先存到mq中立刻返回可以慢慢消费消息落到数据库。
mq的缺点
mq引入后会有以下缺点。
新引入了中间件增加了运维负担。生产者确保消费发送到mq servermq server确保消费者收到消费者重复消费。
MQ常见的几种模式
发布/订阅同一个topic下的消息会被所有的订阅者消费点对点消息只会被一个消费者消费。
市面上常见mq对比
kafka、rabbitmq、rocketmq
kafka会将数据写入磁盘缓存所以存在丢失的情况常用于日志因为日志丢失一些也不会产生错误。rabbitmq支持AMQP协议、JMS每秒几万支持消息确认、rocketmq阿里出品的企业级mq中间价经历了双11等电商大促JMS每秒十几万想要的功能基本都支持具体可参考Why choose RocketMQ