From e13694dbb2a7006217ff1e9c1d0c8976bfe69ce0 Mon Sep 17 00:00:00 2001 From: Ahoo Wang Date: Tue, 2 Jan 2024 17:34:42 +0800 Subject: [PATCH] feat(doc): update documentation --- documentation/docs/guide/segment.md | 6 +++++ documentation/docs/guide/snowflake.md | 39 +++++++++++++++------------ 2 files changed, 28 insertions(+), 17 deletions(-) diff --git a/documentation/docs/guide/segment.md b/documentation/docs/guide/segment.md index f41bff3e72..983ebef99f 100644 --- a/documentation/docs/guide/segment.md +++ b/documentation/docs/guide/segment.md @@ -40,3 +40,9 @@ StringSegmentId ..> IdGenerator StringSegmentId ..> SegmentId ``` +## IdSegmentDistributor + +## GroupedIdSegmentDistributor + + +## 配置 diff --git a/documentation/docs/guide/snowflake.md b/documentation/docs/guide/snowflake.md index 3939f111e5..e311ea49e7 100644 --- a/documentation/docs/guide/snowflake.md +++ b/documentation/docs/guide/snowflake.md @@ -38,23 +38,6 @@ _SnowflakeId_ 是*Twitter*开发的一种分布式唯一ID生成算法,被广 想象一下假设 **MachineId** 是物理上的,那么意味着一台机器拥有只能拥有一个 **MachineId**,那会产生什么问题呢? ::: -目前 *[CosId](https://github.com/Ahoo-Wang/CosId)* 提供了以下五种 `MachineId` 分配器。 - -- `ManualMachineIdDistributor`: 手动配置`machineId`,一般只有在集群规模非常小的时候才有可能使用,不推荐。 -- `StatefulSetMachineIdDistributor`: 使用`Kubernetes`的`StatefulSet`提供的稳定的标识ID(HOSTNAME=service-01)作为机器号。 -- `RedisMachineIdDistributor`: 使用**Redis**作为机器号的分发存储,同时还会存储`MachineId`的上一次时间戳,用于**启动时时钟回拨**的检查。 -- `JdbcMachineIdDistributor`: 使用**关系型数据库**作为机器号的分发存储,同时还会存储`MachineId`的上一次时间戳,用于**启动时时钟回拨**的检查。 -- `ZookeeperMachineIdDistributor`: 使用**ZooKeeper**作为机器号的分发存储,同时还会存储`MachineId`的上一次时间戳,用于**启动时时钟回拨**的检查。 -- `MongoMachineIdDistributor`: 使用**MongoDB**作为机器号的分发存储,同时还会存储`MachineId`的上一次时间戳,用于**启动时时钟回拨**的检查。 - -

- MachineIdDistributor -

- -

- Machine Id Safe Guard -

- ### 时钟回拨 时钟回拨的致命问题是会导致ID重复、冲突(这一点不难理解),ID重复显然是不能被容忍的。 @@ -136,6 +119,28 @@ StringSnowflakeId ..> SnowflakeId `ClockSyncSnowflakeId` 是 `SnowflakeId` 的包装器,当发生时钟回拨时会使用`ClockBackwardsSynchronizer`主动等待时钟同步来重新生成ID,提供更加友好的使用体验。 +## MachineIdDistributor + +`MachineIdDistributor` 是 `SnowflakeId` 的机器号分配器,它负责分配机器号,同时还会存储`MachineId`的上一次时间戳,用于**启动时时钟回拨**的检查。 + +

+ MachineIdDistributor +

+ +目前 *CosId* 提供了以下六种 `MachineId` 分配器。 + +- `ManualMachineIdDistributor`: 手动配置`machineId`,一般只有在集群规模非常小的时候才有可能使用,不推荐。 +- `StatefulSetMachineIdDistributor`: 使用`Kubernetes`的`StatefulSet`提供的稳定的标识ID(HOSTNAME=service-01)作为机器号。 +- `RedisMachineIdDistributor`: 使用**Redis**作为机器号的分发存储,同时还会存储`MachineId`的上一次时间戳,用于**启动时时钟回拨**的检查。 +- `JdbcMachineIdDistributor`: 使用**关系型数据库**作为机器号的分发存储,同时还会存储`MachineId`的上一次时间戳,用于**启动时时钟回拨**的检查。 +- `ZookeeperMachineIdDistributor`: 使用**ZooKeeper**作为机器号的分发存储,同时还会存储`MachineId`的上一次时间戳,用于**启动时时钟回拨**的检查。 +- `MongoMachineIdDistributor`: 使用**MongoDB**作为机器号的分发存储,同时还会存储`MachineId`的上一次时间戳,用于**启动时时钟回拨**的检查。 + +## MachineIdGuarder + +

+ Machine Id Safe Guard +

## 配置