RocketMQ摒弃了业界常用的ZookKeeper作为注册中心,而是自研NameServer作为注册中心实现元数据的管理(topic路由信息等)。topic路由消息无须在集群之间保持强一致,而是追求最终一致性,并且能容忍分钟级的不一致。RocketMQ的NameServer集群之间互不通信,降低了NameServer实现的复杂度,对网络的要求也降低了,性能相比ZooKeeper有了极大提升。
RocketMQ消息存储
RocketMQ存储的文件主要包括CommitLog文件、ConsumeQueue文件、Index文件。RocketMQ将所有主题的消息存储在同一个文件中,确保消息发送时按顺序写文件,尽最大能力确保消息发送的高性能与高吞吐量。
InnoDB锁
MySQL中的一条条SQL语句,都可以理解成一个个事务,而事务基于MySQL连接,也就是线程,当多个事务并发执行的时候也就是多线程并发执行。数据库的锁就是为了解决并发事务下数据的安全性问题。
Redisson
InnoDB-MVCC
MVCC机制的全称为Multi-Version Concurrency Control,即多版本并发控制技术, 主要是为了提升数据库并发性能而设计的,其中采用更好的方式处理了读-写并发冲突,做到即使有读写冲突时,也可以不加锁解决,从而确保了任何时刻的读操作都是非阻塞的。
CountDownLatch和AQS
线程池
ThreadPoolExecutor是Executor框架最核心的类,也是线程池的实现类,有以下4个组件构成。
- corePool:核心线程池大小
- maximumPool:最大线程池大小
- BlockingQueue:用来暂时保存任务的工作队列
- RejectedExecutionHandler:当ThreadPoolExecutor已经关闭或者已经饱和(达到最大线程池大小并且工作队列已满),execute()方法将调用Handler(拒绝策略)
垃圾收集器
GC算法是内存回收的方法论,而垃圾收集器就是内存回收的具体实现。不同的厂商、不同版本之间的虚拟机所提供的垃圾收集器可能会有很大差别,并且一般都会提供参数供用户根据自己的需求组合出各个年代所使用的收集器。