- 博客(11)
- 收藏
- 关注
原创 RocketMQ-总结
当broker启动时,会轮循所有的nameserver,并建立一个长连接,向nameserver注册自身的信息,nameserver会维护一个broker列表,存放broker的信息。生产者端:使用confirm模式,生产者发送消息给broker后,broker需要返回一个ACK消息,如果producer没有收到该ACK消息,则认为消息发送失败,重新发送。消费者消费broker中的消息,由于网络波动,broker没有收到ACK消息,会重新将该消息发送给消费者消费,造成消息重复。通过幂等令牌做唯一性处理。
2024-02-25 21:47:32
1827
原创 RocketMQ之应用
当一条消息初次消费失败,消息队列会自动进行消费重试;达到最大重试次数后,若消费依然失败,则表明消费者在正常情况下无法正确地消费该消息,此时,消息队列不会立刻将消息丢弃,而是将其发送到该消费者对应的特殊队列中。这个队列就是死信队列(Dead-Letter Queue,DLQ),而其中的消息 则称为死信消息(Dead-Letter Message,DLM)。死信队列是用于处理无法被正常消费的消息的。
2024-02-25 21:43:09
1150
原创 RocketMQ之工作原理
Rebalance即再均衡,指的是,将一个Topic下的多个Queue在同一个Consumer Group中的多个Consumer间进行重新分配的过程。Rebalance机制的本意是为了提升消息的并行消费能力。例如,一个Topic下 5 个队列,在只有 1 个消费者的情况下,这个消费者将负责消费这 5 个队列的消息。如果此时我们增加一个消费者,那么就可以给其中一个消费者分配 2 个队列,给另一个分配 3 个队列,从而提升消息的并行消费能力。
2024-02-25 21:21:21
7984
1
原创 RocketMQ之集群搭建理论
所谓同步双写,指的是消息写入master成功后,master会等待slave同步数据成功后才向producer返回成功ACK,即master与slave都要写入成功后才会返回成功ACK,也即双写。master与slave的关系是主备关系,即master负责处理消息的读写请求,而slave仅负责消息的备份与master宕机后的角色切换。Slave从Master同步的延迟越短,其可能丢失的消息就越少对于Master的RAID磁盘阵列,若使用的也是异步复制策略,同样也存在延迟问题,同样也可能会丢失消息。
2024-02-25 21:07:36
684
原创 RocketMQ之系统架构
NameServer是一个Broker与Topic路由的注册中心,支持Broker的动态注册与发现。RocketMQ的思想来自于Kafka,而Kafka是依赖了Zookeeper的。所以,在RocketMQ的早期版本,即在MetaQ v1.0与v2.0版本中,也是依赖于Zookeeper的。从MetaQ v3.0,即RocketMQ开始去掉了Zookeeper依赖,使用了自己的NameServer。Broker管理:接受Broker集群的注册信息并且保存下来作为路由信息的基本数据;
2024-02-25 21:04:04
1083
原创 MySql之事务
MVCC(Multi-Version Concurrency Control ,多版本并发控制)指的就是在使用READ COMMITTD、REPEATABLE READ这两种隔离级别的事务在执行普通的SEELCT操作时访问记录的版本链的过程。可以使不同事务的读-写、写-读操作并发执行,从而提升系统性能。
2024-01-10 20:39:19
845
2
原创 MySql之索引分类
设定为主键后数据库会自动建立索引,innodb为聚簇索引。即一个索引只包含单个列,一个表可以有多个单列索引。索引列的值必须唯一,但允许有空值。即一个索引包含多个列。
2024-01-10 20:33:14
376
原创 MySql之索引实现
在MySQL中,索引属于存储引擎级别的概念,不同存储引擎对索引的实现方式是不同的,本文主要讨论MyISAM和InnoDB两个存储引擎的索引实现方式。
2024-01-10 20:30:23
855
原创 MySql之索引
尽管 B+树找到一个记录所需的比较次数要比 B-树多,但是一次磁盘访问的时间相当于成百上千次内存比较的时间,因此实际中B+树的性能可能还会好些,而且 B+树的叶子节点使用指针连接在一起,方便顺序遍历(例如查看一个目录下的所有文件,一个表中的所有记录等),这也是很多数据库和文件系统使用 B+树的缘故。为了读取这个扇区的数据,需要将磁头放到这个扇区上方,为了实现这一点,磁头需要移动对准相应磁道,这个过程叫做寻道,所耗费时间叫做寻道时间,然后磁盘旋转将目标扇区旋转到磁头下,这个过程耗费的时间叫做旋转时间。
2024-01-10 20:26:29
848
原创 MySql之逻辑架构
一、预编译的SQL语句处理 预编译语句PreparedStatement 是java.sql中的一个接口,它是Statement的子接口。mysql 客户端通过协议与 mysql 服务器建连接,发送查询语句,先检查查询缓存,如果命中,直接返回结果,否则进行语句解析,也就是说,在解析查询之前,服务器会先访问查询缓存(query cache)——它存储 SELECT 语句以及相应的查询结果集。存储引擎层,存储引擎真正的负责了 MySQL 中数据的存储和提取,服务器通过 API 与存储引擎进行通信。
2024-01-10 20:15:57
399
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人