***的生成方法及其装置
技术领域
本申请涉及计算机技术领域,特别涉及一种***的生成方法及其装置。
背景技术
通常情况下,如图1’所示,银行卡***可包括卡BIN值、***随机号段和校验位三个部分。其中,卡BIN值(BIN,Bank Identification Number)是发卡行识别码,主要用于识别发卡机构和卡类型信息。***随机号段是除去卡BIN值和校验位的随机数字序列,主要用于区分相同卡BIN值的不同***实体,每张银行卡实体对应唯一的序列号。校验位主要用于验证***的合法性。
目前,生成银行卡***的方法如下:首先确定卡BIN值,其次生成不重复的***随机号段,然后计算出校验位,最后根据卡BIN值、***随机号段和校验位生成银行卡***。其中,生成不重复的***随机号段主要包括两种方式:第一种方式通过数据库产品自身的特性保证生成的数字序列不重复,如:通过Oracle(甲骨文)数据库的sequence(按照一定规则自动增加的数字序列)对象保证生成的数字序列不重复。第二种方式通过在数据库中维护自动增加的计数器保证生成的数字序列不重复。
但是,在实现本申请过程中,发明人发现现有技术中至少存在如下问题:依赖数据库资源来保证生成不重复的***随机号段,在高并发的情况下(即同时大量地生成***),会产生发卡的性能瓶颈,导致发卡效率变差。
发明内容
本申请旨在至少在一定程度上解决相关技术中的技术问题之一。
为此,本申请的第一个目的在于提出一种***的生成方法,该方法能够解决大量发卡时性能瓶颈的问题,提高发卡的效率。
本申请的第二个目的在于提出一种***的生成装置。
为达上述目的,根据本申请第一方面实施例提出了一种***的生成方法,包括:获得用户的***申请请求;将所述***申请请求分发至一个或多个节点,其中,每个节点具有不重复的号段信息;以及通过接收到所述***申请请求的节点获得对应的***基础信息和号段值,并根据对应的***基础信息和号段值生成***,其中,获得的对应同一***基础信息的号段值不同。
本申请实施例的***的生成方法,通过多个节点并行地获得位于自己号段内不同的号段值,并根据获得的不同号段值和对应的***基础信息生成***,不仅保证了生成的***不重复,还解决了大量发卡时性能瓶颈的问题,提高了发卡的效率。
本申请第二方面实施例提出了一种***的生成装置,包括:获得模块,用于获得用户的***申请请求;分发模块,用于将所述***申请请求分发至一个或多个节点,其中,每个节点具有不重复的号段信息;以及生成模块,用于通过接收到所述***申请请求的节点获得对应的***基础信息和号段值,并根据对应的***基础信息和号段值生成***,其中,获得的对应同一***基础信息的号段值不同。
本申请实施例的***的生成装置,通过多个节点并行地获得位于自己号段内不同的号段值,并根据获得的不同号段值和对应的***基础信息生成***,不仅保证了生成的***不重复,还解决了大量发卡时性能瓶颈的问题,提高了发卡的效率。
本申请的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本申请的实践了解到。
附图说明
图1’为现有技术中的银行卡***组成的示意图。
图1a是根据本申请一个实施例的***的生成方法的流程图。
图1b是根据本申请一个实施例的在客户端生成***时的信令流程图。
图1c是根据本申请一个实施例的在服务器生成***时的信令流程图。
图2为根据本申请一个具体实施例的***的生成方法的流程图。
图3是根据本申请一个实施例的生成***的示意图。
图4为根据本申请一个实施例的***的生成装置的结构图。
图5为根据本申请另一个实施例的***的生成装置的结构图。
图6为根据本申请又一个实施例的***的生成装置的结构图。
具体实施方式
下面详细描述本申请的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本申请,而不能理解为对本申请的限制。
下面参考附图描述本申请实施例的***的生成方法及其装置。
图1a是根据本申请一个实施例的***的生成方法的流程图。如图1a所示,该***的生成方法包括:
S101,获得用户的***申请请求。
在该实施例中,当用户需要申请会员卡、优惠卡时,可以在客户端点击相应的卡片申请栏位,此时,客户端会获得相应的***申请请求。该实施例尤其适合处理用户大量申请***的情况。
S102,将***申请请求分发至一个或多个节点,其中,每个节点具有不重复的号段信息。
在该实施例中,通过设置可调用的多个具有不重复的号段信息的节点,来实现后续高效地生成大量***的操作。
需要说明的是,上述S102既可以由客户端来完成,也可以由服务器来完成。当S102由客户端来完成,上述节点是指位于客户端的多个节点,当S102由服务器来完成,上述节点是指位于服务器的多个节点。将***申请请求分发至多个节点可以提高处理效率。
具体地,将***申请请求分发至一个或多个节点可以通过以下方式实现:根据***申请请求获得***基础信息,根据获得的***基础信息查询本地保存的信息列表,从而确定可调用的多个节点的信息,然后将***申请请求分发至多个节点中的一个或几个节点,具体地,可以根据可调用节点的空闲状态来分发***申请请求。
其中,信息列表中可以包含***基础信息及其对应的可调用的多个节点的信息以及与每个节点对应的号段信息,当然还可以包括与***基础信息对应的第一数据即BIN值。***基础信息可包括发卡机构信息、卡类型信息等。例如:发卡机构可包括美特斯邦威、***等,卡类型信息可包括普通会员卡、VIP(贵宾)会员卡、优惠卡等。举例来说,如表1所示:美特斯邦威的会员卡对应的BIN值为000001,可分发至四个节点。其中,节点1对应的号段信息为0/1000,节点2对应的号段信息为1001/2000,节点3对应的号段信息为2001/3000,节点4对应的号段信息为3001/4000。***会员卡对应的BIN值为000005,可分发至节点10,节点10对应的号段信息为0/1000。***贵宾卡对应的BIN值为000006,可分发至节点11,节点11对应的号段信息为0/1000。
表1信息列表
S103,通过接收到***申请请求的节点获得对应的***基础信息和号段值,并根据对应的***基础信息和号段值生成***,其中,获得的对应同一***基础信息的号段值不同。
由于每个节点对应的号段信息不重复,故上述多个节点可以并行地基于自己的号段信息获得位于对应号段内的不同的号段值,从而可以保证同时且高效地生成多个不重复的***。
需要说明的是,上述操作可以由客户端完成执行,即客户端可以先从服务器获得信息列表,然后根据信息列表确定可调用的多个节点,然后将获得的***申请请求分发至一个或多个可调用的节点,最后通过接收到***申请请求的节点根据获得的对应的***基础信息和号段值生成***,如图1b所示;上述操作也可以由服务器完成,即服务器侧根据服务器侧保存的信息列表确定可调用的多个节点,然后将获得的***申请请求分发至可调用的一个或几个节点,最后通过接收到***申请请求的节点根据获得的对应的***基础信息和号段值生成***,然后向客户端返回生成的***,如图1c所示,最终由客户端执行发卡操作。
本申请实施例的***的生成方法,通过多个节点并行地获得位于自己号段内不同的号段值,并根据获得的不同号段值和对应的***基础信息生成***,不仅保证了生成的***不重复,还解决了大量发卡时性能瓶颈的问题,提高了发卡的效率。
图2为根据本申请一个具体实施例的***的生成方法的流程图。该实施例从接收到***申请请求的节点侧进行描述,其中,接收到***申请请求的节点既可以位于服务器侧,也可以位于客户端侧;对于每一接收到***申请请求的节点而言,其执行生成***的过程如图2所示,包括:
S201,查询信息列表获得与当前***基础信息对应的第一数据,并根据第一数据和与当前节点对应的号段信息获得当前号段值。
具体地,当前节点判断本地的信息列表中是否存在第一数据,若存在,则将已分配号段值作为当前号段值,然后对已分配号段值进行加一运算。举例来说,假设当前节点对应的号段信息为0-1000,当前***基础信息包括美特斯邦威和普通会员卡,若本地的信息列表存在对应美特斯邦威的普通会员卡的第一数据即BIN值,假设为000001,则将第一数据对应的号段信息中的已分配号段值作为当前号段值,假设已分配号段值为3,则将3作为当前号段值,然后将已分配号段值设置为4,这样,当前节点在接收下一个美特斯邦威的普通会员卡申请请求时,就可以将4作为对应请求的号段值,同样地,又需要将已分配号段值设置为5,从而可以保证获得的对应同一***基础信息的号段值不同。
另外,为了保证在信息列表中保存有与***申请请求中包含的***基础信息对应的BIN值,在该实施例中,在服务器接收客户端发送的***申请请求后,获得***申请请求中包含的***基础信息,若本地的信息列表中不存在对应***基础信息的第一数据即BIN值,例如不存在对应美特斯邦威的普通会员卡的BIN值,则分配对应的第一数据,并将分配的第一数据和对应的***基础信息写入信息列表中;另外,在客户端向服务器发送信息查询请求后,服务器可以向客户端返回包含分配的第一数据和对应的***基础信息的信息列表;从而保证了服务器侧或客户端侧保存的信息列表中均包含有与当前***申请请求中包含的***基础信息对应的BIN值。
在该实施例中,当前节点可判断已分配号段值是否小于预定阈值,若小于,则将已分配号段值作为当前号段值。当确定已分配号段值大于等于预定阈值时,查询信息列表中是否存在可用号段,若存在可用号段,则获得可用号段,若不存在可用号段,则生成新的第一数据,并将新的第一数据对应的已分配号段值设置为对应号段的起始值。举例来说,假设当前节点对应的号段信息为0-1000,预定阈值为900,如果已分配号段值为800,小于预设阈值,则当前号段值为800。如果已分配号段值为950,大于预设阈值,则查询信息列表,由于信息列表中还可以包含每个节点的已分配号段信息、最大可用号段信息等,即可根据这些信息判断当前节点是否还有可用号段,若仍有可用号段,则获得可用号段,并将该可用号段作为当前节点的号段信息。若没有可用号段,则生成新的第一数据如:000002,并将新的第一数据对应的已分配号段值设为当前节点对应号段0-1000的起始值0。这样做的目的是:在当前节点的已分配号段值大于预定阈值,即在当前节点的可用号段值很少的情况下,提前获得更多的可用号段值,提高节点获得号段值的效率。
S202,获得校验位信息。
在根据第一数据和对应的号段信息获得当前号段值后,当前节点可获得校验位信息,以保证***的合法性。
S203,根据获得的第一数据、当前号段值和校验位信息生成***。
在获得校验位信息后,当前节点可根据获得的第一数据、当前号段值和校验位信息生成***。具体地,生成***的示意图如图3所示,其中,***基础信息可以包括发卡机构信息和卡类型信息。通过发卡机构信息和卡类型信息,可获得第一数据。发卡要素可包括:第一数据(BIN值)、随即号段(号段值)和校验位。通过上述三个发卡要素,可以生成***。
本申请实施例的***的生成方法,通过多个节点并行地获得位于自己号段内不同的号段值,并根据获得的不同号段值和对应的***基础信息生成***,不仅保证了生成的***不重复,还解决了大量发卡时性能瓶颈的问题,提高了发卡的效率。
为了实现上述实施例,本申请还提出一种***的生成装置。
图4为根据本申请一个实施例的***的生成装置的结构图。该***的生成装置可如图4所示,包括:获得模块110、分发模块120和生成模块130。其中,生成模块130包括:第一获得单元131、第二获得单元132和生成单元133。
获得模块110用于获得用户的***申请请求。
分发模块120用于将***申请请求分发至一个或多个节点,其中,每个节点具有不重复的号段信息。
生成模块130用于通过接收到***申请请求的节点获得对应的***基础信息和号段值,并根据对应的***基础信息和号段值生成***,其中,获得的对应同一***基础信息的号段值不同。
本申请实施例的***的生成装置,通过多个节点并行地获得位于自己号段内不同的号段值,并根据获得的不同号段值和对应的***基础信息生成***,不仅保证了生成的***不重复,还解决了大量发卡时性能瓶颈的问题,提高了发卡的效率。
需要说明的是,上述模块既可以位于客户端中,也可以位于服务器中。因此,下面从服务器和客户端分别进行详细描述,在此不赘述。
图5为根据本申请另一个实施例的***的生成装置的结构图。当由服务器执行生成***的操作时,该***的生成装置可如图5所示,包括:获得模块110、分发模块120、生成模块130和返回模块140。其中,生成模块130包括:第一获得单元131、第二获得单元132和生成单元133。
获得模块110用于获得用户的***申请请求。
在该实施例中,获得模块110可接收客户端发送的发卡请求。其中,发卡请求为当用户需要申请会员卡、优惠卡时,点击客户端相应的卡片产生的。然后,获得模块110可根据发卡请求获得用户的***申请请求。
分发模块120用于将***申请请求分发至一个或多个节点,其中,每个节点具有不重复的号段信息。
具体地,分发模块120将***申请请求分发至一个或多个节点可以通过以下方式实现:分发模块120可根据***申请请求获得***基础信息,根据获得的***基础信息查询本地保存的信息列表,从而确定可调用的多个节点的信息,然后将***申请请求分发至多个节点中的一个或几个节点,具体地,可以根据可调用节点的空闲状态来分发***申请请求。
其中,信息列表中可以包含***基础信息及其对应的可调用的多个节点的信息以及与每个节点对应的号段信息,当然还可以包括与***基础信息对应的第一数据即BIN值,具体地,如表1所示:美特斯邦威的会员卡对应的BIN值为000001,可分发至四个节点。其中,节点1对应的号段信息为0/1000,节点2对应的号段信息为1001/2000,节点3对应的号段信息为2001/3000,节点4对应的号段信息为3001/4000。***会员卡对应的BIN值为000005,可分发至节点10,节点10对应的号段信息为0/1000。***贵宾卡对应的BIN值为000006,可分发至节点11,节点11对应的号段信息为0/1000。生成模块130用于通过接收到***申请请求的节点根据接收到的***申请请求和对应的号段信息获得对应的***基础信息和号段值,并根据对应的***基础信息和号段值生成***,其中,获得的对应同一***基础信息的号段值不同。
具体地,生成模块130包括:第一获得单元131、第二获得单元132和生成单元133。
其中,第一获得单元131用于通过当前节点查询信息列表获得与当前***基础信息对应的第一数据,并根据第一数据和与当前节点对应的号段信息获得当前号段值。
具体地,第一获得单元131判断本地的信息列表中是否存在第一数据,若存在,则将已分配号段值作为当前号段值,然后对已分配号段值进行加一运算。举例来说,假设当前节点对应的号段信息为0-1000,当前***基础信息包括美特斯邦威和普通会员卡,若本地的信息列表存在对应美特斯邦威的普通会员卡的第一数据即BIN值,假设为000001,则将第一数据对应的号段信息中的已分配号段值作为当前号段值,假设已分配号段值为3,则将3作为当前号段值,然后将已分配号段值设置为4,这样,当前节点在接收下一个美特斯邦威的普通会员卡申请请求时,将4作为对应请求的号段值,同样地,又需要将已分配号段值设置为5,从而可以保证获得的对应同一***基础信息的号段值不同。
在该实施例中,第一获得单元131可判断已分配号段值是否小于预定阈值,若小于,则将已分配号段值作为当前号段值。当确定已分配号段值大于等于预定阈值时,查询信息列表中是否存在可用号段,若存在可用号段,则获得可用号段,若不存在可用号段,则生成新的第一数据,并将新的第一数据对应的已分配号段值设置为对应号段的起始值。举例来说,假设当前节点对应的号段信息为0-1000,预定阈值为900,如果已分配号段值为800,小于预设阈值,则当前号段值为800。如果已分配号段值为950,大于预设阈值,则查询信息列表,由于信息列表中还可以包含每个节点的已分配号段信息、最大可用号段信息等,即可根据这些信息判断当前节点是否还有可用号段,若仍有可用号段,则获得可用号段,并将该可用号段作为当前节点的号段信息。若没有可用号段,则生成新的第一数据如:000002,并将新的第一数据对应的已分配号段值设为当前节点对应号段0-1000的起始值0。这样做的目的是:在当前节点的已分配号段值大于预定阈值,即在当前节点的可用号段值很少的情况下,提前获得更多的可用号段值,提高节点获得号段值的效率。
第二获得单元132用于通过当前节点获得校验位信息。
在根据第一数据和对应的号段信息获得当前号段值后,第二获得单元132可获得校验位信息,以保证***的合法性。
生成单元133用于通过当前节点根据获得的第一数据、当前号段值和校验位信息生成***。
在获得校验位信息后,生成单元133可根据获得的第一数据、当前号段值和校验位信息生成***。
返回模块140用于在生成模块130根据对应的***基础信息和号段值生成***之后,向客户端返回***。
本申请实施例的***的生成装置,通过多个节点并行地获得位于自己号段内不同的号段值,并根据获得的不同号段值和对应的***基础信息生成***,不仅保证了生成的***不重复,还解决了大量发卡时性能瓶颈的问题,提高了发卡的效率。
图6为根据本申请又一个实施例的***的生成装置的结构图。当由客户端执行生成***的操作时,该***的生成装置可如图6所示,包括:获得模块110、分发模块120、生成模块130和信息获取模块150。其中,生成模块130包括:第一获得单元131、第二获得单元132和生成单元133。
获得模块110用于获得用户的***申请请求。
在该实施例中,当用户需要申请会员卡、优惠卡时,可以在客户端点击相应的卡片,此时,获得模块110会获得相应的***申请请求。该实施例尤其适合处理用户大量申请***的情况。
分发模块120用于将***申请请求分发至一个或多个节点,其中,每个节点具有不重复的号段信息。
具体地,分发模块120可以先从服务器获得信息列表,然后根据信息列表确定可调用的多个节点,然后将获得的***申请请求分发至一个或多个可调用的节点。
生成模块130的功能和结构与图4所示实施例中的描述一致,在此不赘述。
信息获取模块150用于在分发模块120根据获得的***基础信息查询本地保存的信息列表之前,根据获得的***基础信息向服务器发送信息查询请求,并接收服务器根据信息查询请求返回的信息列表。
在本申请的实施例中,信息获取模块150可预先根据获得的***基础信息向服务器发送信息查询请求,并接收服务器根据信息查询请求返回的信息列表,并在本地保存返回的信息列表,以使客户端在接收到申请请求后,从返回的信息列表中获得***基础信息和对应的号段信息。其中,信息列表中包含***基础信息及其对应的号段信息。
本申请实施例的***的生成装置,接收服务器根据信息查询请求返回的信息列表,不仅保证了生成的***不重复,还解决了大量发卡时性能瓶颈的问题,提高了发卡的效率。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本申请的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本申请的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本申请的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本申请的实施例所属技术领域的技术人员所理解。
在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行***、装置或设备(如基于计算机的***、包括处理器的***或其他可以从指令执行***、装置或设备取指令并执行指令的***)使用,或结合这些指令执行***、装置或设备而使用。就本说明书而言,"计算机可读介质"可以是任何可以包含、存储、通信、传播或传输程序以供指令执行***、装置或设备或结合这些指令执行***、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
应当理解,本申请的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行***执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
此外,在本申请各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
上述提到的存储介质可以是只读存储器,磁盘或光盘等。尽管上面已经示出和描述了本申请的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本申请的限制,本领域的普通技术人员在本申请的范围内可以对上述实施例进行变化、修改、替换和变型。