摘要: 全局锁 全局锁是对整个数据库实例加锁,整个库处于只读状态。 flush tables with read lock 适用场景 全局锁适用于做全库逻辑备份,但是整个库处于只读状态,在备份期间,所有的更新操作、DDL将会被阻塞,会对业务产生影响。 single-transaction mysqldump 阅读全文
posted @ 2023-11-13 09:11 shanml 阅读(810) 评论(1) 推荐(2) 编辑
摘要: 在使用事务的时候需要添加@EnableTransactionManagement注解来开启事务,Spring事务底层是通过AOP来实现的,所以启用事务后,同样会向容器中注入一个代理对象创建器,AOP使用的是AnnotationAwareAspectJAutoProxyCreator,事务使用的是In 阅读全文
posted @ 2023-11-09 09:39 shanml 阅读(594) 评论(0) 推荐(0) 编辑
摘要: 自己整理、总结了一些消息队列相关面试题,并想了一些RocketMQ面试过程中可能会问的知识点。 使用消息队列的优点 系统解耦 比如系统A产生的某个事件,系统B需要感知,简单实现就是在系统A产生事件之后,调用系统B的接口通知系统B,如果此时再增加一个系统C,还需要修改系统A的代码,再加入调用系统C接口 阅读全文
posted @ 2023-11-07 22:19 shanml 阅读(1012) 评论(0) 推荐(0) 编辑
摘要: 注册AOP代理创建器 在平时开发过程中,如果想开启AOP,一般会使用@EnableAspectJAutoProxy注解,这样在启动时,它会向Spring容器注册一个代理创建器用于创建代理对象,AOP使用的是AnnotationAwareAspectJAutoProxyCreator,它实现了Smar 阅读全文
posted @ 2023-10-30 09:28 shanml 阅读(566) 评论(0) 推荐(1) 编辑
摘要: Broker在启动的时候会注册定时任务,定时清理过期的数据,默认是每10s执行一次,分别清理CommitLog文件和ConsumeQueue文件: public class DefaultMessageStore implements MessageStore { // CommitLog清理类 p 阅读全文
posted @ 2023-10-23 09:05 shanml 阅读(481) 评论(0) 推荐(0) 编辑
摘要: 在RocketMQ 5.0以前,有两种集群部署模式,分别为主从模式(Master-Slave模式)和Dledger模式。 主从模式 主从模式中分为Master和Slave两个角色,集群中可以有多个Master节点,一个Master节点可以有多个Slave节点。Master节点负责接收生产者发送的写入 阅读全文
posted @ 2023-10-16 09:26 shanml 阅读(1661) 评论(0) 推荐(1) 编辑
摘要: 代理模式 代理模式一般包含三个角色: Subject:主题对象,一般是一个接口,定义一些业务相关的基本方法。 RealSubject:具体的主题对象实现类,它会实现Subject接口中的方法。 Proxy:代理对象,里面包含一个RealSubject的引用,外部会通过这个代理对象,来实现RealSu 阅读全文
posted @ 2023-10-15 22:39 shanml 阅读(148) 评论(0) 推荐(0) 编辑
摘要: Pop模式消费和消息粒度负载均衡 在RocketMQ 5.0之前,消费有两种方式可以从Broker获取消息,分别为Pull模式和Push模式。 Pull模式:消费需要不断的从阻塞队列中获取数据,如果没有数据就等待,这个阻塞队列中的数据由消息拉取线程从Broker拉取消息之后加入的,所以Pull模式下 阅读全文
posted @ 2023-10-13 10:00 shanml 阅读(1000) 评论(0) 推荐(1) 编辑
摘要: BeanPostProcessor后置处理器是Spring提供的一个扩展点,可以在Bean初始化前后做一些事情,注意这里是bean的初始化,不是实例化,BeanPostProcessor是一个接口,里面提供了两个方法,分别为postProcessBeforeInitialization(初始化之前) 阅读全文
posted @ 2023-10-12 11:19 shanml 阅读(235) 评论(0) 推荐(0) 编辑
摘要: 为了向云原生演进,提高资源利用和弹性能力,RocketMQ在5.0进行了架构的调整与升级,先来看新特性之一,增加了Proxy层。 增加Proxy代理层 计算存储分离 计算存储分离是一种分层架构,将计算层与存储层分开。 计算层指的是一些消耗计算资源的功能模块比如协议解析、消费管理等,存储指的是数据存储 阅读全文
posted @ 2023-10-11 09:11 shanml 阅读(1564) 评论(2) 推荐(1) 编辑