分布式的唯一ID生成服务
2013-12-01 13:28
351 查看
SNService是一款基于分布式的唯一ID生成服务,主要用于提供大数量业务数据建立唯一ID的需要;服务提供最低10K/s的唯一ID请求处理.如果你部署服务的CPU资源达到4核的情况下那该服务最低可以提供100K/s的请求处理能力.服务支持部署到Linux mono 3.2.3和Windows .Net4.0
![](http://img1.51cto.com/attachment/201312/132535319.jpg)
为了保证所有服务器上的业务数据获取得全局唯一ID,所以通过服务的方式提供.如果考虑更大的获取量和服务的可靠性,可以部署两台ID生成服务,分别生成序列为奇和偶数,应用端通过虚拟IP指向即可.
![](http://img1.51cto.com/attachment/201312/132537102.jpg)
可以通过修改以下配置项来确定递增值的起始和步增长值
本文出自 “ikende .net组件库” 博客,转载请与作者联系!
ID生成规则
服务生成的ID是64位无符号长整型,其中48位是现有时间和2013年1月1日时间差的毫秒数,另外16位则是针对当前毫秒的递增值.即每毫秒支持6万多个唯一ID生成,每秒则支持多达6千万个ID生成.这个数量级足可以满足大部份的需要.![](http://img1.51cto.com/attachment/201312/132535319.jpg)
为了保证所有服务器上的业务数据获取得全局唯一ID,所以通过服务的方式提供.如果考虑更大的获取量和服务的可靠性,可以部署两台ID生成服务,分别生成序列为奇和偶数,应用端通过虚拟IP指向即可.
![](http://img1.51cto.com/attachment/201312/132537102.jpg)
可以通过修改以下配置项来确定递增值的起始和步增长值
<sNServiceSection xmlns="urn:IKende.com.SNService"> <sequence start="1" step="1"/> </sNServiceSection>如果生成规则不满足需要,则可以自行修改ID生成方式
部署服务
服务是通过TCP的方式提供访问,分别提供Console和windows service两种方式来加载服务.可以通过修改以下配置来改动服务监听的IP和端口,默认情况下是监听本机所有IP和8088端口.<serverSection xmlns="urn:Beetle.Express"> <listens> <add name="SN_SERVER" type="TCP" port="8088" handler="IKende.com.SNService.SNServer,IKende.com.SNService" syncSend="true" useReceiveQueue="false" useSendQueue="false"/> </listens> </serverSection>服务的执行情况可以通过程序或服务目录下的log目录查看日志. [注意:由于ID是通过时间截来处理,所以在部署前需要同步一下网络时间,保证以后即使服务重启也不会导致ID生成上出现问题.]
调用
服务通过TCP方式提供,所以只需要TCP接入到相关服务并发送GETSN指令,服务即可响应BYTE[8]ulong的数据.如果是使用.NET访问那可以引用IKende.com.SNService.dll.,通过以下代码来获取唯一ID.private static IKende.com.SNService.Api.SNClient client=new Api.SNClient("127.0.0.1", 8088); ulong value = client.GetValue();下载服务源代码
本文出自 “ikende .net组件库” 博客,转载请与作者联系!
相关文章推荐
- 分布式唯一ID生成服务
- 分布式唯一ID生成服务
- java-高并发-高并发分布式系统中生成全局唯一Id汇总
- 如何在高并发分布式系统中生成全局唯一Id
- 高并发 sql 生成不重复编号 (订单号) & 如何在高并发分布式系统中生成全局唯一Id
- 如何在高并发分布式系统中生成全局唯一Id
- 高并发分布式系统中生成全局唯一Id汇总
- 市面上分布式系统生成唯一ID的方式收集与整理
- 从零到日志采集索引可视化、监控报警、rpc trace跟踪-分布式唯一ID生成
- 在高并发分布式系统中生成全局唯一Id
- 如何在高并发分布式系统中生成全局唯一Id
- 如何在高并发分布式系统中生成全局唯一Id(转)
- Golang分布式ID生成服务
- 如何在高并发分布式系统中生成全局唯一Id
- 高并发 sql 生成不重复编号 (订单号) & 如何在高并发分布式系统中生成全局唯一Id
- Ticket 服务: 一种经济的分布式唯一主键生成方案
- 分布式系统唯一ID生成
- 高并发分布式系统中生成全局唯一Id汇总
- 分布式系统唯一ID生成方案汇总
- 分布式系统唯一ID生成方案汇总