CN109544347B - 尾差分配方法、计算机可读存储介质及尾差分配系统 - Google Patents
尾差分配方法、计算机可读存储介质及尾差分配系统 Download PDFInfo
- Publication number
- CN109544347B CN109544347B CN201811248464.9A CN201811248464A CN109544347B CN 109544347 B CN109544347 B CN 109544347B CN 201811248464 A CN201811248464 A CN 201811248464A CN 109544347 B CN109544347 B CN 109544347B
- Authority
- CN
- China
- Prior art keywords
- node
- computing
- tail
- management node
- nodes
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/06—Asset management; Financial planning or analysis
-
- 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/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- 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/5061—Partitioning or combining of resources
- G06F9/5072—Grid computing
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Business, Economics & Management (AREA)
- Finance (AREA)
- Development Economics (AREA)
- General Engineering & Computer Science (AREA)
- Accounting & Taxation (AREA)
- Marketing (AREA)
- Strategic Management (AREA)
- Technology Law (AREA)
- Game Theory and Decision Science (AREA)
- General Business, Economics & Management (AREA)
- Entrepreneurship & Innovation (AREA)
- Human Resources & Organizations (AREA)
- Economics (AREA)
- Operations Research (AREA)
- Mathematical Physics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种尾差分配方法、计算机可读存储介质及尾差分配系统,包括:客户端将系统的所有用户的用户信息存储至多个存储节点中并向管理节点发送请求消息;管理节点在多个计算节点中选取至少两个计算节点;管理节点向计算节点发送子任务请求消息;计算节点根据接收到的子任务请求消息中所携带的存储节点的存储路径,在存储节点中获取用户信息;计算节点根据所获取的用户信息、系统总份额和系统总收益,依次计算所获取到的每个用户的尾差;至少两个计算节点对尾差进行排序,并将排序结果发送至管理节点,管理节点根据排序结果进行尾差分配。通过分布式计算系统,由多个计算节点进行用户尾差的排序,提高了计算速度,避免了内存溢出。
Description
技术领域
本发明属于计算机技术领域,尤其涉及一种尾差分配方法、计算机可读存储介质及尾差分配系统。
背景技术
在基金系统中,尾差是指客户份额除以基金总份额,再乘以基金总收益后,得到的该用户收益金额的小数位第3-8位的部分。例如,对于某基金中的一个客户,该客户的基金份额为A元,该基金的总份额为B元,基金总收益为C元,则该客户的收益金额为A*C/B元,通常计算到小数位第8位。假设该用户收益为105.12345678元,由于基金的分配最多分配到分,即小数位第二位,因此对于该用户,应分配给该用户105元1角2分,即105.12元,其收益的小数位第3位至第8位,即为该用户收益的尾差。
一些金融系统,如基金系统,拥有海量用户,其收益需要全部分配给用户,包括用户尾差所带来的未分配部分,例如,所有用户的尾差有1000分钱,则按照用户收益尾差部分由大到小的顺序进行排序,将这1000分钱分配给排序结果中排名前1000的用户,每个用户分配到1分钱,这就是尾差分配。
现有的处理方式是计算机将用户尾差进行降序排序,返回一个投资者(用户)信息和尾差的实体类集合,如用户1,对应尾差A1,用户2,对应尾差A2……但是,随着用户数量的激增,现有的排序方法占用过多的计算内存,导致内存溢出,排序失败。
发明内容
有鉴于此,本发明实施例提供了一种尾差分配方法、计算机可读存储介质及尾差分配系统,以解决现有技术中尾差分配过程中内存溢出的问题。
本发明实施例的第一方面提供了一种尾差分配方法,该方法应用于一种分布式计算系统,所述分布式计算系统包括一个管理节点和多个计算节点,所述分布式计算系统中的任意两个节点相连,该方法包括:
客户端将系统的所有用户的用户信息存储至多个存储节点中,所述用户信息包括用户账户信息和用户份额信息;
所述客户端向所述管理节点发送请求消息,所述请求消息用于请求所述管理节点进行尾差分配,所述请求消息中包含系统总份额、系统总收益和所述多个存储节点的路径,其中,针对任一用户,所述用户的尾差为该用户收益金额的小数位第3位至第m位的金额,m≥3;
所述管理节点在所述多个计算节点中选取至少两个计算节点;
针对所选取的任一计算节点,所述管理节点向所述计算节点发送子任务请求消息,所述子任务请求消息中携带至少一个存储节点的存储路径、所述系统总份额和所述系统总收益,所述管理节点发送的所有子任务请求消息中所携带的所有存储路径构成所述多个存储节点的路径;
所述计算节点根据接收到的子任务请求消息中所携带的存储节点的存储路径,在所述存储路径所对应的存储节点中获取用户信息;
所述计算节点根据所获取的用户信息、系统总份额和系统总收益,依次计算所获取到的每个用户的尾差;
所述至少两个计算节点对所述尾差进行排序,并将排序结果发送至所述管理节点,以使得所述管理节点根据所述排序结果进行尾差分配。
本发明实施例的第二方面提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可读指令,所述计算机可读指令被处理器执行时实现如下步骤:
客户端将系统的所有用户的用户信息存储至多个存储节点中,所述用户信息包括用户账户信息和用户份额信息;
所述客户端向所述管理节点发送请求消息,所述请求消息用于请求所述管理节点进行尾差分配,所述请求消息中包含系统总份额、系统总收益和所述多个存储节点的路径,其中,针对任一用户,所述用户的尾差为该用户收益金额的小数位第3位至第m位的金额,m≥3;
所述管理节点在所述多个计算节点中选取至少两个计算节点;
针对所选取的任一计算节点,所述管理节点向所述计算节点发送子任务请求消息,所述子任务请求消息中携带至少一个存储节点的存储路径、所述系统总份额和所述系统总收益,所述管理节点发送的所有子任务请求消息中所携带的所有存储路径构成所述多个存储节点的路径;
所述计算节点根据接收到的子任务请求消息中所携带的存储节点的存储路径,在所述存储路径所对应的存储节点中获取用户信息;
所述计算节点根据所获取的用户信息、系统总份额和系统总收益,依次计算所获取到的每个用户的尾差;
所述至少两个计算节点对所述尾差进行排序,并将排序结果发送至所述管理节点,以使得所述管理节点根据所述排序结果进行尾差分配。
本发明实施例的第三方面提供了一种尾差分配系统,所述尾差分配系统包括客户端和分布式计算系统,所述分布式计算系统包括一个管理节点和多个计算节点,所述分布式计算系统中的任意两个节点相连,该系统用于:
客户端将系统的所有用户的用户信息存储至多个存储节点中,所述用户信息包括用户账户信息和用户份额信息;
所述客户端向所述管理节点发送请求消息,所述请求消息用于请求所述管理节点进行尾差分配,所述请求消息中包含系统总份额、系统总收益和所述多个存储节点的路径,其中,针对任一用户,所述用户的尾差为该用户收益金额的小数位第3位至第m位的金额,m≥3;
所述管理节点在所述多个计算节点中选取至少两个计算节点;
针对所选取的任一计算节点,所述管理节点向所述计算节点发送子任务请求消息,所述子任务请求消息中携带至少一个存储节点的存储路径、所述系统总份额和所述系统总收益,所述管理节点发送的所有子任务请求消息中所携带的所有存储路径构成所述多个存储节点的路径;
所述计算节点根据接收到的子任务请求消息中所携带的存储节点的存储路径,在所述存储路径所对应的存储节点中获取用户信息;
所述计算节点根据所获取的用户信息、系统总份额和系统总收益,依次计算所获取到的每个用户的尾差;
所述至少两个计算节点对所述尾差进行排序,并将排序结果发送至所述管理节点,以使得所述管理节点根据所述排序结果进行尾差分配。
本发明提供了一种尾差分配方法、计算机可读存储介质及尾差分配系统,通过分布式计算系统,由多个计算节点进行用户尾差收益的排序,提高了计算速度,避免了内存溢出。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种尾差分配方法的流程示意图;
图2为本发明实施例提供的另一种尾差分配方法的流程示意图;
图3位本发明实施例提供的又一种尾差分配方法的流程示意图;
图4为本发明实施例提供的一种尾差分配系统的结构框图;
图5为本发明实施例提供的一种尾差分配系统中的终端设备的示意图。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本发明实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本发明。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本发明的描述。
为了说明本发明所述的技术方案,下面通过具体实施例来进行说明。
本发明实施例提供了一种尾差分配方法。结合图1,该方法包括:
S101,客户端将系统的所有用户的用户信息存储至多个存储节点中,所述用户信息包括用户账户信息和用户份额信息。
具体的,该方法应用于一种分布式计算系统,所述分布式计算系统包括一个管理节点和多个计算节点,所述分布式计算系统中的任意两个节点相连。
可选的,所述分布式计算系统为spark计算系统,Spark计算系统中包含两个核心组件,driver节点和worker节点,Driver节点负责将用户程序解析为一系列执行单元并发放到worker节点中,并且driver节点负责协调各个worker节点的进程中的任务调度。Driver节点为管理节点,worker节点为计算节点。
在本发明实施例中,所述“系统”以基金系统为例进行介绍,对于其他适用于本发明实施例的其他系统,也在本发明保护范围之内,本发明实施例对此不做限定。
对于一个基金系统,客户端将该基金的所有用户的用户信息存储至多个存储节点中,用户信息包括但不限于用户的账户信息和用户的份额信息。
S102,所述客户端向所述管理节点发送请求消息,所述请求消息用于请求所述管理节点进行尾差分配,所述请求消息中包含系统总份额、系统总收益和所述多个存储节点的路径,其中,针对任一用户,所述用户的尾差为该用户收益金额的小数位第3位至第m位的金额,m≥3。
当需要对基金的收益进行分配时,客户端向管理节点发送请求消息,请求管理节点进行收益分配。需要说明的是,根据计算方式的不同,在计算用户收益时通常计算到小数位第8位,此时用户收益的尾差即为用户收益的小数位第3至8位,但是,对于其他计算方式,在计算用户收益时计算到小数位第m位,m≥3,此时用户收益的尾差即为用户收益的小数位第3至第m位,具体的,本发明实施例适用于任何一种收益计算方式,本发明实施例对于尾差的位数不做限定。
S103,所述管理节点在所述多个计算节点中选取至少两个计算节点。
一种可行的实施方式,管理节点依次获取每个计算节点的内存信息和中央处理器CPU占用率信息,并根据每个计算节点的内存信息和中央处理器CPU占用率信息,在所述多个计算节点中选取至少两个计算节点。例如,管理节点根据计算节点的内存占用量和CPU占用率对内存节点的计算能力进行排序,选取至少两个计算能力最强的计算节点。
另一种可行的实施方式,所述管理节点根据所述多个存储节点的路径,判断所述多个存储节点与所述多个计算节点的位置关系,并根据所述多个存储节点与所述多个计算节点的位置关系,在所述多个计算节点中选取至少两个计算节点。例如,管理节点判断存储节点分别为存储节点1和存储节点2,距离这两个存储节点最近的两个计算节点为计算节点1和计算节点2,此时选用计算节点1和计算节点2作为计算节点。
再一种行的实施方式,管理节点综合考虑计算节点的内存占用率、CPU占用率和存储节点与计算节点的位置关系进行计算节点的选取。本发明实施例对此不做限定。
S104,针对所选取的任一计算节点,所述管理节点向所述计算节点发送子任务请求消息,所述子任务请求消息中携带至少一个存储节点的存储路径、所述系统总份额和所述系统总收益,所述管理节点发送的所有子任务请求消息中所携带的所有存储路径构成所述多个存储节点的路径。
管理节点进行任务分配。一种可行的实施方式,管理节点根据每个存储节点的用户数量,将尾差分配任务进行分解,分解为多个子任务,并向每个计算节点分配一个子任务。
举例来说,客户端将用户信息存储在3个存储节点,每个存储节点的用户数量大致相同,此时,管理节点按照如步骤S103的方式选取三个计算节点,每个计算节点接收一个子任务请求消息,每个子任务请求消息中携带一个存储节点的路径。如三个存储节点分别为存储节点1、存储节点2和存储节点3,由步骤S103管理节点选取三个计算节点,分别是计算节点1、计算节点2和计算节点3。
此时,管理节点根据存储节点与计算节点的位置关系,向每个计算节点分配一个子任务请求消息,每个子任务请求消息中携带一个存储节点的路径。如计算节点1接收到的子任务请求消息中携带存储节点1的路径,计算节点2接收到的子任务请求消息中携带存储节点2的路径,计算节点3接收到的子任务请求消息中携带存储节点3的路径。
S105,所述计算节点根据接收到的子任务请求消息中所携带的存储节点的存储路径,在所述存储路径所对应的存储节点中获取用户信息。
如计算节点1根据接收到的子任务请求消息中的存储节点1的路径,在存储节点1中获取到存储节点1中存储的用户信息。
S106,所述计算节点根据所获取的用户信息、系统总份额和系统总收益,依次计算所获取到的每个用户的尾差。
针对任一用户,由于用户信息包含用户账户信息和用户份额信息,根据用户份额除以基金总份额再乘以基金总收益,即可得到该用户的收益。以该用户收益计算至小数位第8位为例进行说明,此时截取用户收益的小数位第3至8位的部分即为该用户收益的尾差。
S107,所述至少两个计算节点对所述尾差进行排序,并将排序结果发送至所述管理节点,以使得所述管理节点根据所述排序结果进行尾差分配。
在本发明实施例中,对于步骤S107,本发明实施例提供如下两种可行的实施方式,以实现尾差的分配。
第一种可行的实施方式,结合图2,该方法包括:
S201,针对任一计算节点,所述计算节点建立一个数组,所述数组包含10m-2个元素,所述数组中的第n个元素的值用于表示数值n出现的次数,所述数组中每个元素的初始值为0。
为便于说明,在本发明实施例中,以用户收益计算到小数位第四位来进行说明,此时,用户的收益尾差为收益的小数位第3位至第四位的部分,举例来说,用户的收益为12.1234元,则该用户的收益尾差为0.0034元。
此时,m=4,计算节点建立一个数组,该数组包含100个元素,n为0至99之间的一个整数,数组中每个元素的初始值为0。
S202,针对所述计算节点所计算的任一用户的尾差,所述计算节点将所述尾差乘以10的m次方,得到0至(10m-2-1)之间的一个整数X。
为便于计算机计算,通常将尾差有小数转换为整数,直接截取其尾差部分的数值所对应的整数,或乘以10的m次方获得一个整数,即为对该尾差整数化后得到的数值。例如,用户的尾差为0.0034元,其对应的整数为34。
S203,所述计算节点在所述数组中第X个元素所对应的位置加1。
该用户的尾差对应的整数为34,此时在数组的第35个元素,即元素34所对应的位置,其元素值加1,说明尾差为34的用户出现一次。
S204,所述计算节点将得到的数组发送至所述管理节点。
举例来说,计算节点所对应的存储节点中包含10000个用户的用户信息,则该节点依次计算这10000个用户的尾差,并通过如步骤S203的方式,每计算得到一个尾差,获得该尾差对应的整数X,在数组中元素X所对应的位置加1,最后得到的数组,所有元素的和的值为10000。如34出现1次,34所对应的元素,即数组中第35个元素的值为1,55出现2次,即数组中第56个元素的值为2,78出现3次,即数组中第79个元素的值为3……,最终得到的数组中所有元素的和的值为10000。
S205,所述管理节点获取所述系统的总尾差。
系统的总尾差为所有用户尾差的和,当计算节点计算出每个用户的尾差后,将所有用户的尾差求和即可得到总尾差。
S206,所述管理节点根据所述总尾差,确定应分配尾差的用户人数Y。
如总尾差为1000分,则分配尾差的人数为1000人。
S207,所述管理节点根据所述Y,在所述数组中确定数值Z所对应的元素,其中,所述至少两个计算节点得到的数组中,数值Z出现的次数以及大于数值Z的元素出现的次数的和为T,T大于等于Y,大于数值Z的元素出现的次数的和小于Y。
在本发明实施例中,为便于说明,以Y=10为例进行解释。管理节点收到到所有计算节点反馈的数组,对数组进行求和。求和后依次从最后一个元素的值开始判断,如第100个元素的值为1,说明尾差为0.0099的用户出现了1次,即只有一个用户的尾差为0.0099,第99个元素的值为3,说明尾差为0.0098的用户有3个,第98个元素的值为4,说明尾差为0.0097的用户有4个,第97个元素的值为3,说明尾差为0.0096的用户有3个。
此时,尾差大于等于0.0096的用户有11个,大于10个,尾差大于等于0.0097的用户有8个,小于10,则Z=96。此时尾差大于等于0.0096的用户都应该分配1分钱。
当大于等于Z的用户多于Y个时,如尾差大于等于0.0096的用户有11个,而总尾差只有10分,只能分配给10个用户,此时,一种可行的实施方式,在尾差为0.0096的用户中随机选择2个用户分配尾差,另一种可行的实施方式,指定存储节点的优先顺序,如存储节点1的优先级大于存储节点2大于存储节点3,则按照用户所处于存储节点的优先级进行分配。
S208,所述管理节点向尾差大于等于Z*10-m的用户分配尾差。
通过这种尾差分配方法,第一方面,通过建立数组的方式进行分配阈值的选取,不同于现有的排序方法,对内存的占用量小,且针对同一系统,每次尾差分配占用的内存是恒定的,不会造成内存溢出,第二方面,通过分布式计算系统进行并行计算,提高了计算速度,且减少了单个节点的计算量和内存占用量。
第二种可行的实施方式,结合图3,该方法包括:
S301,针对任一计算节点,所述计算节点获得任一用户的尾差后,将所述尾差乘以10的m次方,得到0至(10m-2-1)之间的一个整数X。
本步骤的具体实现方式可参考步骤S202,本发明实施例对此不再赘述。
S302,所述计算节点判断所述整数X所位于的预设数值区间,其中,所述计算节点将0至(10m-2-1)预设为多个数值区间,每个数值区间无交集,所述多个数值区间的值的并集为0至(10m-2-1)。
可选的,每个计算节点将将0至(10m-2-1)预设为多个数值区间,例如,以m=4为例进行解释,此时得到的尾差的值整数化后为0-99之间的任意一整数,在每个计算节点中预设2个数值区间,分别为[0,49]和[50,99],当计算一个用户收益的尾差并将尾差整数化后,判断该尾差落入哪个数值区间。
S303,所述计算节点根据所述整数X所位于的预设数值区间,将所述整数X及该用户的账户信息存储至该预设数值区间所对应的存储空间,其中,任一计算节点能够访问该存储空间。
针对每个数值区间,预设置对应的存储空间,如数值区间[0,49]对应第一存储空间,数值区间[50,99]对应第二存储空间,若判断用户的尾差整数化后落入数值区间[0,49]则把用户尾差及对应的用户信息存储至第一存储空间,若判断用户的尾差整数化后落入数值区间[50,99]则把用户尾差及对应的用户信息存储至第二存储空间。
S304,所述计算节点向所述管理节点发送计算完成响应消息。
所有计算节点计算完其对应的用户的尾差并根据尾差的值将其放入对应的存储空间后,向管理节点发送计算完成的响应消息。
S305,所述管理节点在接收到所有计算节点的计算完成响应消息后,获取所述系统的总尾差和每个预设数值区间所对应的用户人数。
S306,所述管理节点根据所述总尾差,确定应分配尾差的用户人数Y。
具体的,步骤S305至步骤S306的具体实现方式可参见步骤S205至步骤S206,本发明实施例在此不再赘述。
S307,所述管理节点根据所述用户人数Y和每个预设数值区间所对应的用户人数,确定应进行排序的数值区间,指示至少一个计算节点对应进行排序的数值区间所对应的用户的尾差进行降序排序。
例如,通过步骤S306确定应分配尾差的用户人数Y为1000人,数值区间[50,99]对应第二存储空间中的用户人数大于1000,此时,管理节点指示一个计算节点对第二存储空间中的用户的尾差进行降序排序。
S308,所述管理节点根据所述计算节点的排序结果,进行用户尾差分配。
管理节点根据计算节点降序排序的结果,对排在前Y位的用户进行尾差分配。
通过这种排序方法,计算节点通过预设置的数值区间,判断用户的尾差整数化后所落入的数值区间,将该用户的用户信息及其尾差存储在该数值区间所对应的预设存储空间中,管理节点通过系统总尾差判断需要分配尾差的用户人数,再根据每个预设数值区间所对应的存储空间中存储的用户人数,指示计算节点对其中一个或几个存储空间的用户进行排序即可,不需要计算节点对全部用户的尾差进行排序,从而降低了计算节点的内存占用量,解决了现有技术中内存溢出的问题。
本发明提供了一种尾差分配方法,通过分布式计算系统,由多个计算节点进行用户尾差收益的排序,提高了计算速度,避免了内存溢出。
图4为本发明实施例提供的一种尾差分配系统示意图,结合图4,该系统包括:客户端41、存储节点42和分布式计算系统,所述分布式计算系统包括一个管理节点43和多个计算节点44,所述分布式计算系统中的任意两个节点相连,该系统用于:
客户端41将系统的所有用户的用户信息存储至多个存储节点42中,所述用户信息包括用户账户信息和用户份额信息;
所述客户端向所述管理节点43发送请求消息,所述请求消息用于请求所述管理节点43进行尾差分配,所述请求消息中包含系统总份额、系统总收益和所述多个存储节点的路径,其中,针对任一用户,所述用户的尾差为该用户收益金额的小数位第3位至第m位的金额,m≥3;
所述管理节点43在所述多个计算节点44中选取至少两个计算节点44;
针对所选取的任一计算节点44,所述管理节点43向所述计算节点44发送子任务请求消息,所述子任务请求消息中携带至少一个存储节点42的存储路径、所述系统总份额和所述系统总收益,所述管理节点43发送的所有子任务请求消息中所携带的所有存储路径构成所述多个存储节点42的路径;
所述计算节点44根据接收到的子任务请求消息中所携带的存储节点42的存储路径,在所述存储路径所对应的存储节点42中获取用户信息;
所述计算节点44根据所获取的用户信息、系统总份额和系统总收益,依次计算所获取到的每个用户的尾差;
所述至少两个计算节点44对所述尾差进行排序,并将排序结果发送至所述管理节点43,以使得所述管理节点43根据所述排序结果进行尾差分配。
进一步的,针对任一计算节点44,所述计算节点44建立一个数组,所述数组包含10m-2个元素,所述数组中的第n个元素的值用于表示数值n出现的次数,所述数组中每个元素的初始值为0,n为0至(10m-2-1)之间的一个整数;
针对所述计算节点44所计算的任一用户的尾差,所述计算节点44将所述尾差乘以10的m次方,得到0至(10m-2-1)之间的一个整数X;
所述计算节点44在所述数组中第X个元素所对应的位置加1;
所述计算节点44将得到的数组发送至所述管理节点43;
所述管理节点43获取所述系统的总尾差;
所述管理节点43根据所述总尾差,确定应分配尾差的用户人数Y;
所述管理节点43根据所述Y,在所述数组中确定数值Z所对应的元素,其中,所述至少两个计算节点44得到的数组中,数值Z出现的次数以及大于数值Z的元素出现的次数的和为T,T大于等于Y,大于数值Z的元素出现的次数的和小于Y;
所述管理节点43向尾差大于等于Z*10-m的用户分配尾差。
进一步的,针对任一计算节点44,所述计算节点44获得任一用户的尾差后,将所述尾差乘以10的m次方,得到0至(10m-2-1)之间的一个整数X;
所述计算节点44判断所述整数X所位于的预设数值区间,其中,所述计算节点44将0至(10m-2-1)预设为多个数值区间,每个数值区间无交集,所述多个数值区间的值的并集为0至(10m-2-1);
所述计算节点44根据所述整数X所位于的预设数值区间,将所述整数X及该用户的账户信息存储至该预设数值区间所对应的存储空间,其中,任一计算节点44能够访问该存储空间;
所述计算节点44向所述管理节点43发送计算完成响应消息;
所述管理节点43在接收到所有计算节点44的计算完成响应消息后,获取所述系统的总尾差和每个预设数值区间所对应的用户人数;
所述管理节点43根据所述总尾差,确定应分配尾差的用户人数Y;
所述管理节点43根据所述用户人数Y和每个预设数值区间所对应的用户人数,确定应进行排序的数值区间,指示至少一个计算节点44对应进行排序的数值区间所对应的用户的尾差进行降序排序;
所述管理节点43根据所述计算节点44的排序结果,进行用户尾差分配。
进一步的,所述管理节点43依次获取每个计算节点44的内存信息和中央处理器CPU占用率信息;
所述管理节点43根据每个计算节点44的内存信息和中央处理器CPU占用率信息,在所述多个计算节点44中选取至少两个计算节点44。
进一步的,所述管理节点43根据所述多个存储节点42的路径,判断所述多个存储节点42与所述多个计算节点44的位置关系;
所述管理节点43根据所述多个存储节点42与所述多个计算节点44的位置关系,在所述多个计算节点44中选取至少两个计算节点44。
本发明实施例提供了一种尾差分配系统,通过分布式计算系统,由多个计算节点进行用户尾差收益的排序,提高了计算速度,避免了内存溢出。
进一步的,图4所示的尾差分配系统中的客户端41、存储节点42、管理节点43和计算节点44都是一种终端设备,针对该系统中的任一终端设备,结合图5,本发明实施例提供了一种终端设备的示意图。如图5所示,该实施例的终端设备5包括:处理器50、存储器51以及存储在所述存储器51中并可在所述处理器50上运行的计算机程序52,例如尾差分配程序。所述处理器50执行所述计算机程序52时实现上述各个尾差分配方法实施例中的步骤,例如图1所示的步骤101至107,或图2所示的步骤201至208,或图3所示的步骤301至308。
示例性的,所述计算机程序52可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器51中,并由所述处理器50执行,以完成本发明。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序52在所述终端设备5中的执行过程。
所述终端设备5可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述终端设备可包括,但不仅限于,处理器50、存储器51。本领域技术人员可以理解,图5仅仅是终端设备5的示例,并不构成对终端设备5的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述终端设备还可以包括输入输出设备、网络接入设备、总线等。
所述处理器50可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
所述存储器51可以是所述终端设备5的内部存储单元,例如终端设备5的硬盘或内存。所述存储器51也可以是所述终端设备5的外部存储设备,例如所述终端设备5上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,所述存储器51还可以既包括所述终端设备5的内部存储单元也包括外部存储设备。所述存储器51用于存储所述计算机程序以及所述终端设备所需的其他程序和数据。所述存储器51还可以用于暂时地存储已经输出或者将要输出的数据。
本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述任一实施例所述尾差分配方法的步骤。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使对应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。
Claims (10)
1.一种尾差分配方法,其特征在于,该方法应用于一种分布式计算系统,所述分布式计算系统包括一个管理节点和多个计算节点,所述分布式计算系统中的任意两个节点相连,该方法包括:
客户端将系统的所有用户的用户信息存储至多个存储节点中,所述用户信息包括用户账户信息和用户份额信息;
所述客户端向所述管理节点发送请求消息,所述请求消息用于请求所述管理节点进行尾差分配,所述请求消息中包含系统总份额、系统总收益和所述多个存储节点的路径,其中,针对任一用户,所述用户的尾差为该用户收益金额的小数位第3位至第m位的金额,m≥3;
所述管理节点在所述多个计算节点中选取至少两个计算节点;
针对所选取的任一计算节点,所述管理节点向所述计算节点发送子任务请求消息,所述子任务请求消息中携带至少一个存储节点的存储路径、所述系统总份额和所述系统总收益,所述管理节点发送的所有子任务请求消息中所携带的所有存储路径构成所述多个存储节点的路径;
所述计算节点根据接收到的子任务请求消息中所携带的存储节点的存储路径,在所述存储路径所对应的存储节点中获取用户信息;
所述计算节点根据所获取的用户信息、系统总份额和系统总收益,依次计算所获取到的每个用户的尾差;
所述至少两个计算节点对所述尾差进行排序,并将排序结果发送至所述管理节点,以使得所述管理节点根据所述排序结果进行尾差分配。
2.根据权利要求1所述的尾差分配方法,其特征在于,所述至少两个计算节点对所述尾差进行排序,并将排序结果发送至所述管理节点,以使得所述管理节点根据所述排序结果进行尾差分配包括:
针对任一计算节点,所述计算节点建立一个数组,所述数组包含10m-2个元素,所述数组中的第n个元素的值用于表示数值n出现的次数,所述数组中每个元素的初始值为0,n为0至(10m-2-1)之间的一个整数;
针对所述计算节点所计算的任一用户的尾差,所述计算节点将所述尾差乘以10的m次方,得到0至(10m-2-1)之间的一个整数X;
所述计算节点在所述数组中第X个元素所对应的位置加1;
所述计算节点将得到的数组发送至所述管理节点;
所述管理节点获取所述系统的总尾差;
所述管理节点根据所述总尾差,确定应分配尾差的用户人数Y;
所述管理节点根据所述Y,在所述数组中确定数值Z所对应的元素,其中,所述至少两个计算节点得到的数组中,数值Z出现的次数以及大于数值Z的元素出现的次数的和为T,T大于等于Y,大于数值Z的元素出现的次数的和小于Y;
所述管理节点向尾差大于等于Z*10-m的用户分配尾差。
3.根据权利要求1所述的尾差分配方法,其特征在于,所述至少两个计算节点对所述尾差进行排序,并将排序结果发送至所述管理节点,以使得所述管理节点根据所述排序结果进行尾差分配包括:
针对任一计算节点,所述计算节点获得任一用户的尾差后,将所述尾差乘以10的m次方,得到0至(10m-2-1)之间的一个整数X;
所述计算节点判断所述整数X所位于的预设数值区间,其中,所述计算节点将0至(10m -2-1)预设为多个数值区间,每个数值区间无交集,所述多个数值区间的值的并集为0至(10m-2-1);
所述计算节点根据所述整数X所位于的预设数值区间,将所述整数X及该用户的账户信息存储至该预设数值区间所对应的存储空间,其中,任一计算节点能够访问该存储空间;
所述计算节点向所述管理节点发送计算完成响应消息;
所述管理节点在接收到所有计算节点的计算完成响应消息后,获取所述系统的总尾差和每个预设数值区间所对应的用户人数;
所述管理节点根据所述总尾差,确定应分配尾差的用户人数Y;
所述管理节点根据所述用户人数Y和每个预设数值区间所对应的用户人数,确定应进行排序的数值区间,指示至少一个计算节点对应进行排序的数值区间所对应的用户的尾差进行降序排序;
所述管理节点根据所述计算节点的排序结果,进行用户尾差分配。
4.根据权利要求1-3任一项所述的尾差分配方法,其特征在于,所述管理节点在所述多个计算节点中选取至少两个计算节点包括:
所述管理节点依次获取每个计算节点的内存信息和中央处理器CPU占用率信息;
所述管理节点根据每个计算节点的内存信息和中央处理器CPU占用率信息,在所述多个计算节点中选取至少两个计算节点。
5.根据权利要求1-3任一项所述的尾差分配方法,其特征在于,所述管理节点在所述多个计算节点中选取至少两个计算节点包括:
所述管理节点根据所述多个存储节点的路径,判断所述多个存储节点与所述多个计算节点的位置关系;
所述管理节点根据所述多个存储节点与所述多个计算节点的位置关系,在所述多个计算节点中选取至少两个计算节点。
6.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至5任一项所述方法的步骤。
7.一种尾差分配系统,其特征在于,所述尾差分配系统包括客户端和分布式计算系统,所述分布式计算系统包括一个管理节点和多个计算节点,所述分布式计算系统中的任意两个节点相连,该系统用于:
客户端将系统的所有用户的用户信息存储至多个存储节点中,所述用户信息包括用户账户信息和用户份额信息;
所述客户端向所述管理节点发送请求消息,所述请求消息用于请求所述管理节点进行尾差分配,所述请求消息中包含系统总份额、系统总收益和所述多个存储节点的路径,其中,针对任一用户,所述用户的尾差为该用户收益金额的小数位第3位至第m位的金额,m≥3;
所述管理节点在所述多个计算节点中选取至少两个计算节点;
针对所选取的任一计算节点,所述管理节点向所述计算节点发送子任务请求消息,所述子任务请求消息中携带至少一个存储节点的存储路径、所述系统总份额和系统总尾差,所述管理节点发送的所有子任务请求消息中所携带的所有存储路径构成所述多个存储节点的路径;
所述计算节点根据接收到的子任务请求消息中所携带的存储节点的存储路径,在所述存储路径所对应的存储节点中获取用户信息;
所述计算节点根据所获取的用户信息、系统总份额和系统总收益,依次计算所获取到的每个用户的尾差;
所述至少两个计算节点对所述尾差进行排序,并将排序结果发送至所述管理节点,以使得所述管理节点根据所述排序结果进行尾差分配。
8.根据权利要求7所述的尾差分配系统,其特征在于,所述至少两个计算节点对所述尾差进行排序,并将排序结果发送至所述管理节点,以使得所述管理节点根据所述排序结果进行尾差分配包括:
针对任一计算节点,所述计算节点建立一个数组,所述数组包含10m-1个元素,所述数组中的第n个元素的值用于表示数值n出现的次数,所述数组中每个元素的初始值为0;
针对所述计算节点所计算的任一用户的尾差,所述计算节点将所述尾差乘以10的m次方,得到0至(10m-1-1)之间的一个整数X;
所述计算节点在所述数组中第X个元素所对应的位置加1;
所述计算节点将得到的数组发送至所述管理节点;
所述管理节点获取所述系统的总尾差;
所述管理节点根据所述总尾差,确定应分配尾差的用户人数Y;
所述管理节点根据所述Y,在所述数组中确定第Z个元素,其中,所述至少两个计算节点得到的数组中,数值Z出现的次数以及大于数值Z的元素出现的次数的和为T,T大于等于Y,大于数值Z的元素出现的次数的和小于Y;
所述管理节点向尾差大于等于Z*10-m的用户分配尾差。
9.根据权利要求7所述的尾差分配系统,其特征在于,所述至少两个计算节点对所述尾差进行排序,并将排序结果发送至所述管理节点,以使得所述管理节点根据所述排序结果进行尾差分配包括:
针对任一计算节点,所述计算节点获得任一用户的尾差后,将所述尾差乘以10的m次方,得到0至(10m-1-1)之间的一个整数X;
所述计算节点判断所述整数X所位于的预设数值区间,其中,所述计算节点将0至(10m -1-1)预设为多个数值区间,每个数值区间无交集,所述多个数值区间的值的并集为0至(10m-1-1);
所述计算节点根据所述整数X所位于的预设数值区间,将所述整数X及该用户的账户信息存储至该预设数值区间所对应的存储空间,其中,任一计算节点能够访问该存储空间;
所述计算节点向所述管理节点发送计算完成响应消息;
所述管理节点在接收到所有计算节点的计算完成响应消息后,获取所述系统的总尾差和每个预设数值区间所对应的用户人数;
所述管理节点根据所述总尾差,确定应分配尾差的用户人数Y;
所述管理节点根据所述用户人数Y和每个预设数值区间所对应的用户人数,确定应进行排序的数值区间,指示至少一个计算节点对应进行排序的数值区间所对应的用户的尾差进行降序排序;
所述管理节点根据所述计算节点的排序结果,进行用户尾差分配。
10.根据权利要求7-9任一项所述的尾差分配系统,其特征在于,所述管理节点在所述多个计算节点中选取至少两个计算节点包括:
所述管理节点依次获取每个计算节点的内存信息和中央处理器CPU占用率信息;
所述管理节点根据每个计算节点的内存信息和中央处理器CPU占用率信息,在所述多个计算节点中选取至少两个计算节点。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811248464.9A CN109544347B (zh) | 2018-10-25 | 2018-10-25 | 尾差分配方法、计算机可读存储介质及尾差分配系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811248464.9A CN109544347B (zh) | 2018-10-25 | 2018-10-25 | 尾差分配方法、计算机可读存储介质及尾差分配系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109544347A CN109544347A (zh) | 2019-03-29 |
CN109544347B true CN109544347B (zh) | 2023-07-07 |
Family
ID=65844792
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811248464.9A Active CN109544347B (zh) | 2018-10-25 | 2018-10-25 | 尾差分配方法、计算机可读存储介质及尾差分配系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109544347B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110852731A (zh) * | 2019-11-12 | 2020-02-28 | 腾讯科技(深圳)有限公司 | 一种基金交易的方法以及相关装置 |
CN111275284A (zh) * | 2019-12-26 | 2020-06-12 | 用友网络科技股份有限公司 | 一种成本分摊装置和方法 |
CN117372166B (zh) * | 2023-10-26 | 2024-03-08 | 北京开科唯识技术股份有限公司 | 一种高效的尾差分配处理方法、装置及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103729257A (zh) * | 2012-10-16 | 2014-04-16 | 阿里巴巴集团控股有限公司 | 一种分布式并行计算方法以及系统 |
EP2816792A1 (en) * | 2013-06-21 | 2014-12-24 | Openet Telecom Ltd. | System and method for dynamically allocating quota for shared balances in distributed telecommunications networks |
CN108629674A (zh) * | 2018-05-09 | 2018-10-09 | 平安普惠企业管理有限公司 | 拍卖收益的分配方法及终端设备 |
-
2018
- 2018-10-25 CN CN201811248464.9A patent/CN109544347B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103729257A (zh) * | 2012-10-16 | 2014-04-16 | 阿里巴巴集团控股有限公司 | 一种分布式并行计算方法以及系统 |
EP2816792A1 (en) * | 2013-06-21 | 2014-12-24 | Openet Telecom Ltd. | System and method for dynamically allocating quota for shared balances in distributed telecommunications networks |
CN108629674A (zh) * | 2018-05-09 | 2018-10-09 | 平安普惠企业管理有限公司 | 拍卖收益的分配方法及终端设备 |
Also Published As
Publication number | Publication date |
---|---|
CN109544347A (zh) | 2019-03-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10558498B2 (en) | Method for scheduling data flow task and apparatus | |
CN109544347B (zh) | 尾差分配方法、计算机可读存储介质及尾差分配系统 | |
Sakata et al. | An analysis of the M/G/1 queue under round-robin scheduling | |
CN109345108A (zh) | 任务分配方法、装置、设备及存储介质 | |
CN110991808B (zh) | 一种任务分配方法和装置 | |
CN110852882B (zh) | 用于区块链网络的分组共识方法、装置、设备和介质 | |
CN109086135B (zh) | 资源伸缩方法、装置、计算机设备及存储介质 | |
Lee et al. | Hybrid job-driven scheduling for virtual MapReduce clusters | |
JP6221588B2 (ja) | 情報処理システム、管理装置制御プログラム及び情報処理システムの制御方法 | |
CN104639645A (zh) | 网络负载均衡方法、装置及集群服务系统 | |
CN109242320B (zh) | 订单分配方法、装置、服务器及存储介质 | |
Choi et al. | An enhanced data-locality-aware task scheduling algorithm for hadoop applications | |
CN113419833B (zh) | 用于量子云计算平台任务调度的方法、装置和量子云计算平台任务调度服务器 | |
CN111858014A (zh) | 资源分配方法及装置 | |
CN111259045B (zh) | 一种数据处理方法、装置、服务器及介质 | |
CN113327053A (zh) | 任务处理方法及装置 | |
CN108845860B (zh) | 一种quota管理方法、装置及电子设备 | |
CN115202890B (zh) | 数据元件生产资源空间分配方法、系统及设备 | |
CN111080126A (zh) | 任务分配方法和装置 | |
CN110073321B (zh) | 一种存储控制器及io请求处理方法 | |
WO2018205890A1 (zh) | 一种分布式系统的任务分配方法及系统及其计算机可读存储介质和计算机设备 | |
CN115562861A (zh) | 针对数据倾斜的数据处理的方法和装置 | |
Schwiegelshohn et al. | The power of migration for online slack scheduling | |
CN109901931B (zh) | 一种归约函数数量确定方法、装置及系统 | |
Bazoobandi et al. | Solving task scheduling problem in multi-processors with genetic algorithm and task duplication |
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 |