编辑: 霜天盈月祭 2016-05-16

但这种模式存在巨大风险: 订单系统与库存系统强耦合,假如库存系统无法访问(升级、业务变更、故障等),则订单减库存将失败,从而 导致订单失败;

传统的解决方案是服务间通过订单系统与库存系建立socket连接,但是如果库存系统的ip/端口变更、增加库存系 统的接收者,都需要订单系统进行修改;

短时间内大量的请求,对库存系统的SQL,频繁查询库存,修改库存,库存系统负载极大;

用户的感受:订单失败,重试,依然失败,导致顾客流失. 引入CMQ后的方案如下图: 其中几个系统分别工作,解除强耦合性: 订单系统:用户下单后,订单系统完成持久化处理,将消息写入消息队列,返回用户订单下单成功.此时客户可 以认为手机已经买到了.CMQ 提供异步的通信协议,消息的发送者将消息发送到消息队列后可以立即返回,不用 系统解耦 最近更新时间:2017-04-25 11:43:30 产品简介 产品文档 版权所有:腾讯云计算(北京)有限责任公司 第11 共21页 等待接收者的响应.消息会被保存在队列中,直到被接收者取出. 库存系统:从CMQ 获取下单信息,库存系统根据下单信息进行库存操作. 这样,哪怕用户在下单时库存系统宕机,也不影响正常下单(库存系统修复后再从CMQ中取出订单进行操作).订 单系统写入腾讯云CMQ消息队列后,就无需再关心其他后续操作了.实现订单系统与库存系统的应用解耦. 像电商这样需要保证消息被可靠传递的业务,即使发送消息(订单系统)时,接收者(库存系统)由于断电、宕机 或CPU 负载过高等原因不可用,消息也可以在接收者恢复可用时被送达.腾讯云 CMQ 的分布式消息队列存储保证 了消息的持久化保存,直到接收者成功获取它,而不用担心某些消息队列方案存储在单机内存中而导致的数据丢 失. 产品简介 产品文档 版权所有:腾讯云计算(北京)有限责任公司 第12 共21页 某电商网站新手机发布在即,拥有预约码的用户可优先购买手机.预约方式为:注册账户即可获得预约码,预计预 约用户超过1000万. 像双11秒杀、手机预约抢购等对 IO 时延敏感业务环境下,当外部请求超过系统处理能力时,如果系统没有做相应保 护,可能由于历史累计的超时请求负荷过多而导致系统处理的每个请求都因超时而无效,系统对外呈现的服务能力 为0,且这种情况下服务不能自动恢复. 这种情形下,引入腾讯云消息中间件 CMQ,将非即时处理的业务逻辑进行异步化.比如服务接收请求、处理请求和 返回请求三个不同的业务逻辑. 引入 CMQ 后,当预约活动开始时,海量并发访问汹涌袭来: 所有客户的预约申请,页面均立即返回成功.客户便可关闭网页进行其他活动.预约码稍后推送到客户的邮箱/手机;

超过千万级别的注册、预约申请,先暂存在腾讯云 CMQ 消息队列集群;

后端服务进行处理,按照数据库实际的select、insert、update能力处理注册、预约申请;

削峰填谷 最近更新时间:2017-04-25 11:44:17 产品简介 产品文档 版权所有:腾讯云计算(北京)有限责任公司 第13 共21页 处理成功后返回结果给用户.预约结束后,用户大约在5-30min内,都收到了预约码. 产品简介 产品文档 版权所有:腾讯云计算(北京)有限责任公司 第14 共21页 继续上文使用电商的例子.假设客户下单购买了一台新手机,关联的子系统有以下系列动作: 付款确认后,赠送会员成长值 赠品系统同步给客户发送赠品 优惠券系统在订单完成三个月后发送折扣券至用户 客户ERP系统记录客户购买行为进行分析 可以发现这些任务都是独立的,互相之间没有依赖关系,即不需等待其他模块的结果就可独立执行.引入腾讯云 CMQ,能带来以下价值: CMQ保证了消息被可靠传递:即使发送消息时,接收者由于断电、宕机或 CPU 负载过高等原因不可用,CMQ系 统也保证消息在接收者可用时被送达.CMQ的分布式消息队列,消息会被持久化保存,直到接收者成功获取它;

下载(注:源文件不在本站服务器,都将跳转到源网站下载)
备用下载
发帖评论
相关话题
发布一个新话题