Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

miraclehjt/EasyID

Repository files navigation

EasyID 分布式主键生成系统

EasyID是一个以snowflake算法为基础的轻量、高效的分布式主键生成系统。
生成的ID是一个64位的 长整型,全局唯一,保持递增,相对有序。

特点

  • 轻量级,微服务部署,部署方便,不需要单独的服务器,以jar包的形式提供服务;
  • 一次编译,多处部署,无需多余配置,方便扩容与缩容;
  • 无延迟,客户端从redis队列中获取ID,服务端保证队列中始终有值,保证应用平滑不停顿;
  • 高并发;
  • 高可用,可部署多台EasyID服务,通过zookeeper集中管理服务的注册与退出;
  • 负载均衡,所有在同一zookeeper中管理的服务端,采用轮询方式创建ID。
  • redis队列自动扩容与缩容,创建的ID存放在redis队列中供客户端提取,redis队列的大小根据服务端应用数量,自动扩大或缩小;

技术选型

  • 基于snowflake算法生成ID;
  • 基于netty实现远程通信;
  • 基于zookeeper实现服务注册、负载均衡;
  • 基于redis实现批量存储;

系统架构

image

服务部署

  • 将本地ip地址配置到hosts文件中;
  • 使用maven命令打包easyid-server:mvn clean instll -Dmaven.test.skip=true;
  • 部署easyid-server:java -jar EasyID-Server-STABLE-1.0.jar -zookeeper127.0.0.1:2181 -redis127.0.0.6379

参数说明:
-zookeeper:zookeeper地址
-redis:redis地址

docker部署

  • docker build Dockerfile
  • docker run --name easyid --net=host -p 9131:9131 -d easyid

注:--net=host,选用host模式设置docker的网络连接,将宿主机的ip注册到zookeeper,否则将访问不到docker服务

客户端

  • 添加easyid-cli项目的依赖;
  • 在spring配置文件中配置EasyID,参考easy-demo项目的配置;
  • 通过EasyID类的nextId(),获取id。

About

以snowflake算法为基础的分布式主键生成系统

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

Contributors

Languages

AltStyle によって変換されたページ (->オリジナル) /