认识
官网: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
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、存储等方面,以提供更好的性能和可伸缩性。