CN110333944B - 话单数据业务处理方法及设备 - Google Patents
话单数据业务处理方法及设备 Download PDFInfo
- Publication number
- CN110333944B CN110333944B CN201910318117.7A CN201910318117A CN110333944B CN 110333944 B CN110333944 B CN 110333944B CN 201910318117 A CN201910318117 A CN 201910318117A CN 110333944 B CN110333944 B CN 110333944B
- Authority
- CN
- China
- Prior art keywords
- data
- ticket data
- hash value
- application program
- routing table
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000003672 processing method Methods 0.000 title claims description 8
- 238000012545 processing Methods 0.000 claims abstract description 109
- 238000000034 method Methods 0.000 claims abstract description 39
- 238000001514 detection method Methods 0.000 claims description 8
- 230000007246 mechanism Effects 0.000 claims description 7
- 238000013507 mapping Methods 0.000 claims description 5
- 238000013461 design Methods 0.000 description 19
- 238000010586 diagram Methods 0.000 description 10
- 230000008569 process Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000003247 decreasing effect Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000008602 contraction Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003203 everyday effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04M—TELEPHONIC COMMUNICATION
- H04M3/00—Automatic or semi-automatic exchanges
- H04M3/22—Arrangements for supervision, monitoring or testing
- H04M3/2218—Call detail recording
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Signal Processing (AREA)
- Telephonic Communication Services (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明实施例提供一种话单数据业务处理方法及设备,该方法包括:检测预设的数据路由表是否发生变化,其中数据路由表包含多个应用程序节点的标识以及各应用程序节点所负责的哈希值区间,若数据路由表发生变化,则获取话单数据,并判断话单数据中是否存在交叉数据,其中话单数据对应的哈希值在自身所负责的哈希值区间内,交叉数据对应的哈希值至少在两个应用程序节点所负责的哈希值区间内,若话单数据中不存在交叉数据,则对话单数据进行业务处理,无需在对话单数据进行业务处理时,对其进行加锁,可直接对话单数据进行业务处理,提高话单数据处理的效率。
Description
技术领域
本发明实施例涉及计算机技术领域,尤其涉及一种话单数据业务处理方法及设备。
背景技术
随着通信技术的快速发展,业务支撑系统(Business Support System,简称BSS)每天需要对高达几百亿的话单(通话、上网、短信等记录)数据进行计费等业务处理。为了加快话单数据的业务处理效率,一般是通过多个应用程序并发处理话单数据,而当并发处理话单数据时,需要先确定应用程序所负责处理的话单数据,一般是先对话单数据进行取模处理,得到对应的数值,然后基于话单数据对应的数值,将话单数据映射到某个应用程序上,即该应用程序负责处理该话单数据,并在路由表上记录应用程序所负责处理的话单数据对应的数值。当添加并发的应用程序后,一些话单数据可能会同时被多个应用程序进行处理,出现数据不一致的问题。
现有技术中,在对话单数据进行业务处理过程中,为了避免出现数据不一致的问题,负责处理的应用程序一般会先对待处理的话单数据进行加锁,然后再对其进行业务处理,当对话单数据处理完毕后,再进行解锁。
然而,发明人发现现有技术至少存在以下技术问题:当处理话单数据时,应用程序需要对话单数据进行加锁,解锁,处理步骤繁琐,话单数据处理效率低。
发明内容
本发明实施例提供一种话单数据业务处理方法及设备,以解决现有技术中话单数据处理效率低的问题。
第一方面,本发明实施例提供一种话单数据业务处理方法,包括:
检测预设的数据路由表是否发生变化,其中所述数据路由表包含多个应用程序节点的标识以及各应用程序节点所负责的哈希值区间;
若所述数据路由表发生变化,则获取话单数据,并判断所述话单数据中是否存在交叉数据,其中所述话单数据对应的哈希值在自身所负责的哈希值区间内,所述交叉数据对应的哈希值至少在两个应用程序节点所负责的哈希值区间内;
若所述话单数据中不存在交叉数据,则对所述话单数据进行业务处理。
在一种可能的设计中,所述检测预设的数据路由表是否发生变化,包括:
若所述数据路由表包含的应用程序节点的标识的数量发生变化和/或各应用程序节点所负责的哈希值区间发生变化,则确定所述数据路由表发生变化;
若所述数据路由表包含的应用程序节点的标识的数量未发生变化以及各应用程序节点所负责的哈希值区间未发生变化,则确定所述数据路由表未发生变化。
在所述检测预设的数据路由表是否发生变化之后,还包括:
若所述数据路由表未发生变化,则对所述话单数据进行业务处理。
在一种可能的设计中,所述方法还包括:
若存在待添加的应用程序节点,则为所述待添加的应用程序节点分配预设数量的虚拟节点;
获取所述待添加的应用程序节点对应的关键字,并根据所述待添加的应用程序节点对应的关键字生成各虚拟节点对应的关键字;
分别对所述各虚拟节点对应的关键字进行哈希计算,得到各虚拟节点对应的哈希值;
根据各虚拟节点对应的哈希值,将各虚拟节点映射到预设的哈希环上,并确定各虚拟节点所负责的哈希值区间,其中所述哈希环由多个哈希值组成;
对各虚拟节点所负责的哈希值区间进行组合,得到所述待添加的应用程序节点所负责的哈希值区间。
在一种可能的设计中,在所述检测预设的数据路由表是否发生变化之前,还包括:
获取话单数据集合及对应的关键字段,其中所述话单数据集合包含多条话单数据;
分别对每条话单数据包含的关键字段的具体值进行哈希计算,得到每条话单数据对应的哈希值,并确定每条话单数据对应的哈希值所属的哈希值区间。
在一种可能的设计中,在所述判断所述话单数据中是否存在交叉数据之后,还包括:
若所述话单数据中存在交叉数据,则切换到乐观锁模式,并对所述话单数据进行业务处理。
在一种可能的设计中,所述切换到乐观锁模式,并对所述话单数据进行业务处理,包括:
获取当前待处理的话单数据;
若当前待处理的话单数据为交叉数据,则根据乐观锁机制,对所述当前待处理的话单数据进行业务处理。
第二方面,本发明实施例提供一种话单数据业务处理设备,包括:
路由表检测模块,用于检测预设的数据路由表是否发生变化,其中所述数据路由表包含多个应用程序节点的标识以及各应用程序节点所负责的哈希值区间;
第一数据处理模块,用于若所述数据路由表发生变化,则获取话单数据,并判断所述话单数据中是否存在交叉数据,其中所述话单数据对应的哈希值在自身所负责的哈希值区间内,所述交叉数据对应的哈希值至少在两个应用程序节点所负责的哈希值区间内;
业务处理模块,用于若所述话单数据中不存在交叉数据,则对所述话单数据进行业务处理。
在一种可能的设计中,所述路由表检测模块具体用于:
若所述数据路由表包含的应用程序节点的标识的数量发生变化和/或各应用程序节点所负责的哈希值区间发生变化,则确定所述数据路由表发生变化;
若所述数据路由表包含的应用程序节点的标识的数量未发生变化以及各应用程序节点所负责的哈希值区间未发生变化,则确定所述数据路由表未发生变化。
在一种可能的设计中,还包括第二数据处理模块;
所述第二数据处理模块,用于在所述检测预设的数据路由表是否发生变化之后,若所述数据路由表未发生变化,则对所述话单数据进行业务处理。
在一种可能的设计中,还包括节点添加模块;
所述节点添加模块,用于若存在待添加的应用程序节点,则为所述待添加的应用程序节点分配预设数量的虚拟节点;
获取所述待添加的应用程序节点对应的关键字,并根据所述待添加的应用程序节点对应的关键字生成各虚拟节点对应的关键字;
分别对所述各虚拟节点对应的关键字进行哈希计算,得到各虚拟节点对应的哈希值;
根据各虚拟节点对应的哈希值,将各虚拟节点映射到预设的哈希环上,并确定各虚拟节点所负责的哈希值区间,其中所述哈希环由多个哈希值组成;
对各虚拟节点所负责的哈希值区间进行组合,得到所述待添加的应用程序节点所负责的哈希值区间。
在一种可能的设计中,路由表检测模块还用于:在所述检测预设的数据路由表是否发生变化之前,获取话单数据集合及对应的关键字段,其中所述话单数据集合包含多条话单数据;分别对每条话单数据包含的关键字段的具体值进行哈希计算,得到每条话单数据对应的哈希值,并确定每条话单数据对应的哈希值所属的哈希值区间。
在一种可能的设计中,所述业务处理模块还用于:在所述判断所述话单数据中是否存在交叉数据之后,若所述话单数据中存在交叉数据,则切换到乐观锁模式,并对所述话单数据进行业务处理。
在一种可能的设计中,所述业务处理模块具体用于:获取当前待处理的话单数据;若当前待处理的话单数据为交叉数据,则根据乐观锁机制,对所述当前待处理的话单数据进行业务处理。
第三方面,本发明实施例提供一种话单数据业务处理设备,包括:至少一个处理器和存储器;
所述存储器存储计算机执行指令;
所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行如上第一方面以及第一方面各种可能的设计所述的话单数据业务处理方法。
第四方面,本发明实施例提供一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如上第一方面以及第一方面各种可能的设计所述的话单数据业务处理方法。
本实施例提供的话单数据业务处理方法及设备,该方法通过检测数据路由表是否发生变化,当检测出数据路由表发生变化,获取哈希值在自身所负责的哈希值区间内的话单数据,判断获取到的话单数据是否存在交叉数据,若不存在交叉数据,表示在处理话单数据时,不会出现由于数据不一致导致发生事务冲突的问题,则直接对话单数据进行业务处理,无需对其进行加锁以保障数据一致性,提高对话单数据进行业务处理的效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一致性哈希扩容的示意图;
图2为本发明实施例提供的话单数据业务处理方法的流程示意图一;
图3为本发明实施例提供的话单数据业务处理方法的流程示意图二;
图4为本发明实施例提供的话单数据业务处理设备的结构示意图一;
图5为本发明实施例提供的话单数据业务处理设备的结构示意图二;
图6为本发明实施例提供的话单数据业务处理设备的硬件结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明实施例提供的一致性哈希扩容的示意图。如图1所示,本实施例提供的是进行扩容前的哈希环以及扩容后的哈希环。数据路由表包括哈希环上的节点对应的应用程序节点的标识以及各应用程序节点所负责的哈希值区间。当哈希环包含的节点的数目或节点所负责的哈希值区间发生变化时,数据路由表也会进行更新。
哈希环上的各个节点都存在自身所负责的哈希值区间,按照顺时针方向,哈希环上的各个哈希值与所属的节点距离最近,从而确定出哈希环上的各个节点所负责的哈希值区间,例如,扩容前的哈希环上的节点1所负责的哈希值区间包括区间1、2、3和4,每个哈希值区间由多个哈希值组成。
哈希环上的节点都有对应的应用程序节点,应用程序节点所负责的哈希区间由对应的各个节点所负责的哈希值区间组成,各个应用程序节点可处理的话单数据为各自所负责的哈希值区间内的哈希值对应的话单数据,即话单数据的哈希值在应用程序节点所负责的哈希值区间内。
为了使应用程序节点可以均匀分布在哈希环上,在哈希环上添加新的应用程序节点时,可以采用虚拟节点的方式,为新的应用程序节点分配若干个虚拟节点,并将新的应用程序节点对应的多个虚拟节点映射到哈希环上,以使各个虚拟节点均匀分布在哈希环上,从而使哈希环上的各虚拟节点所负责的哈希数值空间均匀,实现负载平衡,例如,哈希环上的4个节点5均为应用程序节点5的虚拟节点,其均匀分布在哈希环上。
当进行扩容或缩容(即,哈希环上的应用程序节点增加或减少)后,哈希环上的各节点所负责的哈希值区间会发生改变,从而各应用程序节点所负责的哈希值区间也会发生改变,可能会出现数据重分布,应用程序节点各自可处理的话单数据可能会存在重叠,即可能会存在交叉数据,例如,应用程序节点1所负责的哈希区间包括区间4,应用程序节点5所负责的哈希区间也包括区间4,哈希值在区间4内的话单数据便为交叉数据。
当各应用程序节点可处理的话单数据不包含交叉数据时,即表明不会发生事务冲突,可直接对可处理的话单数据进行相关业务处理,当存在应用程序节点可处理的话单数据包含交叉数据时,则该应用程序节点为了保证数据一致性,需要按照相关规则对其进行业务处理,避免发生事务冲突。下面采用详细的实施例进行详细说明。
图2为本发明实施例提供的话单数据业务处理方法的流程示意图一,本实施例的执行主体可以为图1所示实施例中的哈希环上的节点对应的应用程序节点,本实施例此处不做特别限制。如图2所示,该方法包括:
S201、检测预设的数据路由表是否发生变化,其中数据路由表包含多个应用程序节点的标识以及各应用程序节点所负责的哈希值区间。
在本实施例中,数据路由表包括并发的应用程序节点的标识以及各应用程序节点所负责的哈希值区间,各应用程序节点可处理的话单数据的哈希值在各应用程序节点自身所负责的哈希值区间内,例如,图1中的应用程序节点1所负责的哈希值区间包括区间1,哈希值在区间1内的话单数据由应用程序节点1负负处理。
具体地,若数据路由表未发生变化,则对话单数据进行业务处理。
在本实施例中,当应用程序节点启动后,即需要处理话单数据时,先检测预设的数据路由表是否发生变化,若数据路由表未发生变化,则表示该应用程序处理可处理的话单数据时不会发生事务冲突,可直接对可处理的话单数据进行业务处理,无需对其进行加锁后处理。
当判断出话单数据中不存在交叉数据后,也可对话单数据进行批量业务处理,提高对海量数据的处理效率。
具体地,检测预设的数据路由表是否发生变化包括:若数据路由表包含的应用程序节点的标识的数量发生变化和/或各应用程序节点所负责的哈希值区间发生变化,则确定数据路由表发生变化。若数据路由表包含的应用程序节点的标识的数量未发生变化以及各应用程序节点所负责的哈希值区间未发生变化,则确定数据路由表未发生变化。
当进行扩容或缩容(即,添加新的并发的应用程序节点或减少已有的并发的应用程序节点)后,数据路由表包含的应用程序节点的标识的数量会相应增加或减少,数据路由表发生变化。
当哈希环上的节点所负责的哈希值区间发生变化后,节点所对应的应用程序节点所负责的哈希值区间也会发生变化,则包含各应用程序节点所负责的哈希值区间的数据路由表也会相应发生变化。
具体地,在S201之前还包括:获取话单数据集合及对应的关键字段,其中话单数据集合包含多条话单数据。分别对每条话单数据包含的关键字段的具体值进行哈希计算,得到每条话单数据对应的哈希值,并确定每条话单数据对应的哈希值所属的哈希值区间。
在本实施例中,基于话单数据包含的关键字段的具体值计算对应的话单数据的哈希值,根据话单数据的哈希值将话单数据路由到相应的应用程序节点,即确定出负责处理该话单数据的应用程序节点,实现负载均衡。
其中,话单数据的关键字段是可以标识话单数据的字段,具有唯一性,例如,用户编号。
S202、若数据路由表发生变化,则获取话单数据,并判断话单数据中是否存在交叉数据,其中话单数据对应的哈希值在自身所负责的哈希值区间内,交叉数据对应的哈希值至少在两个应用程序节点所负责的哈希值区间内。
当一个事务正在访问数据,并且对数据进行修改,而这种修改还没有提交,这时,另外一个事务也访问这个数据,然后使用这个数据。由于这个数据是还没有提交的数据,那么另外一个事务读到的这个数据是未修改的数据,即读到的这个数据是脏数据,出现数据不一致,依据脏数据所做的操作可能是不正确的,即可能会发生事务冲突。
在本实施例中,当数据路由表包含的应用程序节点的标识的数量发生变化,则表示并发的应用程序节点的数目增加或减少,相应地,哈希环上的节点的数目也会发生变化,各节点所负责的哈希值区间会相应发生变化,最终,使发生变化后的数据路由表包含的各应用程序节点所负责的哈希值区间发生变化,可能会出现数据重分布的问题,即可能会存在被多个应用程序节点处理的交叉数据,因此,当数据路由表发生变化后,需要判断应用程序节点自身可处理的话单数据中是否存在交叉数据。
具体地,若话单数据中存在交叉数据,则切换到乐观锁模式,并对话单数据进行业务处理。
当判断出话单数据中存在交叉数据后,表示自身可处理的话单数据中存在也可被其它应用程序节点处理的数据,为了保证数据一致性,避免发生事务冲突,切换到乐观锁模式,然后对话单数据进行相关业务处理。
其中,切换到乐观锁模式,并对话单数据进行业务处理具体包括:获取当前待处理的话单数据。若当前待处理的话单数据为交叉数据,则根据乐观锁机制,对当前待处理的话单数据进行业务处理。
在本实施例中,应用程序节点获取当前待处理的话单数据,判断当前待处理的话单数据是否存在交叉数据,若存在交叉数据,表示对待处理的话单数据进行业务处理时,可能会发生事务冲突,需要根据乐观锁机制,对待处理的话单数据进行业务处理以保证数据一致性,避免发生事务冲突。
其中,该应用程序节点的可处理的话单数据包含当前待处理的话单数据。
其中,乐观锁机制表示每次去取话单数据的时候总认为不会有其他应用程序节点对话单数据进行修改,因此不会上锁,但是在更新时会判断其它应用程序在这之前有没有对话单数据进行修改。
具体地,一般会使用版本号判断其它应用程序在这之前有没有对数据进行修改,即在数据表中加上一个版本号字段,表示话单数据被修改的次数,当话单数据被修改时,相应的版本号值会加一。当应用程序要更新话单数据的值时,在读取话单数据的同时也会读取版本号值,在提交更新时,若刚才读取到的版本号值与当前数据库中的版本号值相等时才更新,否则重试更新操作,直到更新成功。
其中,可以通过判断当前待处理的话单数据对应的哈希值是否为交叉数据对应的哈希值的方式判断待处理的话单数据中是否存在交叉数据。
S203、若话单数据中不存在交叉数据,则对话单数据进行业务处理。
在本实施例中,当判断出哈希值在应用程序节点自身所负责的哈希值区间内的话单数据中不存在交叉数据,表示在处理该话单数据时不会发生事务冲突,直接可以对该话单数据进行相应的业务处理,无需对话单数据进行加锁以保证数据一致。
其中,业务处理包括用户使用流量统计处理、计费处理等。
当判断出话单数据中不存在交叉数据后,也可对话单数据进行批量业务处理,提高对海量数据的处理效率。
在一种可能的设计中,处理话单数据的服务也可按照上述应用程序节点处理话单数据的过程对话单数据进行业务处理,在此不再进行赘述。
从上述描述可知,通过检测数据路由表是否发生变化,当检测出数据路由表发生变化,获取哈希值在自身所负责的哈希值区间内的话单数据,判断获取到的话单数据是否存在交叉数据,若不存在交叉数据,表示在处理话单数据时,不会出现由于数据不一致导致发生事务冲突的问题,则直接对话单数据进行业务处理,无需对其进行加锁以保障数据一致性,提高对话单数据进行业务处理的效率。
图3为本发明实施例提供的话单数据业务处理方法的流程示意图二,本实施例在图2实施例的基础上,对本实施例的具体实现过程进行了详细说明。如图3所示,该方法包括:
S301、若存在待添加的应用程序节点,则为待添加的应用程序节点分配预设数量的虚拟节点。
在本实施例中,当需要增加并发的应用程序时,即需在添加新的应用程序节点时,为待添加的应用程序节点分配预设数量的虚拟节点,使虚拟节点均匀分别在哈希环上,以使哈希环上的各虚拟节点所负责哈希值区间不会过大或过小。
S302、获取待添加的应用程序节点对应的关键字,并根据待添加的应用程序节点对应的关键字生成各虚拟节点对应的关键字。
在本实施例中,虚拟节点的关键字与对应的应用程序节点的关键字相关,获取待添加的应用程序节点对应的关键字,并基于待添加的应用程序节点对应的关键字生成对应的各虚拟节点对应的关键字。
其中,应用程序节点的关键字可以为应用程序节点的编号或名称等可以标识应用程序节点的信息,具有唯一性。
其中,可以通过在应用程序节点的关键字之后加后缀或者在应用程序节点的关键字之前加前缀的方式得到各虚拟节点对应的关键字,其中后缀或前缀可以包括字母、数字和/或符号。例如,待添加的应用程序节点对应的虚拟节点有两个,分别为虚拟节点a和虚拟节点b,待添加的应用程序的关键字为A,则虚拟节点a的关键字可以为A#1,虚拟节点b的关键字可以为A#2,即分别通过在待添加的应用节点的关键字后面加后缀的方式得到虚拟节点a和虚拟节点b的关键字。
S303、分别对各虚拟节点对应的关键字进行哈希计算,得到各虚拟节点对应的哈希值。
在本实施例中,获取预设的哈希函数,并利用预设的哈希函数对各个虚拟节点对应的关键字进行计算,得到各虚拟节点对应的哈希值。
具体地,为了使虚拟节点能够尽可能的均匀分布在哈希环上,利用hash(s)%N=s1计算得到各个虚拟节点对应的哈希值,其中,hash()为预设的哈希函数,s为各个虚拟节点对应的关键字,s1为虚拟节点对应的哈希值,N为预设的程序最大并发数。通过hash(s)%N计算得到的各虚拟节点对应的哈希值可以使虚拟节点均匀分布在哈希环上,实现虚拟节点的负载均衡,即各个虚拟节点负责的话单数据比较均衡。
其中,预设的程序最大并发数为应用程序节点的最大并发数,是开发人员采取虚拟规划方式,规划出未来应用程序的最大并发数。
S304、根据各虚拟节点对应的哈希值,将各虚拟节点映射到预设的哈希环上,并确定各虚拟节点所负责的哈希值区间,其中哈希环由多个哈希值组成。
在本实施例中,基于各虚拟节点对应的哈希值,将各虚拟节点映射到哈希环上,例如,图1中的根据4个节点5对对的哈希值,将4个节点5分别映射到哈希环上的对应位置。
在本实施例中,按照预设方向(例如,顺时针方向),确定哈希环上的各个哈希值所属的节点,哈希值与所属的节点距离最近,从而确定出哈希环上的各个节点所负责的哈希值区间。例如,图1中的节点1负责的哈希值区间包括区间1,即哈希值区间1中的哈希值所属的节点为节点1
S305、对各虚拟节点所负责的哈希值区间进行组合,得到待添加的应用程序节点所负责的哈希值区间。
在本实施例中,获取各虚拟节点所负责的哈希值区间,并对各虚拟节点所负责的哈希值区间进行组合,得到待添加的应用程序节点所负责的总的哈希值区间,例如,图1中的应用程序节点5所负责的哈希值区间包括区间4、8、12、16。
在本实施例中,采用一致性哈希方式进行扩容,即在哈希环上增加新的应用程序节点时,可以有效减少交叉数据的数量,大幅降低处理话单数据时出现事务冲突的风险。
从上述实施例描述的内容可知,应用程序节点通过在对话单数据进行业务处理时,检测数据路由表是否发生变化,若数据路由表发生变化,则判断自身负责处理的话单数据中是否存在交叉数据,从而避免发生事务发生冲突,并使在添加新的并发的应用程序节点时,可直接在线动态添加,无需停掉其它并发的应用程序节点,其它应用程序节点仍可以继续处理话单数据,提高话单数据的效率。
图4为本发明实施例提供的话单数据业务处理设备的结构示意图一。如图4所示,该话单数据业务处理设备40包括:路由表检测模块401、第一数据处理模块402和业务处理模块403。
路由表检测模块401,用于检测预设的数据路由表是否发生变化,其中数据路由表包含多个应用程序节点的标识以及各应用程序节点所负责的哈希值区间。
第一数据处理模块402,用于若数据路由表发生变化,则获取话单数据,并判断话单数据中是否存在交叉数据,其中话单数据对应的哈希值在自身所负责的哈希值区间内,交叉数据对应的哈希值至少在两个应用程序节点所负责的哈希值区间内。
业务处理模块403,用于若话单数据中不存在交叉数据,则对话单数据进行业务处理。
在一种可能的设计中,路由表检测模块具体用于:若数据路由表包含的应用程序节点的标识的数量发生变化和/或各应用程序节点所负责的哈希值区间发生变化,则确定数据路由表发生变化。
若数据路由表包含的应用程序节点的标识的数量未发生变化以及各应用程序节点所负责的哈希值区间未发生变化,则确定数据路由表未发生变化。
在一种可能的设计中,话单数据业务处理设备还包括第二数据处理模块。
第二数据处理模块,用于在检测预设的数据路由表是否发生变化之后,若数据路由表未发生变化,则对话单数据进行业务处理。
在一种可能的设计中,路由表检测模块还用于:在检测预设的数据路由表是否发生变化之前,获取话单数据集合及对应的关键字段,其中话单数据集合包含多条话单数据。分别对每条话单数据包含的关键字段的具体值进行哈希计算,得到每条话单数据对应的哈希值,并确定每条话单数据对应的哈希值所属的哈希值区间。
在一种可能的设计中,业务处理模块还用于:在判断话单数据中是否存在交叉数据之后,若话单数据中存在交叉数据,则切换到乐观锁模式,并对话单数据进行业务处理。
在一种可能的设计中,业务处理模块具体用于:获取当前待处理的话单数据。若当前待处理的话单数据为交叉数据,则根据乐观锁机制,对当前待处理的话单数据进行业务处理。
本实施例提供的设备,可用于执行上述方法实施例的技术方案,其实现原理和技术效果类似,本实施例此处不再赘述。
图5为本发明实施例提供的话单数据业务处理设备的结构示意图二。如图5所示,本实施例在图4实施例的基础上,还包括:节点添加模块404。
节点添加模块404,用于若存在待添加的应用程序节点,则为待添加的应用程序节点分配预设数量的虚拟节点。
获取待添加的应用程序节点对应的关键字,并根据待添加的应用程序节点对应的关键字生成各虚拟节点对应的关键字。
分别对各虚拟节点对应的关键字进行哈希计算,得到各虚拟节点对应的哈希值。
根据各虚拟节点对应的哈希值,将各虚拟节点映射到预设的哈希环上,并确定各虚拟节点所负责的哈希值区间,其中哈希环由多个哈希值组成。
对各虚拟节点所负责的哈希值区间进行组合,得到待添加的应用程序节点所负责的哈希值区间。
本实施例提供的设备,可用于执行上述方法实施例的技术方案,其实现原理和技术效果类似,本实施例此处不再赘述。
图6为本发明实施例提供的话单数据业务处理设备的硬件结构示意图。如图6所示,本实施例的话单数据业务处理设备60包括:处理器601以及存储器602;其中
存储器602,用于存储计算机执行指令;
处理器601,用于执行存储器存储的计算机执行指令,以实现上述实施例中接收设备所执行的各个步骤。具体可以参见前述方法实施例中的相关描述。
可选地,存储器602既可以是独立的,也可以跟处理器601集成在一起。
当存储器602独立设置时,该话单数据业务处理设备还包括总线603,用于连接所述存储器602和处理器601。
本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如上所述的话单数据业务处理方法。
在本发明所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。例如,以上所描述的设备实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个单元中。上述模块成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能模块的形式实现的集成的模块,可以存储在一个计算机可读取存储介质中。上述软件功能模块存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(英文:processor)执行本申请各个实施例所述方法的部分步骤。
应理解,上述处理器可以是中央处理单元(英文:Central Processing Unit,简称:CPU),还可以是其他通用处理器、数字信号处理器(英文:Digital Signal Processor,简称:DSP)、专用集成电路(英文:Application Specific Integrated Circuit,简称:ASIC)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合发明所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
存储器可能包含高速RAM存储器,也可能还包括非易失性存储NVM,例如至少一个磁盘存储器,还可以为U盘、移动硬盘、只读存储器、磁盘或光盘等。
总线可以是工业标准体系结构(Industry Standard Architecture,ISA)总线、外部设备互连(Peripheral Component,PCI)总线或扩展工业标准体系结构(ExtendedIndustry Standard Architecture,EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,本申请附图中的总线并不限定仅有一根总线或一种类型的总线。
上述存储介质可以是由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。存储介质可以是通用或专用计算机能够存取的任何可用介质。
一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于专用集成电路(Application Specific Integrated Circuits,简称:ASIC)中。当然,处理器和存储介质也可以作为分立组件存在于电子设备或主控设备中。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (10)
1.一种话单数据业务处理方法,其特征在于,应用于应用程序节点,所述方法还包括:
检测预设的数据路由表是否发生变化,其中所述数据路由表包含多个应用程序节点的标识以及各应用程序节点所负责的哈希值区间;
若所述数据路由表发生变化,则获取话单数据,并判断所述话单数据中是否存在交叉数据,其中所述话单数据对应的哈希值在所述应用程序节点自身所负责的哈希值区间内,所述交叉数据对应的哈希值至少在两个应用程序节点所负责的哈希值区间内;
若所述话单数据中不存在交叉数据,则对所述话单数据进行业务处理。
2.根据权利要求1所述的方法,其特征在于,所述检测预设的数据路由表是否发生变化,包括:
若所述数据路由表包含的应用程序节点的标识的数量发生变化和/或各应用程序节点所负责的哈希值区间发生变化,则确定所述数据路由表发生变化;
若所述数据路由表包含的应用程序节点的标识的数量未发生变化以及各应用程序节点所负责的哈希值区间未发生变化,则确定所述数据路由表未发生变化。
3.根据权利要求1或2所述的方法,其特征在于,在所述检测预设的数据路由表是否发生变化之后,还包括:
若所述数据路由表未发生变化,则对所述话单数据进行业务处理。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若存在待添加的应用程序节点,则为所述待添加的应用程序节点分配预设数量的虚拟节点;
获取所述待添加的应用程序节点对应的关键字,并根据所述待添加的应用程序节点对应的关键字生成各虚拟节点对应的关键字;
分别对所述各虚拟节点对应的关键字进行哈希计算,得到各虚拟节点对应的哈希值;
根据各虚拟节点对应的哈希值,将各虚拟节点映射到预设的哈希环上,并确定各虚拟节点所负责的哈希值区间,其中所述哈希环由多个哈希值组成;
对各虚拟节点所负责的哈希值区间进行组合,得到所述待添加的应用程序节点所负责的哈希值区间。
5.根据权利要求1所述的方法,其特征在于,在所述检测预设的数据路由表是否发生变化之前,还包括:
获取话单数据集合及对应的关键字段,其中所述话单数据集合包含多条话单数据;
分别对每条话单数据包含的关键字段的具体值进行哈希计算,得到每条话单数据对应的哈希值,并确定每条话单数据对应的哈希值所属的哈希值区间。
6.根据权利要求1所述的方法,其特征在于,在所述判断所述话单数据中是否存在交叉数据之后,还包括:
若所述话单数据中存在交叉数据,则切换到乐观锁模式,并对所述话单数据进行业务处理。
7.根据权利要求6所述的方法,其特征在于,所述切换到乐观锁模式,并对所述话单数据进行业务处理,包括:
获取当前待处理的话单数据;
若当前待处理的话单数据为交叉数据,则根据乐观锁机制,对所述当前待处理的话单数据进行业务处理。
8.一种话单数据业务处理设备,其特征在于,应用于应用程序节点,所述设备包括:
路由表检测模块,用于检测预设的数据路由表是否发生变化,其中所述数据路由表包含多个应用程序节点的标识以及各应用程序节点所负责的哈希值区间;
第一数据处理模块,用于若所述数据路由表发生变化,则获取话单数据,并判断所述话单数据中是否存在交叉数据,其中所述话单数据对应的哈希值在所述应用程序节点自身所负责的哈希值区间内,所述交叉数据对应的哈希值至少在两个应用程序节点所负责的哈希值区间内;
业务处理模块,用于若所述话单数据中不存在交叉数据,则对所述话单数据进行业务处理。
9.一种话单数据业务处理设备,其特征在于,包括:至少一个处理器和存储器;
所述存储器存储计算机执行指令;
所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行如权利要求1至7任一项所述的话单数据业务处理方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如权利要求1至7任一项所述的话单数据业务处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910318117.7A CN110333944B (zh) | 2019-04-19 | 2019-04-19 | 话单数据业务处理方法及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910318117.7A CN110333944B (zh) | 2019-04-19 | 2019-04-19 | 话单数据业务处理方法及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110333944A CN110333944A (zh) | 2019-10-15 |
CN110333944B true CN110333944B (zh) | 2021-07-27 |
Family
ID=68139751
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910318117.7A Active CN110333944B (zh) | 2019-04-19 | 2019-04-19 | 话单数据业务处理方法及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110333944B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110839083A (zh) * | 2019-11-19 | 2020-02-25 | 北京天润融通科技股份有限公司 | 话单推送方法及装置 |
CN115473968B (zh) * | 2021-06-11 | 2024-04-30 | 中国联合网络通信集团有限公司 | 话单处理方法及设备 |
CN114598559A (zh) * | 2021-07-22 | 2022-06-07 | 湖南亚信软件有限公司 | 数据处理方法、装置、电子设备及计算机可读存储介质 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101655821B (zh) * | 2009-08-04 | 2011-12-28 | 中兴通讯股份有限公司 | 一种解决地址空间映射哈希地址冲突的方法及装置 |
US8538926B2 (en) * | 2011-03-08 | 2013-09-17 | Rackspace Us, Inc. | Massively scalable object storage system for storing object replicas |
CN102629220A (zh) * | 2012-03-08 | 2012-08-08 | 北京神州数码思特奇信息技术股份有限公司 | 一种动态任务分配管理方法 |
CN104361030A (zh) * | 2014-10-24 | 2015-02-18 | 西安未来国际信息股份有限公司 | 一种具有任务分发功能的分布式缓存架构及缓存方法 |
CN105260376B (zh) * | 2015-08-17 | 2018-08-14 | 北京京东尚科信息技术有限公司 | 用于集群节点缩扩的方法、设备和系统 |
CN105677736A (zh) * | 2015-12-29 | 2016-06-15 | 曙光信息产业(北京)有限公司 | 一种增加、删除服务器节点的方法及装置 |
CN106484542B (zh) * | 2016-09-06 | 2020-05-19 | 华为技术有限公司 | 一种处理分布式系统中重叠节点事件的方法与装置 |
-
2019
- 2019-04-19 CN CN201910318117.7A patent/CN110333944B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN110333944A (zh) | 2019-10-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110333944B (zh) | 话单数据业务处理方法及设备 | |
US11481765B2 (en) | Blockchain-based transaction processing method and apparatus and electronic device | |
JP6362805B1 (ja) | ブロックチェーン・ネットワークにおいて過去のトランザクションにアクセス可能とするための方法及び当該ネットワークを構成するためのノード | |
CN112597153B (zh) | 一种基于区块链的数据存储方法、装置及存储介质 | |
CN110830234B (zh) | 一种用户流量分配方法及装置 | |
CN110570311B (zh) | 区块链的共识方法、装置及设备 | |
CN112445729B (zh) | 操作地址确定方法、PCIe系统、电子设备及存储介质 | |
JP2019504415A (ja) | データ格納サービス処理方法及び装置 | |
CN110377276B (zh) | 源代码文件管理方法及设备 | |
CN111767270A (zh) | 数据迁移方法、装置、服务器及存储介质 | |
CN111562884A (zh) | 一种数据存储方法、装置及电子设备 | |
CN112631994A (zh) | 数据迁移方法及系统 | |
CN111381905B (zh) | 一种程序处理方法、装置及设备 | |
CN104657216A (zh) | 一种资源池的资源分配方法及装置 | |
CN111190910B (zh) | 额度资源的处理方法、装置、电子设备及可读存储介质 | |
CN112214447A (zh) | 工作量证明运算芯片集群数据动态重构方法、系统和装置 | |
CN113132241B (zh) | Acl模板动态配置方法及装置 | |
CN110083438B (zh) | 事务分发方法、装置、设备和存储介质 | |
CN115269199A (zh) | 数据处理方法、装置、电子设备及计算机可读存储介质 | |
CN110879748A (zh) | 一种共享资源分配方法、装置和设备 | |
CN112181796B (zh) | 信息采集方法、装置、服务器及存储介质 | |
CN112783954B (zh) | 数据访问方法、装置及服务器 | |
CN107634826B (zh) | 一种基于zynq器件的加密方法和系统 | |
CN113961302A (zh) | 资源分配方法、装置、电子设备及存储介质 | |
CN113448958B (zh) | 数据处理方法和装置、电子设备、存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |