1.场景
2.中间件
数据库中间件主要负责把数据分发到数据库
如何拆分数据库
如何将未分库分表的系统,动态切换到分库分表上(生产上的切换流程,线上迁移)
不停机双写方案
如何动态扩容缩容
停机扩容不建议使用
分库分表id主建问题
数据库自增id
做一个全局自增主建的表
缺点:全局的主建库有瓶颈
适用环境:并发很低,几百/s 但是数据量大,几十亿数据,所以需要分库分表来存放海量数据
UUID
适用环境:图片编号,不适用生成唯一id,由于长度较长会影响性能
雪花算法
给大家举个例子吧,比如下面那个 64 bit 的 long 型数字:
第一个部分,是 1 个 bit:0,这个是无意义的。
第二个部分是 41 个 bit:表示的是时间戳。
第三个部分是 5 个 bit:表示的是机房 id,10001。
第四个部分是 5 个 bit:表示的是机器 id,1 1001。
第五个部分是 12 个 bit:表示的序号,就是某个机房某台机器上这一毫秒内同时生成的 id 的序号,0000 00000000