# 前言
ReentrantLock是基于AQS框架的应用实现,具备AQS中的以下特性
阻塞等待队列
独占
公平/非公平
可重入
允许中断
ReentrantLock的核心实现
1.自旋 + CAS操作
2.CLH队列
双向队列
AQS当中的同步等待队列也称CLH队列,CLH队列是Craig、Landin、Hagersten三人 发明的一种基于双向链表数据结构的队列,是FIFO先入先出线程等待队列,Java中的CLH队列是原CLH队列的一个变种,线程由原自旋机制改为阻塞机制。
3.LocksSuport
LockSupport.park(thread);
LockSupport.unpark(thread);
提示
Canal + Kafka + Mysql 数据同步方案示例。
# 1 MySQL开启binlog
查看MySQLs是否开启了binlog及binlog-format是否ROW模式。
-- 查看数据库版本
select version();
-- 显示OFF未开启 ON开启
show variables like ‘log_bin’
-- binlog_format 有三种:ROW,STATEMENT,MIXID
show variables like 'binlog_format';
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
MySQL安装目录下修改my.ini。
-- 在mysqld下面添加
log_bin=mysql-bin
binlog-format=ROW
server-id=1
-- 进入命令行重启mysql
停止 net stop mysql57
启动 net start mysql57
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
赋予canal用户复制权限。
-- 创建用户
create user 'canal'@'%' identified by '123456';
-- REPLICATION CLIENT
-- REPLICATION SLAVE
-- 复制相关。一般复制账号需要这两个权限。
grant select,replication slave, replication client on *.* to 'canal'@'%';
-- 刷新权限
FLUSH PRIVILEGES;
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10