阿里P8架构师谈:消息中间件介绍、典型使用场景、以及使用原则

大型分布式架构里必定会涉及到消息中间件,今天先谈谈消息中间件。前端

经常使用的消息队列有ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ。sql

1、kafka

一、不彻底符合jms规范,注重吞吐量,相似udp 和 tcp服务器

二、通常作大数据吞吐的管道 咱们如今的用途就是负责在各个idc之间通讯架构

三、量大对数据不是百分之百保证的,会有数据丢失,不是百分百送达(amq和rmq等有重发机制,而kafka没有);在吞吐量有提高 ,在这方面就得有牺牲, 因此kafka适合大数据量流转, 好比日志数据 好比用做统计的数据。并发

2、activeMQ

ActiveMQ居于二者之间,相似于ZemoMQ,它能够部署于代理模式和P2P模式。相似于RabbitMQ,它易于实现高级场景,并且只需付出低消耗。它被誉为消息中间件的“瑞士军刀”。异步

三:RocketMQ(阿里官方指定消息中间件)

RocketMQ 是一款开源的分布式消息系统,基于高可用分布式集群技术,提供低延时的、高可靠的消息发布与订阅服务。同时,普遍应用于多个领域,包括异步通讯解耦、企业解决方案、金融支付、电信、电子商务、快递物流、广告营销、社交、即时通讯、移动应用、手游、视频、物联网、车联网等。tcp

消息中间件使用的典型场景优四个分布式

1.典型的异步处理高并发

2.应用解耦性能

3.流量削锋

4.消息通信四个场景

好比:今日头条的私信就是一个典型的消息通信场景,由于消息通信的数据不须要即便当即同步回来,不算是核心数据,能够延时经过异步的消息发送,这样能够下降系统的负荷。

因此,咱们在架构设计的时候,有一个原则就是:消息原则上都是异步消息发送,除非涉及到交易的状况才考虑数据即便同步,不然能异步的都采用异步消息设计。

再好比:流量削锋的典型场景就有阿里的双11秒杀、团购抢购活动等。

应用场景:秒杀活动,通常会由于流量过大,致使流量暴增,应用挂掉。为解决这个问题,通常须要在应用前端加入消息队列。

a、能够控制活动的人数

b、能够缓解短期内高流量压垮应用

用户的请求,服务器接收后,首先写入消息队列。假如消息队列长度超过最大数量,则直接抛弃用户请求或跳转到错误页面。

秒杀业务根据消息队列中的请求信息,再作后续处理。

架构设计之中间件总结:

1.消息中间件的四个典型场景:典型的异步处理、应用解耦、流量削锋、消息通信四个场景。

2.能异步就不要同步:能异步的消息原则都尽可能采用异步的方式。

3.若是消息性能要求高,用rocketMQ与kafka能够更优,rocketMQ与kafka 比较就看技术选型了,各有利弊,看业务须要。

4.实现语言来看,RabbitMQ(阿里官方指定消息中间件)最高,缘由是它的实现语言是天生具有高并发高可用的erlang语言。综合来看,RabbitMQ是首选。

5.典型的秒杀活动、抢购、消息通信、邮件发送、电话短信等都是典型的采用消息中间件的业务场景。

欢迎工做一到五年的Java工程师朋友们加入Java架构开发:760940986
群内提供免费的Java架构学习资料(里面有高可用、高并发、高性能及分布式、Jvm性能调优、Spring源码,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多个知识点的架构资料)合理利用本身每一分每一秒的时间来学习提高本身,不要再用"没有时间“来掩饰本身思想上的懒惰!趁年轻,使劲拼,给将来的本身一个交代!

转载:https://my.oschina.net/u/3906190/blog/2120665

相关文章
相关标签/搜索