站群管理系统cms,河南郑州最新情况,文件传输协议登录网站,网站建设管理维护责任书一、ActiveMQ简介 ActiveMQ是Apache出品#xff0c;最流行的#xff0c;能力强劲的开源消息总线。ActiveMQ是一个完全支持JMS1.1和J2EE1.4规范的JMS Provide实现。尽管JMS规范出台已经是很久的事情了#xff0c;但是JMS在当今的J2EE应用中仍然扮演这特殊的地位。 二、Active…一、ActiveMQ简介 ActiveMQ是Apache出品最流行的能力强劲的开源消息总线。ActiveMQ是一个完全支持JMS1.1和J2EE1.4规范的JMS Provide实现。尽管JMS规范出台已经是很久的事情了但是JMS在当今的J2EE应用中仍然扮演这特殊的地位。 二、ActiveMQ应用场景 消息队列在大型电子商务类网站如京东、淘宝、去哪儿等网站有这深入的应用。 队列的主要作用消除高并发访问高峰加快网站的响应速度。 在不使用消息队列的情况下用户的请求数据直接写入数据库在高并发的情况下对数据库造成巨大的压力同时也使系统响应延迟加剧 早使用队列后用户的请求发给队列后立即返回 例如当然不能直接给客户提示订单提交成功在淘宝上提示您提交了订单请等等系统确认 再由消息队列的消费者进程从消息队列中获取数据库异步写入数据库。 由于消息队列的服务处理速度远快于数据库因此用户的响应延迟可能得到有效改善。 流程图解如下图 三、消息队列说明 消息队列中间是分布式系统中重要的组件主要解决应用耦合、异步消息、流量消峰等问题 实现高性能高可用可伸缩和最终一致性架构是大型分布式系统不可缺少的中间件。 目前在生产环境使用较多的消息队列ActiveMQ、RabbitMQ、Kafka、ZeroMQ、MetaMQ、RocketMQ等。 四、消息队列应用场景
1异步处理
场景说明用户注册后需要发注册邮件和注册短信。传统的做法有两种方式串行方式、并行方式 1串行方式将注册信息写入数据库成功后发生注册邮件再发生注册短信。以上三个任务完成后返回给客户端。 2并行方式将注册信息写入数据库成功后发生注册邮件的同时发生注册短信以上三个任务完成后返回给客户端与串行的差别是并行的方式可以提高处理时间 假设三个业务节点每个使用50ms不考虑网络等其他开销则串行方式的耗时是150ms并行的耗时是100ms 因为CPU在单位时间内处理的请求数是一定的假设CPU 1秒内吞吐量是100次则串行方式1秒内CPU可以处理的请求量是7次1000/150;并行方式可处理请求量是10次1000/100; 综上所述传统的方式系统的性能并发量、吞吐量、响应时间会有瓶颈。如何解决这个问题 引入消息队列将不是必须的业务逻辑异步处理改造后的架构如下图 安装上述约定用户的响应时间相当于是注册信息写入数据库的时间也是就是50ms. 注册邮件发短信写入消息队列后直接放回因此写入消息队列的速度很快基本可以忽略。 采用消息队列后用户的响应数据可能就是50ms。所以基于此架构系统的吞吐量提高到每秒20QPS比串行提高了3倍比并行提高了2倍。 2应用解耦
场景说明用户下单后订单系统需要通知库存系统。传统的做法订单系统调用库存系统接口。如下图 传统模式的缺点 1.假如库存系统无法访问则订单减库存将失败从而导致订单失败 2.订单系统与库存系统耦合 如何解决以上问题引入应用消息队列后的方案如下图 1.订单系统用户下单后订单系统完成持久化处理将消息写入消息队列返回用户订单下单成功请等等物流配送。 2.库存系统订阅下单的消息采用拉/推的方式获取下单信息库存系统根据下单信息进行库存操作。 3.假如在下单时库存系统不能正常使用也不影响正常下单。因为下单后订单系统写入消息队列就不再关系其他的后续操作了实现订单系统与库存系统的应用解耦。 3流量消峰
流量消峰也是消息队列中的常用场景一般在秒数或者团抢活动中使用广泛。 应用场景秒数活动一般因为流量过大导致流量暴增应用容易挂掉。为解决这个问题一般需要在应用前端假如消息队列。 1可以控制活动人数。 2可以缓解短时间内高流量压垮应用 引入消息队列 1.用户的请求服务器接收后首先写入消息队列。假如消息队列长度超过最大数量则直接抛弃用户请求或者跳转到错误页面 2.秒杀业务根据消息队列的请求信息再做后续处理 4消息通讯 消息通讯是指消息队列一般都内置了高效的通讯机制因此也可以用在纯的消息通讯。比如实现点对点的消息队列或者聊天室等。 1点对点通讯 客户端A和客户端B使用同一队列进行消息通讯。 2聊天室通讯发布订阅 客户端A、客户端B、客户端N订阅同一主题进行消息发布和接收实现类是聊天室效果。