rocketmq是什么(rocketmq是什么语言写的)

作者:红玫瑰々  更新 :2023-03-09 09:59:30   阿里巴巴  微服务  Apache  

最佳答案RocketMQ是阿里巴巴开源的一款高性能、高吞吐量的分布式消息中间件,已经捐赠给Apache基金会。

RocketMQ 是阿里巴巴 2012 年开源分布式新闻中间件已捐赠给年开源分布式新闻中间件 Apache 基金会,并入 2022 年 11 月变成 Apache 孵化项目。

rocketmq是什么(rocketmq是什么语言写的)

中间件是一种连接软件组件和应用的计算机技术,包括一组服务。以便通过网络在一个或多个设备上运行的多个软件进行交互。中间件技术提供了相互操作,促进了分布式系统架构的演变,通常用于应用和简化这些复杂的分布式应用程序,包括 web 服务器、事务监控和消息队列软件。

中间件(middleware)它是一个主要的基础软件类别,属于可重用软件的范围。顾名思义,中间件位于操作系统软件和用户的应用软件之间。中间件在操作系统、网络和数据库之上,应用软件的下层,总体作用是为上层应用软件提供操作和开发环境,帮助人们轻松有效地开发和集成复杂的应用软件。

中间件是平台(硬件和操作系统)与应用程序之间的通用服务,具有标准的程序接口和协议。对于不同的操作系统和硬件平台,中间件可以满足各种接口和协议规范。

RocketMQ 它是一个分布式消息中间件。所以,RocketMQ 关键是解决哪些问题?

(1)Publish/Subscribe

公布和定阅是消息中间件最基本的功能,也是与传统相比的 RPC 通讯来讲。

(2)Message Priority

规范中描述的优先事项是指在消息队列中,每个信息都有不同的优先事项。一般来说,优先事项是用整数表示的。如果信息完全在内存序列中,则可以在交付前按优先级排序,使优先事项先交付。

因为 RocketMQ 所有的信息都是持久的,所以如果按优先级排列,成本会很大,所以成本会很大,所以 RocketMQ 信息优先没有特别适用,但类似的效果可以通过灵活的方式实现,即独立配备优先顺序和普通优先顺序, 将不同的优先级发送到不同的序列。

(3)Message Order

有序的信息是指一种信息购物,可以按照推送顺序消费。例如:一个订单形成了 3 信息是订单建立、订单支付和订单完成。购物时,按照这个顺序消费是有意义的。但同时,订单可以并行消费。

RocketMQ 能严格保证信息有序。

(4)Message Filter

①Broker 端信息过虑

在 Broker 中,依照 Consumer 过度考虑的要求,优点是减少了针对性 Consumer 无用信息的数据传输。缺点是增强了数据传输。 Broker 压力,完成比较复杂。

②Consumer 端信息过虑

这种过度考虑的方法可以通过使用完全自定义来完成,但缺点是很多无用的信息需要传输到 Consumer 端。

(5)Message Persistence

消息中间件一般采用几种持久方法:

①持久化到数据库,比如 Mysql。

②持久化到 KV 存放,比如 levelDB、伯克利 DB 等 KV 存储系统。

③持久的文档记录方式,如 Kafka,RocketMQ

④对内存数据进行持久镜像,如 beanstalkd,VisiNotify

⑤前三种持久化方法都有内存序列 Buffer 扩展能力,第四种方法只是内存镜像,效果是当 Broker 重启后仍可修复以前内存的数据。

RocketMQ 充分利用 Linux 文件系统内存 cache 提高性能。

(6)Message Reliablity

影响信息可靠性的几种情况:

①Broker 正常关掉;

②Broker 异常 Crash;

③OS Crash;

④设备断电,但能立即恢复供电状况。

⑤设备无法启动(可能是因为设备无法启动 cpu、主板、内存等主要设备损坏)

⑥硬盘设备损坏。

前四种情况属于硬件平台可立即恢复状态,RocketMQ 在这四个前提下,可以保证信息不丢失,或者丢失少量数据(刷盘是同步还是异步)。

后两种情况属于单点故障,无法修复,一旦发生,此点上的信息全部丢失。RocketMQ 在这两种情况下,根据异步复制,可以保证 99%的消息没有丢失,但仍有少量的消息可能丢失。根据同步双写技术,可以避免点击。同步双写肯定会影响特性,适合对信息稳定性要求很高的地方,比如 Money 相关应用。

RocketMQ 从 3.0 版本开始适用于同步双写。

(7)Low Latency Messaging

在信息不沉积的前提下,信息到达 Broker 之后,可以马上到达 Consumer。RocketMQ 应用长轮询 Pull 方法可以保证信息非常即时,信息的实用性不少于 Push。

(8)At least Once

这意味着每个信息必须发送一次。RocketMQ Consumer 先 pull 消息到当地,消费结束后,才回到服务器 ack,如果没有消费,就不会有 ack 信息,因此 RocketMQ 能很好地适用这一特点。

(9)Exactly Only Once

①在发送信息的阶段,不能推送重复的信息。

②在消费信息阶段,不能重复消费信息。

只有在满足上述两个标准的前提下,我们才能认为消息是“”Exactly Only Once要实现以上两点,在分布式架构条件下,难免会产生巨大的成本。因此 RocketMQ 为了追求高性能,并不能保证这一特点,规定在业务上进行去重,换句话说,消费信息要做到幂等性。RocketMQ 虽然不能严格保证不重复,但通常很少有反复推送、消费,只有网络异常,Consumer 在起停等异常情况下,会有反复的信息。

(10)Broker 的 Buffer 难题

Broker 的 Buffer 一般是指 Broker 一个序列的内存 Buffer 尺寸,这种 Buffer 一般尺寸有限。

此外,RocketMQ 没有内存 Buffer 概念,RocketMQ 序列为持久硬盘,定期清除数据。RocketMQ 同其他 MQ 有非常显著的差异,RocketMQ 的内存 Buffer 抽象成一个无尽长度的序列,无论有多少数据可以放下,这个无尽是有前提的,Broker 定期删除过期数据,如 Broker 只储存 3 每天的信息,那么这个 Buffer 尽管长短无尽,可是 3 前几天的数据可以从队尾删除。

(11)回复消费

回朔消费是指 Consumer 已经消费成功的消息,因为业务需要重新消费,要适用这个功能,Broker 在向 Consumer 成功发送信息后,信息仍需保存。而且再消费一般是按照时间维度进行的,比如因为 Consumer 系统异常,恢复后需要重新消费 1 小时前的数据,那么 Broker 为了提供一个系统,可以根据时间维度来回退消费进度。

RocketMQ 适用于按时间追溯消费,时间维度准确到ms,可以向前回复,也可以向后回复。

(12)信息积累

消息中间件的主要功能是异步解耦,另一个关键功能是阻挡前端数据洪峰,确保后端系统的稳定性,这就要求消息中间件具有一定的消息积累能力。消息积分有以下两种情况:

①内存中积累了新闻 Buffer,一旦超过内存 Buffer,可以根据一定的丢失对策丢失信息,比如 CORBA Notification 规范中的描述。适合能够容忍丢失信息的项目。在这种情况下,消息沉积的能力主要在于内存 Buffer 在大小和消息积累之后,性能不会下降太多,因为内存中的数据对外界提供的浏览能力有限。

②消息堆积在持久存储系统中,如 DB,KV 存储,文档记录方式。 当信息不能存储在内存时 Cache 命中时,要不可避免地浏览硬盘,会产生大量的阅读 IO,读 IO 货运量直接决定了消息积累后的浏览能力。

评价信息积累能力主要有以下四点:

有多少条信息可以沉积,有多少字节?也就是说,信息的沉积量。

消息堆积后,发送信息的货运量会不会受到沉积的影响?

消息积累后,正常消费 Consumer 会不会受到影响?

消息堆积后,浏览堆积在硬盘上的消息时,货运量有多大?

(13)分布式事务

已知的几个分布式事务规范,如 XA,JTA 等。其中 XA 该规范得到了各大数据库厂商的广泛支持,如 Oracle,Mysql 等。其中 XA 的 TM 完成领导者如 Oracle Tuxedo,广泛应用于金融、电信等领域。

分布式事务涉及两个阶段的提交问题,必须在文件存储层面 KV 存储的适用性,由于第二阶段提交回滚必须修改信息,必须涉及基础 Key 去搜索 Message 动作。RocketMQ 第二阶段绕过依据 Key 去搜索 Message 选择第一阶段推送的问题 Prepared 当你得到消息时,你得到了消息 Offset,第二阶段依据 Offset 浏览信息并修改状态,Offset 是数据的地址。

RocketMQ 这种完成事务的方法不能通过 KV 存放做,而是用 Offset 方法有一个明显的缺点,即通过方法,有一个明显的缺点 Offset 更改数据,会使系统的脏页过多,必须特别注意。

(14)按时信息

按时信息是指信息发送到信息 Broker 之后,不能马上被 Consumer 消费,需要到特定的时间点或等待特定的时间才能消费。

如果您想适用任何时间精度,在 Broker 一方面,一定要做信息排列,如果涉及到持久性,那么信息排列必然会产生很大的特性成本。

RocketMQ 适用于按时信息,但不适用于随机时间精度,适用于特定的时间精度 level,比如按时 5s,10s,1m 等。

(15)信息再试

Consumer 消费信息失败后,应提供重试机制,使信息再次消费。Consumer 一般可以认为消费信息失败有以下几种情况:

由于信息本身的原因,如反序列化失败,信息数据本身无法解决(如电话充值、当前信息手机号码注销、无法充值)等。这个错误通常需要绕过这个消息,然后消费其他信息,即使失败的信息立即被消费,99%也不成功,所以试着提供一个及时的重试机制,即通过 10s 几秒钟后再试一次。

因为依赖的下游应用服务不可用,比如 db 连接不可用,外部系统网络无法达到。遇到这种错误,即使绕过当前失败的信息,消费其他信息也会报告错误。建议使用这种情况 sleep 30s,再消费下一条消息,这样可以减少 Broker 再次尝试信息压力。

简易说来,RocketMQ 具有以下特点:

①是具有高性能、高可靠性、高即时性、分布式特点的序列模型消息中间件。

②Producer、Consumer、序列可以分布式。

③Producer 轮流向一些序列发送信息,序列组合称为 Topic,Consumer 如果你做广播消费,那就是一个 consumer 案例消费这个 Topic 相应的所有序列,如果做集群消费,则多个 Consumer 这个案例的平均消费 topic 相应的序列组合。

④能够保证严格的信息顺序。

⑤提供丰富的信息获取方式。

⑥高效的订阅水平扩展能力。

⑦实时新闻订阅系统。

⑧一亿级新闻积累能力。

⑨更少的依赖。

- END -

花脸稿是什么(花脸稿在文件的起草、修改和审查中起着重要作用)

花脸稿是什么(花脸稿在文件的起草、修改和审查中起着重要作用)

花脸稿是什么,“花脸稿”是指保留了修改痕迹的文稿。因为保留了修改的痕迹,文稿看起来比较杂乱,这样的文稿就被形象地...

大锅饭时代几年到几年

大锅饭时代几年到几年

大锅饭时代几年到几年,1958下半年-1961年。大锅饭是对分配方面存在的平均主义现象的一种形象比喻,它包括两个方面:一...

烤箱烤鸡翅温度和时间是多少

烤箱烤鸡翅温度和时间是多少

烤箱可以用来烤鸡翅,其实外面卖的烤鸡翅很多都是烤箱做的,不仅色泽金黄,而且口感细嫩。那么烤箱烤鸡翅温度和时间...

2013-2022年中国国务院总理是谁(现任中共十九届中央政治局常委,国务院总理、党组书记)

2013-2022年中国国务院总理是谁(现任中共十九届中央政治局常委,国务院总理、党组书记)

现任中共十九届中央政治局常委,国务院总理、党组书记。人物履历1974-1976年:安徽省凤阳县大庙公社东陵大队知青1976-...

1公斤等于多少kg(1公斤等于1千克,千克为国际单位制中度量质量的基本单位)

1公斤等于多少kg(1公斤等于1千克,千克为国际单位制中度量质量的基本单位)

1公斤等于1千克,千克为国际单位制中度量质量的基本单位,也是日常生活中最常使用的基本单位之一。1千克的定义就是国...

渐近线公式

渐近线公式

渐近线计算公式A = lim [ f (x)/x] , B= lim [ f (x)-ax]当a=0时,有limf(x)=b (x趋向于无穷时),此时称y=b为...

掌中宝是什么位置

掌中宝是什么位置

掌中宝原本是指鸡爪中间鼓起来的部分,不过现在很多地方也把鸡脆骨统称为掌中宝。掌中宝是鸡的大腿中间那一块软骨那...

黄豆和毛豆是不是一种东西

黄豆和毛豆是不是一种东西

黄豆和毛豆是一种东西。毛豆和黄豆是同一种植物的不同时期,毛豆是黄豆的未成熟期,是新鲜连荚的黄豆。而黄豆是毛豆完...

安徽工程大学是几本

安徽工程大学是几本

安徽工程大学是一本大学,安徽工程大学简称安工程(AHPU),位于安徽省芜湖市,是一所以工为主的省属多科性高等院校和安徽省...

车辆合格证编号在哪里(车辆合格证编号在机动车登记证书第一页的右上角)

车辆合格证编号在哪里(车辆合格证编号在机动车登记证书第一页的右上角)

车辆合格证编号在机动车登记证书第一页的右上角,共17位。车辆合格证编号,就是VIN码,是英文VehicleIdentificationNumb...

查看更多知识百科