1.一种海量二维码分布式生成方法,其特征在于,包括以下步骤:发送请求,包括需要编码的信息和请求的IP地址;接收请求后,使用Hash一致性算法进行任务分配,选择合适的服务器进行处理,并将请求转发到被选择的服务器上;从服务器中的多个二维码计算节点选择一个节点,生成二维码图像,并将二维码图像返回给客户端;所述从服务器中的多个二维码计算节点选择一个节点,包括:通过哈希函数,将请求的IP地址和服务器的IP地址映射到一个具有2^32次方个桶的空间中,将这些数字头尾相连,形成一个闭合的环形,即哈希环;当客户端发起请求时,获取请求的客户端IP地址,使用相同哈希函数计算出客户端IP在哈希环上索引值;客户端IP映射到哈希环上的索引值顺时针方向第一个遇到的服务器节点,就是该请求的处理节点;当某个服务器上下线或者增减节点时,只影响到该节点和它顺时针方向的请求分发,而不会对整个哈希环造成影响,保证数据分布的相对平衡性和分布式系统的高可用性;所述哈希环的计算方式为:对IP地址进行MD5计算出哈希值,将哈希值对哈希环的大小取模,得到的余数就是哈希值对应哈希环的槽位的索引值;取模运算公式为:n%2^kn为哈希值,k为哈希环的大小,%是取模运算符;二维码图像生成包括:准备要编码的文本信息,文本信息至少包括用户编号、身份识别编码之一;生成一个当前时间戳,将文本信息和时间戳进行字符串拼接,得到待签名数据;对待签名数据进行数字签名;将生成的签名值与原始数据一起作为二维码的数据部分进行编码;将待编码数据转换为二维码矩阵;采用 Reed-Solomon 算法来实现纠错编码,提高二维码的容错率,将原始需要编码的数据后面补0,本步为校验码占位;除以生成多项式取余下的多项式为校验多项式;将校验多项式加到补过0的编码数据多项式中,最终生成的编码;具体过程如下:(1)分配数据区和校验区首先,将二维码矩阵按照Reed-Solomon算法的要求,分成数据区和校验区;数据区包含要编码的信息,校验区则用于存储冗余校验码;校验区的大小根据版本和纠错等级来计算;校验区的大小使用以下公式进行计算:校验区的大小=(版本号+1)×4+(纠错等级×2+17),其中,版本号从1开始,纠错等级为L、M、Q或H;(2)对数据区进行编码将数据区按照Reed-Solomon算法进行编码;编码时在校验区中生成冗余校验码,并将它们存储在校验区的对应位置上;(3)构建最终的二维码矩阵将数据区和校验区中的信息组合在一起,构建最终的二维码矩阵;校验码分布在整个二维码中,以增加容错能力。
2.根据权利要求1所述的一种海量二维码分布式生成方法,其特征在于,采用国密SM3withSM2算法进行数字签名,具体过程如下:将待签名数据作为输入,计算SM3哈希值;使用SM2算法对哈希值进行数字签名;将数字签名和文本信息拼接成最终的签名结果。
3.根据权利要求2所述的一种海量二维码分布式生成方法,其特征在于,所述SM3withSM2算法的公式如下:H = SM3(M)S = SM2Sign(SK, H)其中,M是待签名数据,SK是签名者的私钥,H是M的SM3杂凑值,S是M的SM2签名值。
4.一种使用如权利要求1-3任一项所述方法的海量二维码分布式生成系统,其特征在于,包括:客户端:发送请求,包括需要编码的信息和请求的IP地址;负载均衡器:接收请求后,使用Hash一致性算法进行任务分配,选择合适的服务器进行处理,并将请求转发到被选择的服务器上;二维码生成模块:从服务器中的多个二维码计算节点选择一个节点,生成二维码图像,并将二维码图像返回给客户端。
5.一种计算机可读存储介质,所述计算机可读存储介质包含有计算机程序,其特征在于,所述计算机程序在被一个或多个计算机执行时使得所述一个或多个计算机执行如下操作:所述操作包括如权利要求1-3中任一项所述的海量二维码分布式生成方法所包含的步骤。