前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >哈希区块链游戏搭建原理分享

哈希区块链游戏搭建原理分享

原创
作者头像
tg-chuhaiyuanmaba
修改2022-09-16 16:31:55
1.1K0
修改2022-09-16 16:31:55
举报
文章被收录于专栏:哈希竞猜游戏搭建

哈希表基于键值;并且直接访问数据结构。也就是说,它通过将键值映射到表中的某个位置来访问记录,以加快搜索速度。这个映射函数叫做哈希函数,存储记录的数组叫做哈希表。

哈希算法将任意长度的二进制值映射为更短的固定长度的二进制值,这个小的二进制值称为哈希值。哈希值是一段数据的唯一且极其紧凑的数字表示。如果对一段纯文本进行哈希运算,即使段落中的一个字母发生了变化,后续的哈希运算也会产生不同的值。在计算上不可能找到散列到相同值的两个不同输入,因此数据的散列值可以检查数据的完整性。

哈希值是使用数学函数创建的字符序列。这个序列的特点是安全性好,可以让你安全地发送消息。重要的是,它是目前市面上每一个加密产品B的一部分,但可以说它们都有不同的价值和品质。我们可以确定的是,合适的hash值是每个加密商品b成功率的一部分,简单来说,hashing就是将任意长度的消息压缩成某个固定长度的消息摘要的函数。利用哈希函数,互联网上的数据可以以固定长度的字符串形式保存。

哈希属性:

(1)单向的。也就是说,给定一个输入数,很容易计算出它的哈希值,但是按照同样的算法无法得到原始的输入数。

(2)抗碰撞能力弱。也就是说,给定一个输入数字,当使用相同的方法时,在计算上不可能找到给定数字的另一个散列值。

(3)抗碰撞能力强。也就是说,对于任意两个不同的输入数,按照相同的算法计算出相同的哈希值是不可行的。

哈希算法主要用于信息安全领域的加密算法。它将一些不同长度的信息转换成杂乱无章的128位编码,这些编码值称为哈希值。换句话说,通俗点说,Hash就是找到数据内容和数据存储地址之间的映射关系。

在动态变化的缓存环境中,使用四个定义来判断哈希算法:

1.分散性——这意味着哈希算法应该尽最大努力避免不一致,并最小化分散性。在对终端进行哈希的过程中,将终端映射到缓冲区时,不同的终端可能会看到不同的缓冲区范围,哈希结果不一致。当然,终端可能看不到所有的缓冲区,可能只看到其中的一部分。相同的内容会被不同的终端映射到不同的缓冲区。如果相同的内容存储在不同的缓冲区,系统的存储效率会降低。

2.balance——很多哈希算法都可以满足这个条件。这样一来,hash就可以尽可能不被划分到所有的缓冲区中,从而可以利用缓冲区空间。

3.负载:哈希算法要尽可能减少缓冲区负载。和上面的分散一样,这种情况要尽量避免。对于一个特定的缓冲区,可能会被不同的映射到不同的内容。这个负载其实是从另一个角度看分散,不同的终端可能会把相同的内容映射到不同的缓冲区。

4.单调性:哈希的结果应该尽量保证原来的和分配的内容可以映射到原来的或者新的缓冲区,但是不能映射到旧缓冲区集中的其他缓冲区。也就是说,在过去,如果一些内容已经通过哈希分配到相应的缓冲区,那么系统中就会增加一个新的缓冲区。

哈希函数、算法

哈希算法将任意长度的二进制值映射为更短的固定长度的二进制值,这个小的二进制值称为哈希值。哈希值是一段数据的唯一且极其紧凑的数字表示。如果对一段纯文本进行哈希运算,即使段落中的一个字母发生了变化,后续的哈希运算也会产生不同的值。在计算上不可能找到散列到相同值的两个不同输入,因此数据的散列值可以检查数据的完整性。

相同的哈希算法

三台缓存服务器离得很近。这一次,我们将哈希值建模为232。结果必须是1到232之间的整数。

那么我们来想象一个环,其中每个点代表1到2 ^ 32之间的一个整数。这个环也叫哈希环。

但是,之后我们在服务器A上进行模运算,这样计算出来的整数必须在1到2 ^ 32之间。这个整数被表示为服务器A,我们可以将这个整数映射到哈希环。类似地,我们处理另外两个服务器。此时,所有三台服务器都被映射到散列环。对于图像,我们也将其映射到哈希环。然后我们从图像的哈希值开始,顺时针看哈希环。我们遇到的第一个服务器是图像缓存所在的服务器。

即使在哈希环中加入一个全新的服务器,gate丢失的缓存数据也只是从新加入的服务器到逆时针遇到的第一个服务器的数据。这样,大多数缓存仍然可以在缓存服务器中找到。这样可以帮助后端服务器分担大部分压力,而不会导致服务器崩溃,这部分丢失的缓存数据可以加载到后端。

这将引入另一个问题,哈希偏移。

我们不能保证这三台服务器均匀分布在哈希环上。很有可能一个服务器获得大份额,另外两个服务器获得小份额,也有可能导致后端服务器崩溃。

我们可以向同一个服务器添加多个虚拟节点。我们将许多虚拟节点划分到同一个服务器中,并将它们映射到哈希环。哈希环中的节点越多,缓存就越有可能均匀分布。这样可以保证躺在服务器上的存储状态尽可能接近完美对称分布状态,避免哈希偏移的问题。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档