activeMQ的应用场景

MQ的学习

目前流行的就是:activemq、ZeroMQ、RabbitMQ、kafka、rocketmq,学习RabbitMQ就可以了,这个就很强大。

rabbitMQ的优点(适用范围)

     1. 基于erlang语言开发具有高可用高并发的优点,适合集群服务器。

    2. 健壮、稳定、易用、跨平台、支持多种语言、文档齐全。

    3. 有消息确认机制和持久化机制,可靠性高。

    4. 开源

其他MQ的优势:

    1. Apache ActiveMQ曝光率最高,但是可能会丢消息。

    2. ZeroMQ延迟很低、支持灵活拓扑,但是不支持消息持久化和崩溃恢复。

1.   消息队列概述:

       消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题。实现高性能,高可用,可伸缩和最终一致性架构

      把消息按照产生的次序加入队列,而由另外的处理程序/模块将其从队列中取出,并加以处理;从而形成了一个基本的消息队列。使用消息队列可以很好地将任务以异步的方式进行处理,或者进行数据传送和存储等。例如,当你频繁地向数据库中插入数据、频繁地向搜索引擎提交数据,就可采取消息队列来异步插入。另外,还可以将较慢/较复杂的处理逻辑、有并发数量限制的处理逻辑,通过消息队列放在后台处理

扫描二维码关注公众号,回复: 2500344 查看本文章

2.   常规的使用景::http://www.cnblogs.com/HigginCui/p/6478613.html#undefined

      ①.异步处理:用户注册后,需要发注册邮件和注册短信。传统的做法有两种 1.串行的方式;2.并行方式(一般是先发短信再发邮件,但是这里可以同时发)

     ②.应用解耦:在下单(下单和库存)时库存系统不能正常使用。也不影响正常下单,因为下单后,订单系统写入消息队列就不再关心其他的后续操作了。实现订单系统与库存系统的应用解耦

     ③.流量削锋:秒杀活动,一般会因为流量过大,导致流量暴增,应用挂掉。为解决这个问题,一般需要在应用前端加入消息队列。a、可以控制活动的人数。b、可以缓解短时间内高流量压垮应用

     ④.日志处理:日志处理是指将消息队列用在日志处理中,日志采集客户端,负责日志数据采集,定时写受写入Kafka队列

     ⑤.JMS消息服务:JMS(Java Message Service,Java消息服务)API是一个消息服务的标准/规范,允许应用程序组件基于JavaEE平台创建、发送、接收和读取消息。它使分布式通信耦合度更低,消息服务更加可靠以及异步性。

3.   消息队列MQ的特性:

      异步/顺序读写/高性能/协议简单。异步消息机制保证正确发送,不保证及时发送,短信就是这样 

4.   消息队列MQ的好处:(https://www.oschina.net/translate/top-10-uses-for-message-queue)

       ①  .解耦:消息队列在处理过程中间插入了一个隐含的、基于数据的接口层,两边的处理过程都要实现这一接口。这允许你独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束。

      ②  冗余:消息队列把数据进行持久化直到它们已经被完全处理,通过这一方式规避了数据丢失风险

      ③  扩展性:因为消息队列解耦了你的处理过程,所以增大消息入队和处理的频率是很容易的;只要另外增加处理过程即可。不需要改变代码、不需要调节参数。扩展就像调大电力按钮一样简单。

      ④  灵活性 & 峰值处理能力:使用消息队列能够使关键组件顶住增长的访问压力,而不是因为超出负荷的请求而完全崩溃。访问量一下剧增的时候,也可以处理。

      ⑤  可恢复行:当体系的一部分组件失效,不会影响到整个系统。消息队列降低了进程间的耦合度,所以即使一个处理消息的进程挂掉,加入队列中的消息仍然可以在系统恢复后被处理。

      ⑥  送达保证:消息队列提供的冗余机制保证了消息能被实际的处理,只要一个进程读取了该队列即可

      ⑦  排序保证:消息队列本来就是排序的,并且能保证数据会按照特定的顺序来处理。FIFO(先进先出)的顺序来处理,因此消息在队列中的位置就是从队列中检索他们的位置。

      ⑧  异步通信:很多时候,你不想也不需要立即处理消息。消息队列提供了异步处理机制,允许你把一个消息放入队列,但并不立即处理它。你想向队列中放入多少消息就放多少,然后在你乐意的时候再去处理它们。

5.   ACtiveMQ主要解决什么问题:

在项目中,将一些无需即时返回且耗时的操作提取出来,进行了异步处理,而这种异步处理的方式大大的节省了服务器的请求响应时间,从而提高了系统的吞吐量。


原文地址:http://blog.csdn.net/dly1580854879/article/details/68486367

猜你喜欢

转载自blog.csdn.net/romantic_pk/article/details/76572579