SNService是一款基於分佈式的惟一ID生成服務,主要用於提供大數量業務數據創建惟一ID的須要;服務提供最低10K/s的惟一ID請求處理.若是你部署服務的CPU資源達到4核的狀況下那該服務最低能夠提供100K/s的請求處理能力.服務支持部署到Linux mono 3.2.3和Windows .Net4.0windows
服務生成的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