cuid 是一个不错的id 生成算发,类似的有shortid .hashid 演示使用lua 包集成openresty 做测试 使用docker-compose 运行 dockerfile FROM openresty/openresty:alpine-fat RUN apk add --no-cache curl perl RUN /usr/local/openresty/luajit/bin/luarocks install cuid EXPOSE 80 COPY nginx.conf us
Mycat可以直接下载解压,简单配置后可以使用,主要配置项如下: 1. log4j2.xml:配置MyCat日志,包括位置,格式,单个文件大小 2. rule.xml: 配置分片规则 3. schema.xml:配置分库详细信息 4. server.xml:配置登陆信息 5.wrapper.conf : 配置jvm已经缓存大小 PS:有些版本的安装包(比如1.6)存在一些问题,比如在配置server.xml的时候,配置多个登陆账户,会报错: The content of element type
数据库自增id: 这个就是说你的系统里每次得到一个id,都是往一个库的一个表里插入一条没什么业务含义的数据,然后获取一个数据库自增的一个id.拿到这个id之后再往对应的分库分表里去写入. 这个方案的好处就是方便简单:缺点就是单库生成自增id,要是高并发的话,就会有瓶颈的: 适合的场景:你分库分表就俩原因,要不就是单库并发太高,要不就是单库数据量太大:除非是你并发不高,但是数据量太大导致的分库分表扩容,你可以用这个方案,因为可能每秒最高并发最多就几百,那么就走单独的一个库和表生成自增主键即可. u
传统的单体架构的时候,我们基本是单库然后业务单表的结构.每个业务表的ID一般我们都是从1增,通过AUTO_INCREMENT=1设置自增起始值,但是在分布式服务架构模式下分库分表的设计,使得多个库或多个表存储相同的业务数据.这种情况根据数据库的自增ID就会产生相同ID的情况,不能保证主键的唯一性. 如上图,如果第一个订单存储在 DB1 上则订单 ID 为1,当一个新订单又入库了存储在 DB2 上订单 ID 也为1.我们系统的架构虽然是分布式的,但是在用户层应是无感知的,重复的订单主键显而易见是不