「RocketMQ」- 消息队列

认识

官网:https://rocketmq.apache.org/
文档:https://rocketmq.apache.org/docs/
仓库:https://github.com/apache/rocketmq

RocketMQ 是由阿里巴巴开发的分布式消息中间件系统,旨在处理大规模的消息传递场景。它是一种高性能、可伸缩且具有高可靠性的分布式消息队列引擎。RocketMQ 的设计目标是提供低延迟、高吞吐量和强顺序保证的消息传递。RocketMQ 是一个功能强大、可靠性高且具有良好可伸缩性的分布式消息中间件系统,适用于多种消息传递场景,并不断进行改进和演进以满足不断变化的需求。简而言之,RocketMQ 是个消息队列软件。

组成

Name Server(命名服务器):负责管理生产者、消费者和主题之间的路由关系,提供集群扩展和动态配置功能。

Broker(代理服务器):存储和传输消息的实际节点。它接收来自生产者的消息,并将其存储在磁盘上,同时将消息推送给订阅了相关主题的消费者。

Producer(生产者):负责发送消息到 Broker,将消息发布到指定的主题。

Consumer(消费者):从 Broker 订阅和拉取消息,按照指定的消费模式处理消息。

相对于 RocketMQ 的 Broker 集群,生产者和消费者都是客户端。

RocketMQ 可以令客户端找到 Name Server,然后通过 Name Server 再找到 Broker。

构造

apache/rocketmq-operator: Apache RocketMQ Operator

通过 Docker Compose 快速部署

on Kubernetes | with Helm Chart

https://artifacthub.io/packages/helm/rocketmq/rocketmq
https://github.com/itboon/rocketmq-helm

helm repo add rocketmq https://helm-charts.itboon.top/rocketmq
helm repo update

helm search repo rocketmq/
helm pull rocketmq/rocketmq --version 3.0.3

helm show values ./rocketmq-3.0.3.tgz > rocketmq-3.0.3.tgz.helm-values.yaml
vim rocketmq-3.0.3.tgz.helm-values.yaml
... dashboard.ingress:
... nameserver.persistence.storageClass:
... broker.persistence.storageClass:

helm upgrade --install --namespace application-dependency --create-namespace \
    rocketmq ./rocketmq-3.0.3.tgz -f rocketmq-3.0.3.tgz.helm-values.yaml

提供公网访问

[RocketMQ 5.1.4] 内外网隔离的情况下,怎么做到内外网都可以通过MQ收发消息 #7558

简而言之,需要修改 Broker 注册地址,使 Client 能够连接。

性质

高性能:RocketMQ 采用了异步、零拷贝等技术优化,以实现低延迟和高吞吐量的消息传递。
可靠性:RocketMQ 提供消息持久化机制,确保消息在发送、存储和传输过程中的可靠性。
可伸缩性:RocketMQ 支持分布式部署和水平扩展。通过增加 Broker 和 Name Server 节点,可以实现更高的容量和负载均衡。
消息顺序保证:RocketMQ 能够提供严格的消息顺序保证,确保相同 Key 或 Tag 的消息按照发送顺序进行消费。

应用

异步消息:用于解耦和提高系统响应性,如日志收集、事件驱动架构等。
事务消息:支持分布式事务,确保消息的最终一致性。
流式处理:用于大规模数据流的处理和分析,如实时计算、数据传输等。
消息轨迹:支持对消息进行全链路追踪和监控,便于故障排查和性能优化。

改进

近年来,RocketMQ 不断进行改进和演进,包括以下方面:
社区贡献:RocketMQ 是一个开源项目,拥有活跃的社区贡献者和开发团队。社区不断改进和优化 RocketMQ 的功能、性能和稳定性。
集成其他生态系统:RocketMQ 积极与其他开源项目和产品进行集成,如与 Apache Storm、Apache Flink 等大数据处理框架的结合。
云原生支持:为了适应云原生应用的需求,RocketMQ 提供了 Kubernetes Operator、Serverless 等特性,简化了在云环境中的部署和管理。
性能调优:RocketMQ 团队致力于提升其性能,通过改进各个组件和算法,以及优化网络 IO、存储等方面,以提供更好的性能和可伸缩性。