{"id":15014345,"url":"https://github.com/beyondfengyu/distributedid","last_synced_at":"2025-04-08T03:11:15.367Z","repository":{"id":105683815,"uuid":"79108273","full_name":"beyondfengyu/DistributedID","owner":"beyondfengyu","description":"基于twitter的雪花算法(SnowFlake)来产生分布式ID，支持SDK、HTTP方式接入","archived":false,"fork":false,"pushed_at":"2017-10-26T06:29:25.000Z","size":47,"stargazers_count":299,"open_issues_count":1,"forks_count":130,"subscribers_count":23,"default_branch":"master","last_synced_at":"2025-04-08T03:11:14.667Z","etag":null,"topics":["netty","snowflake","twitter"],"latest_commit_sha":null,"homepage":"http://www.wolfbe.com","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/beyondfengyu.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-01-16T10:36:36.000Z","updated_at":"2025-03-21T02:21:17.000Z","dependencies_parsed_at":"2023-06-12T23:30:32.597Z","dependency_job_id":null,"html_url":"https://github.com/beyondfengyu/DistributedID","commit_stats":{"total_commits":21,"total_committers":2,"mean_commits":10.5,"dds":0.2857142857142857,"last_synced_commit":"7f003827850b974731f3699cab04768318624cbc"},"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/beyondfengyu%2FDistributedID","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/beyondfengyu%2FDistributedID/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/beyondfengyu%2FDistributedID/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/beyondfengyu%2FDistributedID/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/beyondfengyu","download_url":"https://codeload.github.com/beyondfengyu/DistributedID/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247767236,"owners_count":20992548,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["netty","snowflake","twitter"],"created_at":"2024-09-24T19:45:30.265Z","updated_at":"2025-04-08T03:11:15.350Z","avatar_url":"https://github.com/beyondfengyu.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 雪花算法分布式ID生成器\n这个项目的目的是提供一个轻量级、高并发、高可用的生成唯一ID的服务，生成的ID是一个64位的\n长整型，全局唯一，保持递增，相对有序。基于twitter的雪花算法来生成ID,用于取代UUID那种无序、128位的字符串形式的ID，提供\n一种更加高效、人性化的全局唯一ID的生成方式，目前单机CPU4核、内存8G压测的并发数可以达到\n**250万/每秒**，即每秒最多可以生成250万个唯一的ID，当然如果部署集群的话，这个数据可以\n更高。\n\u003cbr\u003e\u003cbr\u003e\n具体的教程可以参考我写的一篇文章：[基于twitter雪花算法的分布式ID —— 服务器篇](http://www.wolfbe.com/detail/201701/386.html)\n\u003cbr\u003e\u003cbr\u003e\n**温馨提示：** 各位同学在fork之前，希望能够给个star，尊重一下作者的努力。\n\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e\n## 特点\n* 基于twitter的雪花算法生成ID;\n* 基于netty框架提供通信层接入；\n* 提供HTTP和SDK两种方式接入；\n* 轻量级、高并发、易伸缩；\n* 部署简单，支持分布式部署；\n\u003cbr\u003e\n\n## 接入\n服务器支持两种方式接入：**HTTP**和**SDK**，无论哪一种方式接入，对于同一台服务器来说，调用的是同\n一个ID生成器，所以得到的ID都是递增、有序的。\n\u003cbr\u003e\u003cbr\u003e\n\n### HTTP接入\nHTTP的接入方式很简单，直接访问IP+端口即可，或者域名+端口，端口号固定为**16830**。如果你不喜欢这种带有端口号的方式，可以考虑配置Nginx来做代理转发，配置Nginx对于部署分布式ID集群也有好处，可以通过Nginx来做负载均衡。\n\u003cbr\u003e\u003cbr\u003e\n\n### SDK接入\nSDK接入前需要在自己的项目中加入SDK的jar包，SDK可以参照我的另外一个项目[DistributedID-SDK](https://github.com/beyondfengyu/DistributedID-SDK)，或者自己写一个SDK来接入，语言不限。**DistributedID-SDK**提供了同步和异步两种请求方式，如果有高并发的要求，建议使用异步请求的方式，相同的环境下异步请求的性能会比同步请求的性能更高。\n\u003cbr\u003e\u003cbr\u003e\n\n## 部署\n部署之前需要把项目源码打包成jar包，或者使用项目打包好的jar包，把jar包上传到服务器，执行如下命令：\n\u003cbr\u003e\n·java -jar distributedid.jar 1 2·\n执行上面命令指定了两个参数1和2，前面的1代表数据中心标识，后面的2代表的是机器或进程标识.\n\u003cbr\u003e\u003cbr\u003e\n\n如果不指定这两个参数，那么会使用默认的值1。如果只考虑部署单机服务器，那么可以不考虑这两个参数，**如果需要分布式集群来生成ID时，需要指定数据中心标识ID和机器进程标识ID，并且每一个服务器的数据中心标识ID和机器进程标识ID作为联合键全局唯一，这样才能保证集群生成的ID都是唯一的。**\n\u003cbr\u003e\n\u003cbr\u003e\n\n## 交流\n如果有兴趣交流Netty相关知识，可以加入**Netty联盟：379119816**\n\u003cbr\u003e\n\u003cbr\u003e\n## 赞助\n如果觉得项目还不错，想要表达些什么的话，可以上[爱淘汇：http://itao.wolfbe.com](http://itao.wolfbe.com) 领淘宝天猫的优惠券，领取优惠券再下单可以省不少钱喔。你们使用这些优惠券购买东西时，我也可以得到一些佣金的，多谢支持！！！\n\u003cbr\u003e\n\u003cbr\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbeyondfengyu%2Fdistributedid","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbeyondfengyu%2Fdistributedid","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbeyondfengyu%2Fdistributedid/lists"}