前置知识:分布式ID

由于改用 PostgreSQL 数据库,本章内容仅作知识扩展。项目使用的相关知识请阅读《前置知识:使用 XID 作为分布式ID》。

为什么需要分布式ID

由于我们的商城系统是分布式的,同时,数据库也将是集群。这就要求对数据库中每条记录的主键提出了要求:如果还是使用简单的、数据库自带的自增值作为主键,那将造成集群内的ID重复(当然,可以通过设置集群内每个 MySQL 的自增起始值和步长规避)。

有哪些分布式ID的实现

常用的有:

你可以参考这篇文章

使用 rs-snowflake 即可方便地在 rust 使用雪花算法来生成分布式ID,它的依赖如下:

[dependencies]
rs-snowflake="0.6"
use snowflake::SnowflakeIdGenerator;
fn main() {
   let mut id_generator_generator = SnowflakeIdGenerator::new(1, 1);
   let id = id_generator_generator.real_time_generate();
}

或者

use snowflake::SnowflakeIdBucket;
fn main() {
   let mut id_generator_bucket = SnowflakeIdBucket::new(1, 1);
   let id = id_generator_bucket.get_id();
}
要查看完整内容,请先登录