九又四分之三站台

0%

RocketMQ摒弃了业界常用的ZookKeeper作为注册中心,而是自研NameServer作为注册中心实现元数据的管理(topic路由信息等)。topic路由消息无须在集群之间保持强一致,而是追求最终一致性,并且能容忍分钟级的不一致。RocketMQ的NameServer集群之间互不通信,降低了NameServer实现的复杂度,对网络的要求也降低了,性能相比ZooKeeper有了极大提升。

阅读全文 »

RocketMQ存储的文件主要包括CommitLog文件、ConsumeQueue文件、Index文件。RocketMQ将所有主题的消息存储在同一个文件中,确保消息发送时按顺序写文件,尽最大能力确保消息发送的高性能与高吞吐量。

阅读全文 »

MySQL中的一条条SQL语句,都可以理解成一个个事务,而事务基于MySQL连接,也就是线程,当多个事务并发执行的时候也就是多线程并发执行。数据库的锁就是为了解决并发事务下数据的安全性问题。

阅读全文 »

Java锁

  • synchronized
  • Lock

单机锁,不适合分布式场景

阅读全文 »

MVCC机制的全称为Multi-Version Concurrency Control,即多版本并发控制技术, 主要是为了提升数据库并发性能而设计的,其中采用更好的方式处理了读-写并发冲突,做到即使有读写冲突时,也可以不加锁解决,从而确保了任何时刻的读操作都是非阻塞的。

阅读全文 »

简介

CountDownLatch 的作用是:当一个线程需要另外一个或多个线程完成后,再开始执行。比如主线程要等待一个子线程完成环境相关配置的加载工作,主线程才继续执行,就可以利用 CountDownLatch 来实现。

阅读全文 »

ThreadPoolExecutor是Executor框架最核心的类,也是线程池的实现类,有以下4个组件构成。

  1. corePool:核心线程池大小
  2. maximumPool:最大线程池大小
  3. BlockingQueue:用来暂时保存任务的工作队列
  4. RejectedExecutionHandler:当ThreadPoolExecutor已经关闭或者已经饱和(达到最大线程池大小并且工作队列已满),execute()方法将调用Handler(拒绝策略)
阅读全文 »

GC算法是内存回收的方法论,而垃圾收集器就是内存回收的具体实现。不同的厂商、不同版本之间的虚拟机所提供的垃圾收集器可能会有很大差别,并且一般都会提供参数供用户根据自己的需求组合出各个年代所使用的收集器。

阅读全文 »

简介

Redis是内存型据库,它的数据是存在内存中的,但是如果只能存在内存中的话,当服务器进程出现问题,那么内存中的数据就会丢失。为了解决这个问题,Redis提供了持久化功能。Redis持久化分为RDB持久化和AOF持久化两种。

阅读全文 »

bin log (二进制日志)

比如我们如果在MySQL中修改了一条记录,而用户检索出来的数据是通过MySQL的搜索引擎的,为了保证能检索到最新的数据,需要把搜索引擎的数据也一起改掉。

bin log记录了数据库表结构和表数据变更的记录,比如create/insert/update/delete等操作,但是select不会记录,因为select不存在修改表的操作。bin log记录着每条变更的SQL已经事务id等记录。

阅读全文 »