(五)基于RocketMQ--Demo项目的测试和原理说明

简介:

文章一、二、三为RocketMQ的初步了解、搭建环境工作,文章四基于myeclipse搭建Demo测试项目

本文的内容基于之前的Demo项目和环境进行测试工作,探究说明RocketMQ的工作原理

术语解释

Name Server

  • 无状态节点,可集群部署,节点之间无任何信息同步(Broker与每个namesrv连接,可以保证信息同步性)
  • NameServer用来保存活跃的 broker 列表,包括 Master 和 Slave。
  • NameServer用来保存所有 topic 和该 topic 所有队列的列表。
  • Namesrv只是Broker的服务注册与发现,具体的消息收发,都依靠Broker。

Broker

  • 消息中转角色,负责存储消息,转发消息。
  • 拥有Master、slave(主备)的概念,主备有同步双写、异步复制功能来保持数据同步。标识:Master的BrokerId 为 0 ,Slave的BrokerId 非0。
  • Broker 与 Name Server 集群中的所有节点建立长连接,定时(心跳)注册 Topic 信息到所有 Name Server。

Producer

  • 消息发送者,消息通过topic来标示

Producer Group

  • 一类 Producer 的集合名称,这类 Producer 通常发送一类消息,且发送逻辑一致。

Consumer

  • 有两种实现方式,一种push Consumer,第二种是 pull Consumer。

Consumer Group

  • 一类 Consumer 的集合名称,这类 Consumer 通常消费一类消息,且消费逻辑一致。
  • 两种模式:广播消费和集群消费

广播消费(Broadcasting)

  • 一条消息被多个 Consumer 消费,即使这些 Consumer 属于同一个 Consumer Group,消息也会被 Consumer Group 中的每个 Consumer 都消费一次,广播消费中的 Consumer Group 概念可以认为在消息划分方面无意 义。broadcasting

集群消费(Clustering)

  • 一个 Consumer Group 中的 Consumer 实例平均分摊消费消息。例如某个 Topic 有 9 条消息,其中一个 Consumer Group 有 3 个实例(可能是 3 个进程,或者 3 台机器),那么每个实例只消费其中的 3 条消息。

Topic

  • 消息的逻辑管理单位。

Queue(Message Queue/Topic Queue)

  • 消息的物理管理单位。一个Topic下可以有多个Queue,Queue的引入使得消息存储可以分布式集群化,具有了水平扩展的能力

  • Queue可以理解为Topic的实际存储单元,服务器创建Topic时会指定ReadQueueNum和WriteQueueNum。即某Producer发送了40条关于TopicA的消息,如果TopicA下有4个queue,则每个queue均分存储10条消息

  • 在 RocketMQ 中,Queue都是持久化,长度近乎无限的数据结构,访问其中的存储单元使用 Offset 来访问,offset 为 java long 类型64 位,另外队列中只保存最近几天(默认三天)的数据,之前的数据会按照过期时间来 删除。 也可以认为 Message Queue 是一个长度无限的数组,offset 就是下标

  • 详细可以参看RocketMQ数据存储结构,如Commit log、offset等概念

工作原理的问题及测试

Q1:producer发送消息时,如果有

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
mycat和sharding-jdbc项目demo.zip是两个与数据库分片和分库相关的开源项目的演示文件。 Mycat是一个基于MySQL协议的分布式数据库管理工具,它可以将一个逻辑数据库按照表和行的方式分片存储在多个物理数据库,提供高可用性和扩展性。Mycat的demo.zip文件包含了一个演示项目,用于展示Mycat在实际应用的使用场景和功能。通过演示项目,我们可以学习和了解如何配置和使用Mycat来管理和操作分片数据库。 Sharding-JDBC是一个基于JDBC的间件,它基于分库分表原理,将多个数据库视为一个逻辑数据库,通过透明化的方式将数据分散存储在多个物理数据库。Sharding-JDBC的demo.zip文件包含了一个演示项目,用于展示Sharding-JDBC在实际应用的使用方式和功能。通过演示项目,我们可以学习和了解如何配置和使用Sharding-JDBC来实现数据库的分库分表操作。 这两个项目都是为了解决大规模应用系统数据库性能瓶颈和扩展性问题而开发的。它们通过将数据分散存储在多个物理数据库,实现了数据的横向扩展和负载均衡。同时,它们提供了简化配置和操作的接口,使得开发人员可以更加方便地使用和管理分片数据库。 通过使用这些演示项目,我们可以学习和理解如何配置和使用Mycat和Sharding-JDBC来实现分片数据库,并在实际应用提高数据库的性能和可扩展性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值