LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 新闻观点 > 哈希算法还可以用于数据分片

哈希算法还可以用于数据分片

2020-02-24 财神圈Tow 来源:区块链网络

我们知道,负载均衡算法很多,比如轮询、随机、加权轮询等。那如何才能实现一个会话粘滞(session sticky)的负载均衡算法呢?也就是说,我们需要在同一个客户端上,在一次会话中的所有请求都路由到同一个服务器上。

最直接的方法就是,维护一张映射表,这张表的内容是客户端IP地址或者会话ID与服务器编号的映射关系。客户端发出的每次请求,都要先在映射表中查找应该路由到的服务器编号,然后再请求编号对应的服务器。这种方法直观,但也有几个弊端:

如果客户端很多,映射表可能很大,比较浪费内存空间。

客户端下线、上线,服务器扩容、缩容都会导致映射失效,这样维护日程表的成本就会很大;

如果借助哈希算法,这些问题都可以非常完美地解决。我们可以通过哈希算法,对客户端IP地址或者会话ID计算哈希值,将取得的哈希值与服务器列表的大小进行取模运算,最终得到的值就是应该被路由到的服务器编号。这样,我们就可以把同一个IP过来的请求,都路由到同一个后端服务器上。

2.数据分片

哈希算法还可以用于数据分片。

1)如何统计“搜索关键词”出现的次数?

假如我们有1T的日志文件,这里面记录了用户搜索的关键词,我们想要书屋中统计出每个关键词被搜索的次数,该怎么做?

我们来分析下,这个问题有两个难点,第一个是搜索日志很大,没办法放到一台机器的内存中。第二个难点是,如果只用一台机器来处理这么巨大的数据,处理时间会很长。

针对这两个难点,我们可以先对数据进行分片,然后优胜多台机器处理的方法,来提高处理速度。具体思路是这样的:为了提高处理的速度,我们用n 台机器并行处理,我们从搜索记录的日记文件中,依次读出每个搜索的关键词,并且通过哈希函数计算哈希值,然后再跟n 取模,最终得到的值,就是应该被分配到的机器编号

这样,哈希值相同的搜索关键词就被分配到了同一个机器上。也就是说,同一个搜索关键词会被分配到同一个机器上。每个机器会分别计算关键词出现的次数,最后合并起来就是最终的结果。

我们使用QKFile网络访问东西或者下载东西时,系统就会从离我们最近的距离(这里不是物理距离,是数学距离)的一些存储节点,传输数据或者文件的碎片(不是整个文件)给我们。 当然,最后给我们的是整个数据或者文件。 所以QKFile的速度会非常的快,因为不用下载整个文件嘛,并且如果周围的其他人,同样也下载了你需要的文件,这样你的下载速度会被加速哦。 那如果最近的节点没有我们的文件怎么办? 系统就从另外的节点进行索取文件碎片嘛。 那如果某个存储节点被损坏了怎么办? 别担心,QKFile系统会有一个容错机制,容错机制的意思就是一份文件如果被分割成7份,其中三份损坏了,那么可以根据剩下的四份还原出文件来,嘿嘿,这技术是不是很酷?这样,我们的文件的安全性就大大提高了,就算是世界末日,只要还有一个节点上有你的文件碎片,你的文件就有希望被还原哦

—-

编译者/作者:财神圈Tow

玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。

LOADING...
LOADING...