Apache RocketMQ官网翻译(一)

刘阳荣
2023-12-01

翻译来自:https://rocketmq.apache.org/docs/motivation/

背景

在早期,我们的分布式消息中间件都是建立在ActiveMQ 5.x(prior to 5.3)之上。我们通过其作为异步消息通信、搜索、社交网络信息流、数据管道甚至在交易处理上,为我们的复杂多样的业务服务。但是随着我们业务交易的吞吐量上升,消息集群的压力也变得越来越大。

Why RocketMQ ?

根据我们的调查,随着queue和虚拟topic使用的数量的增长,ActiveMQ的IO模块会到达一个瓶颈。我们竭尽全力去解决这个问题使用节流、断路、降级等方式,但是依然没有效果。所在在那时,我们开始将目标投向流行的消息解决方案kafka。而不幸的是,kafka不能达到我们的要求,特别是在低延迟和高可用方面,详细可以参考这里

在这样的情况下,我们决定自己研发一款消息引擎,能提供更广泛的使用场景,从传统的发布订阅到海量实时,零丢失容忍的事务系统。我们相信这个解决方案是非常有用的,所以我们开源给社区。到今天,有超过100家公司在他们的业务中使用开源版本的RocketMQ。我们也发布了一款基于RocketMQ商用版本的PaaS产品,成为Alibaba ONS。

下面的表格列举了各款消息中间件的不同,包括RocketMQ、ActiveMQ和Kafka(根据awesome-java(一个java框架、类库和软件的精选清单),Apache中最受欢迎的消息解决方案)

RocketMQ vs. ActiveMQ vs. Kafka

请注意这份文档是RocketMQ团队撰写的,尽管我们的期望是公正的的技术和功能对照,但作者的专业知识会明显偏向于RocketMQ。

下表是简便快捷的参考,点出RocketMQ与和看似最受欢迎的替换品之间的区别。

消息产品客户端sdk协议规范消息有序性延迟消息批量消息广播消息消息过滤器服务器重传消息存储消息追溯消息优先级高可用和容错消息追踪配置事宜管理操作工具
ActiveMQJava, .NET, C++ etcpush模型,支持OpenWire, STOMP, AMQP, MQTT, JMS单消费者或者单单队列可以保证顺序支持不支持支持支持不支持支持通过使用JDBC在高性能日志,如levelDB,kahaDB来快速持久化支持支持支持,依赖存储方式,如果使用kahadb会使用zk的服务不支持默认配置是低水准的,使用者需要自定义配置参数来优化支持
KafkaJava, Scala etc.pull模式,支持TCP分区内有序不支持当是异步生产者支持不支持支持,使用stream进行过滤不支持高性能文件存储支持offset定位消息不支持支持,但需要zk服务不支持使用键值对配置,可以通过文件或者程序的方式支持,使用终端命令去查看指标
RocketMQJava, C++, Gopull模式,支持 TCP, JMS, OpenMessaging确保严格的顺序和平滑拓展支持支持,使用同步模式避免消息丢失支持支持,建立在SQL92上的属性过滤表达式支持高性能和低延迟文件存储支持时间戳和offset两种方式定位消息不支持支持,主从模式不需要额外的工具支持集成在box中,用户只需要关注很少的配置项支持,丰富的web和终端命令查看指标
 类似资料: