• 分布式唯一ID生成服务


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

    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端口.

    <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();

    下载服务源代码

  • 相关阅读:
    dubbo的防痴呆设计
    dubbo设计实现的健壮性
    Dubbo配置设计
    一些设计上的常识
    如何使用sqlalchemy获取某年某月的数据总和
    使用datatables实现后台分页功能,减轻前端渲染压力
    datatable使用介绍
    ssh远程执行nohup命令不退出
    ssh 执行多条命令包含awk的用法
    sys.argv的妙用:python命令行参数列表的修改、增加、删除
  • 原文地址:https://www.cnblogs.com/smark/p/3453528.html
Copyright © 2020-2023  润新知