消息队列的用途:
主要解决应用解耦、异步消息、流量削锋等问题,实现高性能、高可用、可伸缩和最终一致性架构。
消息队列的常见类型
1、Kafka:由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写,是一种高吞吐量的分布式发布订阅消息系统,支持单机每秒百万并发。
2、RocketMQ:阿里开源的消息中间件,是一款低延迟、高可靠、可伸缩、易于使用的消息中间件。
3、RabbitMQ:由Erlang(有着和原生Socket一样低的延迟)语言开发基于AMQP协议的开源消息队列系统,能保证消息的可靠性、稳定性、安全性。
消息队列应用场景
1、应用解耦。消息队列可以使消费者和生产者直接互不干涉、互不影响,只需要把消息发送到队列即可,而且可独立的扩展或修改两边的处理过程。常见场景:用户下单后,订单系统需要通知库存系统。
2、流量削锋。当客户端访问量突然剧增,对服务器的访问已经超过服务所能处理的最大峰值,甚至导致服务器超时负载崩溃,使用消息队列可以解决这个问题,可以通过控制消费者的处理速度和生产者可进入消息队列的数量等来避免峰值问题。常见场景:秒杀活动,一般会因为流量过大导致流量暴增,应用挂掉。
3、异步通信。消息队列提供了异步处理机制,可以把消息放在队列中并不立即处理,需要的时候处理,或者异步慢慢处理,一些不重要的发送短信和邮箱功能可以使用。常见场景:用户注册后需要发注册邮件和注册短信。
4、排序保证。消息队列可以控制数据处理的顺序,因为消息队列本身使用的是队列这个数据结构,FIFO(先进选出),在一些场景数据处理的顺序很重要,比如商品下单顺序等。
Java是当前互联网行业应用最广泛的编程语言,人才需求大、薪资福利好,如果你想快速入行Java,可以选择专业的学习,现在正是好时机。