分布式惟一ID生成服务

      SNService是一款基于分布式的惟一ID生成服务,主要用于提供大数量业务数据创建惟一ID的须要;服务提供最低10K/s的惟一ID请求处理.若是你部署服务的CPU资源达到4核的状况下那该服务最低能够提供100K/s的请求处理能力.服务支持部署到Linux mono 3.2.3和Windows .Net4.0windows

ID生成规则

      服务生成的ID是64位无符号长整型,其中48位是现有时间和2013年1月1日时间差的毫秒数,另外16位则是针对当前毫秒的递增值.即每毫秒支持6万多个惟一ID生成,每秒则支持多达6千万个ID生成.这个数量级足能够知足大部份的须要.服务器

        

      为了保证全部服务器上的业务数据获取得全局惟一ID,因此经过服务的方式提供.若是考虑更大的获取量和服务的可靠性,能够部署两台ID生成服务,分别生成序列为奇和偶数,应用端经过虚拟IP指向便可.网络

        

      能够经过修改如下配置项来肯定递增值的起始和步增加值并发

<sNServiceSection xmlns="urn:IKende.com.SNService">
    <sequence start="1" step="1"/>
  </sNServiceSection>

      若是生成规则不知足须要,则能够自行修改ID生成方式分布式

部署服务

      服务是经过TCP的方式提供访问,分别提供Console和windows service两种方式来加载服务.能够经过修改如下配置来改动服务监听的IP和端口,默认状况下是监听本机全部IP和8088端口.spa

<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目录查看日志..net

      [注意:因为ID是经过时间截来处理,因此在部署前须要同步一下网络时间,保证之后即便服务重启也不会致使ID生成上出现问题.]日志

调用

      服务经过TCP方式提供,因此只须要TCP接入到相关服务并发送GETSN指令,服务便可响应BYTE[8]ulong的数据.若是是使用.NET访问那能够引用IKende.com.SNService.dll.,经过如下代码来获取惟一ID.code

private static IKende.com.SNService.Api.SNClient client=new Api.SNClient("127.0.0.1", 8088);

ulong value = client.GetValue();

下载服务源代码server

相关文章
相关标签/搜索