hash算法及应用场景
hash算法,就是将一个数据,通过某种hash算法,比如md5,将其转换成一个新值。在密码学里也叫hash摘要,摘要算法。或者叫hash散列。在程序开发设计中,通常是将某一类数据,找出数据的特征值,比如ID,进行hash,然后通过hash和原值绑定映射起来,便于候选的筛选和比较。在分布式存储里,通常可以将数据进行hash算法,映射到不同存储节点里,比如数据库分库,或者其他数据的分片存储。
分布式存储hash算法具体实现过程
这里以电商系统订单数据分库存储为例,比如某宝订单数据非常多,特别是双十一等大促活动,订单数据不分片肯定支持不了那么大高并发,假如数据存储在mysql库,单库压力非常大,肯定扛不住,必须分片即分库。可以通过hash算法,比如开发或者选用某个hash函数,将订单ID进行hash出一个整数值,假如准备的有m台数据库进行存储,将hash出来整数值,对m取模,不同的订单,进入不同的库。查询时,由于hash算法特点,同一个key,hash出来的值肯定相同,肯定能路由到正确的库,查询到数据。这样对订单数据进行分库存储,大大提高了订单业务的并发能力。
分布式存储hash算法存在的问题
还是以某宝订单通过hash分库存储为例,假如某宝订单量越来越大,已有的m个库,已经无法满足高并发请求了,需要增加数据库分担压力,数据库总数增大到n,但是通过上面的数据hash路由过程,由于m变成了n,将导致已经存储