一种基于分布式系统的业务对象的处理方法和装置的制造方法_3

文档序号:9810262阅读:来源:国知局
0104]在本申请实施例的一种优选示例中,所述时间服务节点可以为分布式系统中的独立节点。例如,该时间服务节点可以为独立的服务器。
[0105]在本申请实施例的另一种优选示例中,所述时间服务节点可以包括分布式系统中集成于指定业务对象处理节点中,用于提供时间戳的时间服务模块。例如,该时间服务节点可以为数据库。
[0106]在本申请的一种优选实施例中,所述时间服务节点可以包括时间服务主节点及时间服务备份节点;其中,时间服务主节点和时间服务备份节点可以具有一致的时间信息。
[0107]则在本申请实施例中,步骤103可以包括如下子步骤:
[0108]子步骤S21,从所述时间服务主节点中提取时间戳;
[0109]子步骤S22,当从所述时间服务主节点中提取时间戳失败时,从所述时间服务备份节点中提取时间戳。
[0110]本申请实施例中,在时间服务主节点正常运行时,处理节点可以从时间服务主节点提取时间戳;在时间服务主节点出现宕机等异常运行状态时,处理节点可以时间服务备份节点中提取时间戳,以保障时间戳的正常获取。
[0111]在具体实现中,从时间服务主节点或时间服务备份节点中提取时间戳的方式为Get方式。
[0112]Get方式是向时间服务主节点或时间服务备份节点索取数据的一种请求,例如,可以执行代码select current_timestamp from dual (orale数据库的语法)向时间服务主节点或时间服务备份节点提取时间戳。
[0113]步骤104,在所生成的业务对象数据中添加所述时间戳。
[0114]在具体实现中,处理节点对业务对象的处理请求进行处理,通常会进行数据库的写操作。
[0115]伴随本次业务请求的处理过程,涉及到本次业务处理过程中需要执行的数据库操作,例如,执行SQL (Structured Query Language,结构化查询语言语句)语句,其所影响的数据库记录中用于登记时间属性的字段,可以使用该时间戳赋值。
[0116]例如,可以通过以下方式使用时间戳赋值:
[0117]insert into test_tablel values ( ‘valuel’,to_timestamp(’2014-06-2013:55:33:272659’, ’ yyyy-mm-dd hh24:m1:ss:ff'))
[0118]insert into test_table2 values ( ‘value2,,to_timestamp(’2014-06-2013:55:33:272659’, ’ yyyy-mm-dd hh24:m1:ss:ff'))
[0119]其中,to_timestamp函数为oracle数据库的时间转换函数,’ 2014-06-2013:55:33:272659’ 为时间戳,’ yyyy-mm-dd hh24:m1: ss: ff’ 为时间戳的格式。
[0120]在本申请的一种优选实施例中,所述时间戳可以存储在内存中,则在本申请实施例中,步骤104可以包括如下子步骤:
[0121]子步骤S31,从内存中提取所述时间戳;
[0122]子步骤S32,在所生成的业务对象数据中添加在内存提取的时间戳。
[0123]内存(Memory)也被称为内存储器,其作用是用于暂时存放CPU (CentralProcessing Unit,中央处理器)中的运算数据,以及与硬盘等外部存储器交换的数据。处理节点在运行中,其CPU会把需要运算的数据调到内存中进行运算,当运算完成后CPU再将结果传送出来。
[0124]本申请实施例中的时间戳可以不覆盖本地系统时间,而存储在内存中,避免了因为覆盖本地系统时间所引起的不同处理节点时间之间存在细微差异的问题,进一步提高了处理节点之间时间信息的一致性,同时内存技术提高了时间戳的读取和写入速度,提升处理节点的处理效率。
[0125]本申请实施例在分布式系统中的业务对象处理节点中按照业务对象的处理请求中数据处理信息生成业务对象数据,根据处理请求中的时间获取信息从分布式系统中的时间服务节点中提取时间戳,以及在所生成的业务对象数据中添加所述时间戳,而对于单个时间服务节点,无论其本身的时间是否绝对精准,如与格林威治时间是否绝对一致,但是其时间戳具有强一致性、强连续性的特征,分布式系统环境下的处理节点遵从该时间服务节点的授时,避免了因为提供时间服务的不同机器之间的原子时钟不同而造成处理节点之间时间存在细微的差异的问题,提高了处理节点之间时间信息的一致性,以保证各业务对象的处理时间的顺序正确。
[0126]此外,在分布式系统中的应用系统本身对数据库的强依赖下,业务操作通常是伴随着数据库写入的,有查询、新增、修改等操作,一次业务操作会有多次数据库写入,所以多一次时间戳获取并不会有明显开销导致降低性能,保证了获取当前时间戳性能开销的可控性。
[0127]在本申请的一种优选实施例中,所述业务对象数据可以具有业务对象数据标识,所述方法还可以包括如下步骤:
[0128]步骤105,将所述时间戳和所述业务对象数据标识进行数据映射。
[0129]业务对象数据标识可以为识别该业务对象数据的信息,可以包括用户信息(如用户ID)、业务对象信息(如业务对象ID)、处理信息(如交易流水号)等等。
[0130]例如,建立映射关系可以为2014.08.08.12:00:000000 (时间)-123456 (某次业务处理的流水号,即业务对象数据标识)。
[0131]常见的业务对象数据核对机制,一般是定期(核对周期)的,如一周、一天、一个小时等,核对周期可以根据业务对象所产生的数据量规模,以及核对周期在业务设计上是否允许,比如,核对双方可以按照一天一次的核对周期进行。
[0132]在业务对象数据核对开始时可以先选定一个时间范围,比如核对双方选取2014.08.08.11:30:000000-2014.08.08.12:30:000000 这个时间段内的业务对象数据进行核对,则核对双方从数据库按这个时间段提取业务对象数据,将提取的业务对象数据逐笔核对,该核对可以根据双方的业务对象标识进行关联核对,例如,核对业务对象状态(如出货、退货等)、单据号、金额、买家信息、卖家信息等信息。
[0133]本申请实施例将时间戳和业务对象数据标识进行数据映射,在业务对象数据核对时,基于时间戳的一致性,保证了业务对象数据顺序的一致性,保证了在业务对象数据核对的时候,根据时间(如自然日)硬性切分的安全性。
[0134]参照图2,示出了本申请的一种基于分布式系统的业务对象的处理方法实施例2的步骤流程图,具体可以包括如下步骤:
[0135]步骤201,在分布式系统中的第一业务对象处理节点中接收第二业务处理节点发送的业务对象的第二处理请求;所述第二处理请求中包括数据处理信息和时间戳;
[0136]步骤202,根据所述数据处理信息生成业务对象数据;
[0137]步骤203,在所生成的业务对象数据中添加所述时间戳;
[0138]其中,所述时间戳为所述第二业务处理节点在接收到业务对象的第三处理请求时,从分布式系统中的时间服务节点中提取的时间戳。
[0139]本申请实施例中,对于同一个业务请求,可以生成多个业务对象数据。例如,对于同一次商品交易操作,可以生成trade (交易数据),以及与trade (交易数据)关联的trade_goods (商品数据)、trade_shipping (物流数据)等多条业务对象数据。
[0140]第三业务处理请求可以为第二业务处理节点接收到的,首次进行业务处理的请求。
[0141]通常,该第三业务请求可以包括数据处理信息、时间获取信息。
[0142]其中一些业务对象数据可以在第二业务对象处理节点中根据部分的数据处理信息生成,而另外一些业务对象数据,由于时效性要求不高等原因,可以在第一业务对象处理节点中根据部分的数据处理信息生成。
[0143]第二业务对象处理节点在检测到时间获取信息时,可以从分布式系统中的时间服务节点中提取时间戳。
[0144]第二业务处理请求可以为第一业务处理节点接收到的,非首次进行业务处理的请求,具体可以由第二业务对象处理节点发出。
[0145]第二业务对象处理节点发送至第一业务对象处理节点的时间戳可以与第二处理请求是绑定的,第一业务对象处理节点不再去时间服务节点提取时间戳,而是以该第二业务对象处理节点发送时间戳生成业务对象数据。
[0146]在本申请实施
当前第3页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1