贵安新区建设管理信息网站,网站建设公司科技寡头正在垄断世界,南昌房产网官方网站,linux 安装 wordpress1、异步处理
假设想象一下我们做一个商城项目#xff0c;在用户支付模块中#xff0c;可能会涉及到其它业务#xff0c;比如#xff1a;积分折扣、消费券、短信验证等功能。我们传统的执行步骤是逐步执行#xff0c;也就是说当用户点击支付 ---- 积分折扣 ---- 消…1、异步处理
假设想象一下我们做一个商城项目在用户支付模块中可能会涉及到其它业务比如积分折扣、消费券、短信验证等功能。我们传统的执行步骤是逐步执行也就是说当用户点击支付 ---- 积分折扣 ---- 消费券 ---- 短信验证 -----支付完成用户需要等待每个业务执行完毕才能支付成功假设我们从点击支付 ----- 支付成功消耗时间为100/ms后面我们每新增一个业务就会多耗时50/ms上述的流程大概会耗时250/ms如果说以后业务更多的话那么用户支付订单的时间会越来越长这样大大影响了用户的体验参照下图理解 我们使用消息中间件进行异步处理当用户下单支付同时我们创建消息队列进行异步的处理其它业务在我们支付模块中最重要的是用户支付我们可以将一些不重要的业务放入消息队列执行这样可以大大添加我们程序运行的速度用户支付模块中也大大减少了支付时间为用户添加了更好的体验。其它模块与其思想一致就比如说用户注册
2、流量消峰
假设我们有一个订单系统我们的订单系统最大承受访问量是每秒1万次如果说某天访问量过大我们的系统承受不住了会对服务器造成宕机这样的话我们的系统就瘫痪了为了解决该问题我们可以使用中间件对流量进行消峰
未加入中间件之前用户直接访问的是订单系统 加入中间件之后用户直接访问的是中间件通过中间件对用户进行消峰好处是可以避免系统的宕机瘫痪坏处是系统速度变慢但是总比不能使用好 3、应用解耦
我们以商城项目为例订单系统耦合调用支付、库存、物流系统如果某天其中一个系统出现了异常就会造成订单系统故障使用中间件后订单系统通过队列去访问支付、库存、物流系统就不会造成上述的问题因为订单系统执行完成才会发消息给队列接下来的任务就交给队列完成队列会监督各个系统完成如果完不成队列会一直监督直到完成为止所以说使用中间件后不会造成一个子系统出现故障而造成整个系统故障