一种生成金融数据交换消息唯一包ID的算法的制作方法

文档序号:11156991阅读:407来源:国知局

本发明涉及生成交换消息唯一包ID的算,尤其涉及一种生成金融数据交换消息唯一包ID的算法。



背景技术:

在Windows操作系统下,系统本身提供了一种GUID的算法,可以通过COM接口CoCreateGuid函数取得。在Linux下,也可以通过第三方的库实现UUID的功能。但以上两种方法都有自身的缺陷,无法在金融数据交换平台中使用。

在现有Windows操作系统下,系统本身提供了一种GUID的算法,可以通过COM接口CoCreateGuid函数取得。但是该技术方法有一个重要的缺陷是,在一秒钟内只能生成一个唯一的GUID,如果在同一秒内生成多个GUID,则该GUID会重复。由于在金融数据交换系统中,一秒钟需要处理几十万个不同的消息包,每一个包ID都不允许重复,显然一秒钟只能生成一个包ID的算法是不能满足需求的。另外,金融数据交换平台要求在多个不同平台下运行,比如Windows、Linux、AIX、HP-UX等,某一个操作系统提供的算法无法移植到其它操作系统,因此需要发明一种新的算法,能在常用各种操作系统(Windows、Linux、AIX、HP-UX)上通用的算法,同时保证在整个系统内,一秒内百万个以内消息包ID的唯一性。



技术实现要素:

为了解决现有技术中的问题,本发明提供了一种生成金融数据交换消息唯一包ID的算法。

本发明提供了一种生成金融数据交换消息唯一包ID的算法,通过以下部分生成金融数据交换消息唯一包ID:

生成包ID的计算机网卡MAC地址;

生成包ID的计算机的本地时间;

进程PID;

累加数;

增加本地指针的字段。

作为本发明的进一步改进,所述本地时间精确到秒。

作为本发明的进一步改进,将所述金融数据交换消息唯一包ID转换为Base64格式进行编码。

本发明的有益效果是:通过上述方案,能在常用各种操作系统(Windows、Linux、AIX、HP-UX)上通用的算法,同时保证在整个系统内,一秒内百万个以内消息包ID的唯一性。

具体实施方式

下面通过具体实施方式对本发明进一步说明。

为了保证整个系统内,消息包ID的唯一性,首先需要考虑系统的特点。金融数据交换平台的特点是:

(1)分布式系统,消息包ID的生成位于各个不同的客户端机器或服务端计算机上,因此,需要在保证在任意一台计算机上生成的包ID不同。

(2)多进程,每一个客户端程序或服务端程序都是多进程的,也就是说,需要避免在同一个时刻,生成多个包ID重复的问题。

(3)常见操作系统上可移植。

因此,为了生成唯一包ID,需要在空间和时间上都唯一,亦即保证在不同的计算机上,同一时刻,生成的包ID唯一。从这个思路出发,发明的一种生成金融数据交换消息唯一包ID的算法,由以下几个部分组成:

(1)生成包ID的计算机网卡MAC地址。通过该字段,保证了在不同的计算机上生成的包ID肯定是不同的。即在空间上唯一。

(2)生成包ID的计算机的本地时间。该本地时间需要精确到秒。

(3)进程PID。在同一个时刻,同一台计算机内进程PID是唯一的。

(4)累加数:累加数的目的是保证在同一秒内,同一台计算机内同一个进程PID生成几十万个包ID的值是不同的。

(5)由于在金融数据交换平台中,以上算法也将封装到一个动态库中供客户调用。由于客户调用本接口的方式可能是不确定的,也可能千奇百怪,甚至是用法错误的。为了避免本算法被多个不同接口调用多次的情况,兼容客户可能产生的错误,因此,在算法中增加本地指针的字段,通过这个字段,即使使用者使用不正确的方式调用,都可以得到正确的结果。

通过以上算法中的五个字段的组合,可以得到一个唯一的包ID。在具体实践过程中,为了避免以上字段过长,可以将以上数据转换为Base64格式进行编码,以缩短包ID长度,提高在数据传输中的效率。

本发明提供的一种生成金融数据交换消息唯一包ID的算法,为满足证券、银行等金融行业机构件对金融数据交换的需求,加速金融数据交换平台的推广应用;促进金融行业的业务协议的标准化;促进金融行业的各项业务发展与创新。本发明提供的一种生成金融数据交换消息唯一包ID的算法,已经应用在金融数据交换平台产品中,也可以应用到其它消息交换中间件系统中。

以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1