阿里云消息中间件(MQ)探秘

阿里云消息中间件(MQ)探秘,第1张

阅读字数: 2513 | 5分钟阅读

获取嘉宾演讲视频及PPT ,请点击: http://t.cn/RDVY4JN

阿里巴巴中间技术专家不铭从功能特性、技术架构、最佳实践、案例分析四个方面进行了《Aliware-MQ消息队列》的分享。

Aliware-MQ是阿里云提供的企业级互联网架构的核心产品,基于高可用分布式集群技术,支持海量高并发和万亿级消息流转,支持海量的消息堆积,支持高可靠/高可用方案,提供了运维、监控等一系列完整的配套服务。

如上图所示,从消息的维度来看分为普通消息、顺序消息、定时消息和事务消息等四种消息,无论是发送哪种消息客户端都支持熔断机制,即如果发现发送目标节点有性能问题,客户端会自动进行熔断,把有问题的节点排出去,保证消息发往可靠性最高的机器。管理方面已经支持消息的查询、消息回溯、消息全链路轨迹和监控报警机制。性能上MQ已经达到了百亿级的堆积能力,毫秒级的投递延迟,支持万级节点高并发,集群水平热扩缩。消息消费方面,支持失败后的消息重投机制,失败的消息会重新投递到队列中去,现在最多支持16次重投。

上图是Aliware-MQ的功能架构。左边是控制台的管理,可以在上面做发布订阅管理。右边目前的接入方式是SDK支持TCP协议,同时也支持HTTP接口,以及面向手机终端的MQTT协议。

OpenAPI是MQ提供给用户的管控方式,用于实现一系列资源管理和运维功能,用户可以通过Open API查询所需要的任何东西。

上图中是我们今年推出的一个MQ移动物联网套件。之前的客户端,不管是上游还是下游收发都是用各自的服务器。但是今年我们有了移动物联网套件,可以直接面向终端设备。比如手机、汽车等移动设备利用移动物联网套件,通过一个网关就可以直接和消息系统打通。

Aliware-MQ的消息系统是基于队列。队列要保证数据安全,是支持高并发和高性能读写的最基本元素。

如上图所示,Producer是消息发送集群,下游的Consumer是消费者集群,都依赖于MQ的SDK。Broker是消息服务器,所有的消息都发送到Broker上面;Name Server和ZK功能类似,用来做服务发现。Producer要从Name Server获取到Topic在哪个节点上,订阅Topic时需要知道Topic从哪里取,同样需要Name Server。Broker上的Topic信息会定时在Name Server上注册,Producer和Consumer在交互之前会从Name Server上获取目标。

图中的master是主机,slave是备机,主备之间会做数据同步,有异步和同步两种方式。一个master可以布多个节点,这个根据自己的成本来决定。如果扩容的话,只要直接布一台master即可,它会定时地将Topic注册到Name Server上,发送方和订阅方也会定时地感知这个过程,整个扩容的过程对于用户来说大概30秒就能完成。

Aliware-MQ所有数据存储在Commit Log里,它在实现上就相当于一个文件夹,每次会生成一个1G的文件。不管哪个Topic写过来的消息都会直接写入这个文件中,这个文件写满后再直接写下一个。

针对每一个Topic,要在业务层面对它进行区分,所以我们做了一层索引。例如在上图中有5个队列,每个队列都会生成定长的索引文件,通过索引,可以找到这条消息当前处于哪个CommitLog文件的某个具体位置中。

这样存储结构,保证了无论多少个topic,CommitLog的写是顺序的,能较大的保证MQ的写入性能。

Aliware-MQ的负载均衡是按照队列维度来做的,消费的时候会把topic的队列平均分配给消费实例。比如有2个消费实例,topic队列是4个,那么每个消费实例就消费2个;而如果共有5个队列,那么就是是1个消费2个,另1个消费3个。一个队列同一时间只会被一个消费实例消费,所以当出现队列数量小于消费实例数量的情况时,就会有消费实例出现空闲,这个时候可以根据业务实际情况手动通过工具将队列数量调大。

消息写进来都是先放在Java堆里,然后再落盘。如果用户要消费的消息都在内存里,那么就可以很快的读取到。但是如果用户消息堆积比较久,消息已经不在内存里而是存储在了磁盘中,这个时候就需要去磁盘里取数据,然后加载到内存里面读取出来。

Aliware-MQ的刷盘策略有异步和同步两种。异步到内存就返回成功,同步写则一定是消息刷到磁盘中才会返回成功。这种刷盘方式可以根据业务的具体需求进行配置,从写入的性能来看,异步写的性能肯定是会比同步的好。

从发消息的角度来看,如果发送失败,会有补偿机制。MQ的客户端会做三次重发,一台机器发送失败之后会默认往另外两台机器再尝试,如果三次都失败了才会把最终的失败结果传回,这个时候用户需要自己对发送异常进行相关处理。

有幂等要求的业务,Consumer在使用的时候需要自己做去重操作,在一些场景下,如客户端本地等待超时等,是无法保证消息完全不重复的,因此用户在进行系统设计时需要考虑到这一点。

Aliware-MQ目前支持的消息最大是4M,消息越小,性能越高。定时消息是支持消息的定时投递,可以自行设置要投递的时间,最长是40天。事务消息通过两阶段的提交的方式,来解决分布式事务问题。顺序消息可以采用全局顺序、分区顺序,严格保证消息的顺序。

Aliware-MQ的使用场景主要有系统间异步解耦、分布式事务、异构数据复制与分发、双十一大促的削峰填谷、大规模机器的Cache同步、日志服务和IM实时通信以及实时计算分析。

MQ顺序消息分为全局有序和队列有序。全局有序是从指所有消息发出开始,下游的接收方都是按照顺序接收;队列有序则是将消息进行区块分区,同一个分区内的消息按照先入先出的顺序进行顺序消费,保证一个队列只会被一个进程消费。

当一个交易系统下单之后,会发一条消息到MQ,购物车接收消息把购物车里的状态清空。如果这时交易消息发送失败,购物车就无法清空,对于数据来说这就是一个脏数据。面对这种情况我们有事务消息可以解决这个问题,在交易开始时先发送一条半事务消息,然后交易系统开始下单,所有事情做完之后再提交半事务,这时只有主动提交成功,消息队列才会将这条消息实际发送给用户。如果交易下单过程失败,则可以主动回滚这条消息,购物车和交易系统之间可以做到没有脏数据。

双十一大促时,各个分会场会有玲琅满目的商品,每件商品的价格都会实时变化。使用缓存技术也无法满足对商品价格的访问需求,缓存服务器网卡跑满。访问较多次商品价格查询影响会场页面的打开速度。于是MQ提供了一种广播机制,本来一条消息只会被集群的一台机器消费。如果使用广播模式,那么这条消息会被集群下的所有节点消费一次,相当于把价格信息同步到需要的每台机器上,可以取代缓存的作用。

实时计算功能主要是做一个消息总线,业务系统自动采集数据,把消息分发达下游的实时计算系统里,根据实时计算结果来给业务方做服务。

我今天的分享就到这里,谢谢大家!

收件服务器:默认为imap,可自主选择imap或者pop3收信,对应服务器分别为imap.aliyun.com \  pop3.aliyun.com

完整的邮箱账号:test@aliyun.com

发件服务器:smtp.aliyun.com

完整的邮箱账号:test@aliyun.com

阿里云详解

简介

阿里云计算(全称阿里云计算有限公司,简称阿里云),是一家提供云计算服务的科技公司,创立于2009年9月,为阿里巴巴集团全资所有。阿里云计算公司总部位于杭州,在北京和硅谷设有机构,研发和运营涉及云计算的产品与服务,并基于Android系统开发了名为“阿里云OS”的智能手机操作系统。

阿里云服务器

阿里云服务器(Elastic Compute Service, ECS)是一种处理能力可弹性伸缩的计算服务,其管理方式比物理服务器更简单高效。 阿里云服务器帮助您快速构建更稳定、安全的应用,降低开发运维的难度和整体IT成本,使您能够更专注于核心业务创新。

相对优势

安全稳定,数据可靠

数据安全:采用大规模分布式计算系统,每份数据多个副本;单份损坏可以在短时间内快速恢复,保证数据安全。

网络安全:安全组之间采用防火墙隔离;可杜绝ARP攻击和MAC欺骗;有效防护DDoS攻击,可进行端口入侵扫描,挂马扫描,漏洞扫描等。

系统稳定:可用性高达99.9%,支持云服务器故障自动迁移,恢复速度快,云服务器信息不变 (IP信息,磁盘等)。

性能卓越,弹性伸缩

采用绿色节能多线路机房:中国电信、联通、教育网等多线接入,保证全国用户高速访问。

多线路独享带宽:千兆光纤,业内最低价扩容带宽,独享带宽有效解决带宽瓶颈,性价比远高于传统带宽共享。

灵活扩容:计算资源可弹性伸缩;可以按需变更服务器的配置。云服务器支持套餐升级、带宽灵活按天升级(无需停机)等,随时满足您的业务发展需求。

节约成本,简单易用

成本节约:支持多种主流操作系统,让您以服务的方式使用计算及存储资源,按需取用,按需付费,无需购买大量设备,相比于传统主机投入成本降低30%-80%。

完整管理权限:云服务器从创建到启动只需数分钟,您拥有超级管理员权限,轻松部署各种互联网应用。通过Web管理方式对云服务器进行停机、启动、重启、重置和修改密 码等操作。

按需购买:云服务器配置按需购买,灵活满足不断变化的应用需求。建议搭配RDS使用,内网流量免费。

资料参考:阿里云服务器ECS介绍   吴小松    引用日期:2017.12.28


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/331441.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-03
下一篇2023-05-03

发表评论

登录后才能评论

评论列表(0条)

    保存