分布式系统如果保证接口的幂等性?
- 数据设置状态值
- 数据库设置唯一性
- 每个数据请求有唯一性标识
分布式session如何处理?
- tomcat+redis,TomcatRedisSessionManager,将所有部署的tomcat都将session存储到redis即可。使用方法不变,是Tomcat封装的类将session存储到了redis,依赖web容器
- spring session +redis:spring 将session存储到redis
分库分表
- 为什么要分库分表?表数据量达到上千万级别,数据库磁盘消耗高,QPS响应慢,需要通过分库分表来优化
- 分库分表中间件?中间件有client类型,proxy类型
什么是垂直分和水平分?
如何平滑的执行分库分表?
- 启动多个线程读取原始数据到数据中间件中
- 双写迁移方案:
-
分库分表之后全局唯一ID如何生成(主键自增ID)?
- 生成主键ID的全局数据库A,每次都去数据库A里面得到主键ID,然后再去其他数据库insert 数据。瓶颈:单库,适用于 并发量小,数据大的情况,每秒最高并发最大为几百的合适。
- uuid :本地生成,不基于数据库,确定 字段太长,做为主键性能差