详解MyCat 全局序列号实现方式
|
点:当 MyCAT 重新发布后,配置文件中的 sequence 会恢复到初始值。 优点:本地加载,读取速度较快。 2. 数据库方式 原理: 在数据库中建立一张表,存放 sequence 名称(name),sequence 当前值(current_value),步长(incrementint 类型每次读取多少个 sequence,假设为 K)等信息; Sequence 获取步骤: 当初次使用该 sequence 时,根据传入的 sequence 名称,从数据库这张表中读取 current_value,和increment 到 MyCat 中,并将数据库中的 current_value 设置为原 current_value 值+increment 值。 MyCat 将读取到 current_value+increment 作为本次要使用的 sequence 值,下次使用时,自动加 1,当使用 increment 次后,执行步骤 1)相同的操作。 MyCat 负责维护这张表,用到哪些 sequence,只需要在这张表中插入一条记录即可。若某次读取的sequence 没有用完,系统就停掉了,则这次读取的 sequence 剩余值不会再使用。 配置方式(server.xml 配置): Zk 的连接信息统一在 myid.properties 的 zkURL 属性中配置。 基于 ZK 与本地配置的分布式 ID 生成器(可以通过 ZK 获取集群(机房)唯一 InstanceID,也可以通过配置文件配置 InstanceID)k 的连接信息统一在 myid.properties 的 zkURL 属性中配置,4 是 zookeeper 实现递增序列号 1) 配置文件:sequence_conf.properties, 只要配置好 ZK 地址和表名的如下属性
2) 文件配置的 MAXID 以及 MINID 决定每次取得区间,这个对于每个线程或者进程都有效 3)文件中的这三个属性配置只对第一个进程的第一个线程有效,其他线程和进程会动态读取 ZK 6. 自增长主键 (1) MyCAT 自增长主键和返回生成主键 ID 的实现 说明:
MyCAT目前提供了自增长主键功能,但是如果对应的 mysql 节点上数据表,没有定义 auto_increment,那么在 MyCAT 层调用 last_insert_id()也是不会返回结果的。
正确配置方式如下: (编辑:潍坊站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |



