【技术实现步骤摘要】
对数据写入请求进行流量均衡的方法和系统
本公开涉及对数据写入请求进行流量均衡的方法和系统。
技术介绍
对于需要使用大型数据库的系统(例如,金融公司的账务处理系统、购物网站的订单处理系统,等等)而言,一般都会进行数据库的分库分表操作,也就是将要写入的数据(例如,交易记录、订单,等等)按照一定规则分散到不同的数据库,达到流量均衡的目的。然而,目前的流量均衡策略一般与业务强耦合,而且需要人工配置流量均衡的规则。从而,如果漏配置或者配置错误,都可能达不到流量负载均衡的效果,导致某一些数据库流量过大影响性能和/或导致故障。
技术实现思路
本公开提出了一种将原本需要手动配置的路由功能沉入业务逻辑的方案。该方案通过使用散列算法对请求参数进行散列并根据散列值得出要路由到的数据分库,解决了负载均衡问题。本公开的这一方案利用散列函数的随机性来达成负载和/或流量均衡,不需要配置路由表,避免了手工配置错误或者遗漏以及业务请求的发起者或者业务标识的分表位集中导致的流量不均衡现象,不仅解放了生产力而且达到了负载均衡的效果。根据本公开的第一方面,提供了一种用于对数据写入请求进行流量均衡的方法,包括:获取将数据写入到数据库的数据写入请求,其中所述数据写入请求至少包括能唯一地标识该请求的业务标识符和序列号;解析所述数据写入请求以得到请求参数,所述参数至少包括所述业务标识符和所述序列号;基于解析出的所述参数来计算所述数据写入请求的散列值,其中所述散列值能唯一地标识所述数据写入请求;以及基于所述散列值来将所述数据写入请求路由到 ...
【技术保护点】
1.一种用于对数据写入请求进行流量均衡的方法,包括:/n获取将数据写入到数据库的数据写入请求,其中所述数据写入请求至少包括能唯一地标识该请求的业务标识符和序列号;/n解析所述数据写入请求以得到请求参数,所述参数至少包括所述业务标识符和所述序列号;/n基于解析出的所述参数来计算所述数据写入请求的散列值,其中所述散列值能唯一地标识所述数据写入请求;以及/n基于所述散列值来将所述数据写入请求路由到相应的数据库,以将数据写入该数据库。/n
【技术特征摘要】
1.一种用于对数据写入请求进行流量均衡的方法,包括:
获取将数据写入到数据库的数据写入请求,其中所述数据写入请求至少包括能唯一地标识该请求的业务标识符和序列号;
解析所述数据写入请求以得到请求参数,所述参数至少包括所述业务标识符和所述序列号;
基于解析出的所述参数来计算所述数据写入请求的散列值,其中所述散列值能唯一地标识所述数据写入请求;以及
基于所述散列值来将所述数据写入请求路由到相应的数据库,以将数据写入该数据库。
2.如权利要求1所述的方法,其特征在于,所述散列值是至少对所述数据写入请求中包括的所述业务标识符和所述序列号应用散列函数来获得的。
3.如权利要求2所述的方法,其特征在于,所述散列函数包括以下中的任一者:MD4、MD5、SHA-1。
4.如权利要求1所述的方法,其特征在于,数据库分库数目是N,其中N是大于等于1的整数,并且各数据库按0到N-1来编号,并且基于所述散列值来将所述数据写入请求路由到相应的数据库包括:
通过使用函数运算将所述散列值映射到相应数据库编号;以及
将所述数据写入请求路由到相应编号的数据库。
5.如权利要求4所述的方法,其特征在于,所述函数运算包括模运算,并且通过使用函数运算将所述散列值映射到相应数据库编号包括:
根据数据库分库数目N对所述散列值进行模运算以得到余数;以及
将所述数据写入请求路由到编号等于所述余数的数据库。
6.如权利要求5所述的方法,其特征在于,在进行模运算之前,根据预定映射将所述散列值中的字母替换成数字,以得到纯数字形式的散列值。
7.如权利要求6所述的方法,其特征在于,所述模运算进一步包括:
将所述散列值拆分成两段或更多段,并根据预定值对每一段进行模运算;
将针对各段所得到的各个余数累加在一起以得到总和;以及
根据数据库分库数目对所述总和进行模运算以得到余数。
8.如权利要求7所述的方法,其特征在于,所述预定值大于等于所述数据库分库数目N。
9.如权利要求1所述的方法,其特征在于,所述数据写入请求包括汇总记账请求。
10.如权利要求9所述的方法,其特征在于,还包括在解析所述数据写入请求之前确定该请求是否是汇总记账请求,并且如果是则执行该方法的后续解析请求和计算散列值操作,相反如果否则按照普通方式进行记账。
11.一种用于对数据写入请求进行流量均衡的系统,包括:
数据写入请求源设备,其被配置成产生将数据写入到数据库的数据写入请求,其中所述数据写入请求至少包括能唯一地标识该请求的业...
【专利技术属性】
技术研发人员:王磊,
申请(专利权)人:阿里巴巴集团控股有限公司,
类型:发明
国别省市:开曼群岛;KY
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。