我们通常使用数组或者链表来存储元素,一旦存储的内容数量特别多,需要占用很大的空间,而且在查找某个元素是否存在的过程中,数组和链表都需要挨个循环比较,而通过DHT计算,可以大大减少比较次数。
分布式散列表的概述
Hash(哈希),又称“散列”。散列(hash)英文原意是“混杂”、“拼凑”、“重新表述”的意思。
分布式散列表(Distributed hash table,缩写DHT)是分布式计算系统中的一类,用来将一个关键值(key)的集合分散到所有在分布式系统中的节点,并且可以有效地将消息转送到唯一一个拥有查询者提供的关键值的节点。
DHT技术就是可以使得网络中的任何一个机器都实现服务器的部分功能,使得用户的下载不再依靠于服务器。
分布式散列表的应用
分布式散列表可以用以创建更复杂的服务,例如分布式文件系统、点对点技术文件分享系统、合作的网页缓存、多播、任播、网域名称系统以及即时通信等。
Napster是一种在线音乐服务,Napster是第一个被广泛应用的点对点(Peer-to-Peer,P2P)音乐共享服务,它极大地影响了人们,特别是大学生使用互联网的方式。
自由网(Freenet)是对等网络的一个应用软件。用Java编写的跨平台软件,有5个以上节点的用户群,就可以用宽带分享种子文件,组成独立的网络系统。主要应用在匿名互联网领域,如海盗湾、维基解密、丝绸之路等;
Gnutella是一种文件共享网络。其在本领域内占有超过40%的市场份额,是Internet上最流行的一种文件共享网络。
DHT与BitComet
BitComet具体是怎样连入DHT网络的。连入DHT网络的用户叫做节点(node),节点之间互相有路由记录,因此只要和任何一个已经在DHT网络中的节点连接上,客户端就可以寻找到更多的节点,从而连入网络。在BitComet中如何使用,无须作任何设置即可自动连接并使用DHT网络,完全不需要用户干预。BitComet使用和TCP端口号相同的UDP端口进行DHT网络连接。如果要完全禁用DHT网络,可以在选项-高级-网络连接中禁用DHT网络。对于种子制作者。内网用可以使用。如果有可能打开路由器上所需端口的UDP转发将更加有助于整个DHT网络的健壮性。
Hash与java
Hash数据结构在java中是原生的一个集合对象,在实际中用途极广,主要有这么几个特点:
1、访问速度快
2、大小不受限制
3、按键进行索引,没有重复对象
4、用字符串(id:string)检索对象(object)
分布式散列表特性
分布式散列表必须处理传统分布式系统可能遇到的问题,例如负载平衡、数据完整性,以及性能问题(特别是确认转送消息、数据存储及读取等动作能快速完成)。本质上强调以下特性:
1、离散性:构成系统的节点并没有任何中央式的协调机制。
2、伸缩性:即使有成千上万个节点,系统仍然应该十分有效率。
3、容错性:即使节点不断地加入、离开或是停止工作,系统仍然必须达到一定的可靠度。
总结
分布式散列表通常是为了拥有极大节点数量的系统,而且在系统的节点常常会加入或离开(例如网络断线)而设计的。
文章评论