数据分割(data splitting)是一种通过加密数据并将其存储在不同服务器文件的不同部分来保护敏感数据不被未经过认证的访问。当分割数据被访问时,检索到的部分被整合并解密。一个未经过认证的人需要知道存储了各个部分的服务器的地理位置,并能够访问到每个服务器,知道什么数据要整合,以及如何解密。

将问题拆解为可以使用多机分布式解决,使得分布式系统中的每台机器负责问题的一个子集,主要方法:

1.哈希方式:按照数据属于用户的id计算哈希。

   

优点:散列性:好。

元信息:只需要函数+服务器总量。

缺点:可扩展性差,一旦集群规模扩展,大多数数据都需要迁移并重新分布。

数据倾斜:当某个用户id的数据量异常庞大时,容易达到单台服务器处理能力的上限。

2.按数据范围分布

将数据按特征值的值域范围划分数据。 例如将用户id的值域分为[1, 33), [33, 90), [90, 100),由三台服务器处理。 注意区间大小与区间内的数据大小没有关系

优点: 可扩展性:好。灵活根据数据量拆分原有数据区间

缺点: 元信息:大。容易成为瓶颈
3.按数据量分布

与按范围分布数据方式类似,元信息容易成为瓶颈

4.一致性哈希

用一个hash函数计算数据(特征)的hash值, 令该hash函数的值域成为一个封闭的环,将节点随机分布在环上。 每个节点负责处理从自己开始顺时针到下一节点的值域上的数据。

 


优点: 可扩展性:极好。任意动态添加、删除节点,只影响相邻节点

缺点: 元信息:大而且复杂 随机分布节点容易造成不均匀 动态增加节点后只能缓解相邻节点 一个接点异常时压力全转移到相邻节点

posted on 2018-01-23 14:02  NightRaven  阅读(1278)  评论(0编辑  收藏  举报