From 72cef35e4d593be9e52d9ee7589b74d7e4235c96 Mon Sep 17 00:00:00 2001 From: yitter Date: Sun, 4 Apr 2021 13:23:52 +0800 Subject: [PATCH] auto commit --- README.md | 17 ++--------------- Tools/AutoRegisterWorkerId/lib/yitidgengo.h | 17 +++++++++++------ 2 files changed, 13 insertions(+), 21 deletions(-) diff --git a/README.md b/README.md index ddb2eb7..4dd6d35 100644 --- a/README.md +++ b/README.md @@ -170,21 +170,8 @@ SeqBitLength = 6 🔍 唯一ID生成器,依赖WorkerId,当业务服务需要水平自动化复制时,就要求它能自动化注册全局唯一WorkerId,然后各个容器化的无差别部署的业务服务,才能根据它生产唯一ID。 -🔍 本算法提供一个开源的动态库(go语言实现),能在容器 k8s(或其它容器化集群) 环境下,通过 redis 自动注册 WorkerId。动态库提供的C接口方法有: - -``` -// 注册一个 WorkerId,会先注销所有本机已注册的记录 -extern __declspec(dllexport) GoInt32 RegisterOne(char* ip, GoInt32 port, char* password, GoInt32 maxWorkerId); - -// 注册多个 WorkerId,会先注销所有本机已注册的记录 -extern __declspec(dllexport) int* RegisterMany(char* ip, GoInt32 port, char* password, GoInt32 maxWorkerId, GoInt32 totalCount); - -// 注销本机已注册的 WorkerId -extern __declspec(dllexport) void UnRegister(); - -// 检查本地WorkerId是否有效(0-有效,其它-无效) -extern __declspec(dllexport) GoInt32 Validate(GoInt32 workerId); -``` +🔍 本算法提供一个开源的动态库(go语言实现),能在容器 k8s(或其它容器化集群) 环境下,通过 redis 自动注册 WorkerId。动态库提供的C接口方法可参考 +源码文件 [ Tools/AutoRegisterWorkerId/lib/yitidgengo.h ] redis作用 diff --git a/Tools/AutoRegisterWorkerId/lib/yitidgengo.h b/Tools/AutoRegisterWorkerId/lib/yitidgengo.h index 647e9b9..8daded8 100644 --- a/Tools/AutoRegisterWorkerId/lib/yitidgengo.h +++ b/Tools/AutoRegisterWorkerId/lib/yitidgengo.h @@ -68,15 +68,20 @@ typedef struct { void *data; GoInt len; GoInt cap; } GoSlice; extern "C" { #endif +extern __declspec(dllexport) void SetOptions(GoUint16 workerId); +extern __declspec(dllexport) GoUint64 NextId(); -// 注册一个新的WorkerId -extern __declspec(dllexport) GoInt RegisterWorkerId(char* ip, GoInt port, char* password, GoInt maxWorkerId); +// 注册一个 WorkerId,会先注销所有本机已注册的记录 +extern __declspec(dllexport) GoInt32 RegisterOne(char* ip, GoInt32 port, char* password, GoInt32 maxWorkerId); -// 注销WorkerId -extern __declspec(dllexport) void UnRegisterWorkerId(); +// 注册多个 WorkerId,会先注销所有本机已注册的记录 +extern __declspec(dllexport) int* RegisterMany(char* ip, GoInt32 port, char* password, GoInt32 maxWorkerId, GoInt32 totalCount); -// 检查本地WorkerId是否有效 -extern __declspec(dllexport) GoUint8 ValidateLocalWorkerId(GoInt workerId); +// 注销本机已注册的 WorkerId +extern __declspec(dllexport) void UnRegister(); + +// 检查本地WorkerId是否有效(0-有效,其它-无效) +extern __declspec(dllexport) GoInt32 Validate(GoInt32 workerId); #ifdef __cplusplus }