目录
- [1. 分布式ID](#1. 分布式ID)
-
- [1-1. 传统方案](#1-1. 传统方案)
- [1-2. 分布式ID特点](#1-2. 分布式ID特点)
- [1-3. 实现方案](#1-3. 实现方案)
- [1-4. 开源组件](#1-4. 开源组件)
- [2. 分布式Session](#2. 分布式Session)
-
- [2-1. 传统Session](#2-1. 传统Session)
- [2-2. Spring-Session](#2-2. Spring-Session)
- [2-3. Token + Redis](#2-3. Token + Redis)
- [2-4. JWT](#2-4. JWT)
- [2-5. 拦截器统一处理Token](#2-5. 拦截器统一处理Token)
- [2-6. Oauth2](#2-6. Oauth2)
- [3. 分布式锁](#3. 分布式锁)
-
- [3-1. redis](#3-1. redis)
- [3-2. Zookeeper](#3-2. Zookeeper)
1. 分布式ID
1-1. 传统方案
- 时间戳
- UUID
1-2. 分布式ID特点
- 全局唯一
- 高并发
- 高可用
1-3. 实现方案
方案总结:
- 号段模式
- 有两台服务器,给第一台服务器分配0-100,第二台服务器分配101-200
- 优点:性能提高,自增
- 雪花算法
1-4. 开源组件
- 百度 uid-generator 只支持雪花算法,组件无人维护
- 滴滴 Tinyid 只支持数据库号段,支持多db,高可用,提供java-client
- 美团 Leaf 支持号段模式、雪花算法。使用zk解决机器码
2. 分布式Session
2-1. 传统Session
Session是由Tomcat
管理的
2-2. Spring-Session
使用spring提供的spring-session-data-redis
依赖,配置对应的策略,将session存储到redis中。
2-3. Token + Redis
2-4. JWT
2-5. 拦截器统一处理Token
2-6. Oauth2
3. 分布式锁
3-1. redis
使用setnx
,原子性操作
直接使用redis客户端,redisson