- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前正在使用免费糕点 DHT 进行一些性能测试。 Freepastry 是一个用 Java 完成的开源 DHT。
目标是在一定数量的节点宕机时监控对 DHT 的影响。我的问题是我不确定消除节点的最佳方法。目前,每个节点都在我机器上的不同端口上运行。我正在使用 Pastry API 中的 destroy() 方法销毁这些节点 http://www.freepastry.org/FreePastry/javadoc21a3/rice/pastry/PastryNode.html#destroy ()
我担心这在模拟节点故障时可能不切实际,我是否应该以不同的方式杀死节点,例如使用 tcpkill?
我正在运行 Mac OS X snow leopard,有兴趣听取任何建议吗?
最佳答案
节点故障有多种形式。
最常见的是节点离线,因为运行 DHT 的应用程序已关闭。
家庭互联网连接的动态 IP 的更改本质上具有微妙的不同效果,因为它会使所有现有的路由表条目无效,但总节点数不会下降。你失去一个,你得到一个新的。
另一个常见问题是 NAT 导致的可达性问题。该节点的可见性可能取决于 NAT 类型以及您最近是否与它有过接触。
流失的结果实际上可能非常复杂。首先,单个节点的正常运行时间通常遵循指数分布。许多只能在短时间内使用,很少能保持稳定数天或数月。
假设您有一个稳定的核心,由中等至长生命周期的节点组成,这些节点实际上占网络的 90%。 10% 的相同节点不断出现和消失会导致一些开销流量,但它们不会对网络造成太大伤害。
你有很多流失,但影响很小。
如果 10% 的节点在 10 分钟后离线,并被非 Activity 池中的一组全新节点替换,那么您实际上每 10 分钟就会失去 10% 的冗余。如果节点之间的数据复制跟不上,甚至不存在,您的数据将呈指数衰减。
你也有很多流失,但影响巨大。
我什至不确定什么样的模拟会以最好的方式反射(reflect)现实。我想最现实的限制就是拥有一个固定的潜在节点池。那是安装了 DHT 实现的计算机。
然后每个节点都会有一个关于它平均保持多长时间和平均下降多长时间的时间曲线(这两个参数彼此部分相关。长时间正常运行的节点通常不会有很长的停机时间因为它们可能一直在线)。并且每个节点独立地作用于这些参数。
实际上,一天中的时间也起着重要作用,在这里很容易看出:http://dsn.tm.uni-karlsruhe.de/english/2936.php
所以......长话短说,仅仅随机运行和杀死几个节点不会给你一个关于 DHT 弹性的真实结果,因为影响会大不相同。
至于技术部分,您可能希望在同一个 java VM 中运行所有这些,并使用多线程或非阻塞 IO 来减少在单独的 VM 中运行每个实例的开销。这也将允许您以更现实的方式安排他们的启动和停机时间。
由于您可以为一台计算机分配多个 IP,因此您应该能够仅根据 IP/端口数在一台计算机上运行数十万个节点。但是,即使是最快的系统,该过程的资源消耗最终也会陷入困境,因为实际上很少有 DHT 实现能够很好地扩展。
因此,您可能需要在每台计算机有几千个节点的网络上运行它,才能使任何事情接近现实。
要么是这样,要么你求助于更多的数学模拟,而不是运行实际的实现。
关于java - 在 DHT 中模拟节点故障,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11689920/
请像我在您的 vps 中所做的那样,然后可能会重现该问题,请替换变量 $vps_ip在以下步骤中使用您的真实 vps ip。 wget https://saimei.ftp.acc.umu.se/d
好的,假设我有一个运行有 10 个客户端的 DHT,其中包含一堆数据。 恶意客户端运行我的程序的替代版本不是相对容易吗,这可能会对我的数据进行潜在的破坏性操作(例如替换 key 、删除 key 、更改
是否允许在 Mainline DHT 中的同一 ip:port 对后面运行多个不同的 DHT 节点? 哪个节点应该回复 DHT 查询消息? 全部还是其中之一? 先感谢您。 最佳答案 简短的回答是:其中
假设我只实现了 DHT(分布式哈希表)(在 Python 中),并且我想通过 P2P 网络构建身份验证服务,但没有引入具有此类服务的集中式身份验证服务器。可以做到吗,如果可以,我该如何实现? 我熟悉
在我的新周末项目中,我决定从头开始编写一个 bittorrent 客户端,根本没有准备好使用库。经过两天寻找文档,我已经准备放弃 :smile:。我知道有 BEPs , 但他们还远远不足以理解所有规范
我正在编写一个 P2P 实现,我希望将其去中心化。然而,我在掌握如何DHT时遇到了一些困难。在像 BitTorrent 这样的协议(protocol)中是有效的。 如果没有跟踪器,客户端如何知道对等点
我想(通过 PHP)收集当前正在下载的 info_hashes 或搜索 DHT。 我见过 BTDigg 将 DHT 用于搜索引擎,我想做类似的事情。 此外,在获得哈希后,如何将哈希转换为种子文件以便获
有人可以向我澄清主线 DHT 规范中的声明吗? Upon inserting the first node into its routing table and when starting up th
我正在尝试了解 Distributed Hash Table (DHT)范式,因为它适合 P2P 或完全分布式的计算架构。从理论的角度来看,一旦集群建立起来,它如何管理集群数据和分配工作就很有意义了。
我目前正在使用免费糕点 DHT 进行一些性能测试。 Freepastry 是一个用 Java 完成的开源 DHT。 目标是在一定数量的节点宕机时监控对 DHT 的影响。我的问题是我不确定消除节点的最佳
kademlia paper抽象地讨论桶的组织、拆分、合并和找到要插入的正确桶,concise和 confusing条款。 §2.2 讨论了一组固定的 160 个桶,每个桶覆盖键空间的一个固定子集。但
谁能解释一下 DHT 的工作原理吗? 没有什么太重的,只是基础知识。 最佳答案 好吧,它们本质上是一个非常简单的想法。 DHT 为您提供了类似字典的界面,但节点分布在整个网络中。 DHT 的技巧在于,
我正在尝试访问 Torrent DHT 网络,但我很难弄清楚如何访问 DHT 中的“入口”节点。 How does a DHT in a Bittorent client get "bootstrap
如果您创建使用分布式哈希表 (DHT) 的新应用程序,则需要引导 p2p 网络。我的想法是您可以加入现有的 DHT(例如 Bittorrent DHT)。 这可行吗?当然,我们假设技术相同。将 Cho
我从 wiki 中获得了关于 DHT 的基本概念: 存储数据: 在 DHT 网络中,每个节点负责 key-space 的特定范围。 .要将文件存储在 DHT 中,首先,hash the file's
我试图了解 DHT可用于解决我正在处理的问题: 我有一个交易环境,专业期权交易者可以通过要求其他交易者借给他们一些风险限额来提高他们的风险限额。借贷交易者可以搜索具有某些风险参数的交易者,这些参数是每
我一直在研究 libtorrent/rasterbar 的 python 绑定(bind)。我想做的是生成一个新的“node-id”并将其重新通知给其他节点。 我读到需要创建一个“编码词典”,并且我假
我最近正在学习 Bit-torrent 协议(protocol),并且我已经使我的脚本成功通过 DHT 协议(protocol)获取大量对等地址,具体取决于文档 bep_0005: http://ww
我正在阅读有关 DHT 的资料,但很难找到有关节点发生故障时 DHT 值的后果的信息。 据我所知,如果没有数据冗余(哈希表值),单个节点的故障只会使存储在该节点中的值不可用。但是,如果我想使用 DHT
我正在尝试让 monotorrent 的 dht 实现工作,但我似乎找不到任何同行。 我已经尝试了网络上可用的大部分示例代码,例如 testclient 和 dhttest。 我尝试了几种不同的信息哈
我是一名优秀的程序员,十分优秀!