- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在思考 BitTorrent 的工作原理时,我想到了几个问题。如果有人可以分享一些可能的回应,将不胜感激。
假设一个 BitTorrent 从跟踪器获得 50 个对等点,然后与其中的 20 个建立连接以形成对等点集。这个对等组是随机选择的还是基于他们的带宽? (我知道将根据其提供的带宽选择将被取消阻塞的对等方)随后,如何为每个连接确定此带宽(ping 可以给我们延迟,但不能给我们假设的带宽)
乐观的开放导致系统中的搭便车问题。考虑到不阻塞可能并不总是产生更好的对等点,为什么根本不可能放弃这个策略? (我假设这个策略可以帮助带宽较慢的节点来满足请求,为什么 BitTorrent 不能采用一个策略来探测乐观节点的带宽而不发送数据包;并为低带宽节点提供另一个(可能是第 5 个连接),以便他们不要挨饿。与其他 4 个 channel 相比,第 5 个 channel 的传输带宽仅为其一小部分)这至少可以阻止搭便车?
最佳答案
传统上,对等点是随机选择的。基于之前与对等方的交互或 CIDR 距离,一些客户可能有较弱的偏见。但是,最近有一个 proposal (uTorrent 和 libtorrent 实现)建议使用一致但均匀分布的对等选择/优先级算法。如需更多信息,请参阅 this blog post .取消阻塞算法每 15 秒触发一次。然后对等点按它们在过去 15 秒内发送的字节数进行排序。然后发送最多的那些不会被阻塞,其余的则被阻塞。所以,下载速度是 15 秒的平均值。
如果你不乐观地解开同伴,你就没有办法向他们证明你比他们解开组中的其他同伴更好,而且他们永远不会解开你。如果没有乐观的 uncokes(也假设您没有 allow-fast 扩展),就无法开始下载。当你第一次加入时,你不会有任何棋子,你不能交易第一个棋子,你必须依靠乐观不窒息。在不发送大量数据的情况下估计某人的带宽很困难,而且可能不可靠。即使您对某人的能力有一个很好的估计,这也不一定意味着您可以使用该能力。当前的机制非常稳健,因为它不需要对对等点之间的网络设备进行假设(就像数据包序列带宽估计需要做的那样),它会查看实际数据。
关于p2p - BitTorrent Optimistic Unchoke/Bandwith 探测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22293842/
我觉得问这个问题有点愚蠢,但为了把事情弄清楚,有时必须问一些愚蠢的问题:) 因此,我们可以像 Martin Kleppmann 在他的演讲中所做的那样定义写入偏差: Write skew patter
当使用乐观锁定策略时,可以解决如下并发问题: | the first transaction started ||
我正在尝试安装 angular phone cat 应用程序并使用 karma 测试运行器运行测试用例。我安装了 Node v0.10.33。我已经在全局范围内安装了 karma 。现在,我尝试使用“
首先,我知道有很多关于该主题的已发布问题:1 2 3 4 5 .建议的方法和原因: Marshal.SizeOf() 1 - 不适用于托管类型。 GC.GetTotalMemory 1 2 - 容易出
在我的 React 应用程序中,我使用数据库 ID 作为键来渲染从服务器返回的项目数组。 items.map(item => ) 这工作正常,但现在我想做乐观更新,所以我在将新项目提交到服务器之前将其
所以我正在阅读 Optimistic UI这是我想在我的 android java 应用程序中实现的东西。 我的 Android 应用程序与我的其余 api 连接。我的困惑是我该怎么做? 我有一个产品
在思考 BitTorrent 的工作原理时,我想到了几个问题。如果有人可以分享一些可能的回应,将不胜感激。 假设一个 BitTorrent 从跟踪器获得 50 个对等点,然后与其中的 20 个建立连接
我正在调试使用 JPA/Hibernate 和 Postgres (9.6.2) 的 Java 应用程序的奇怪行为。 应用程序有 3 个实体:User、Country、UserEvent。 Hiber
我正在尝试使用 yargs 为 Node 模块编写 CLI但是我很难设置两个可以使用的不同命令,一个只需要一个参数,而另一个需要两个。这是我目前所拥有的 var argv = require('yar
我正在阅读 intro to redux pattern , 那里有以下段落: ... consider the new requirements becoming common in front-e
我正在使用具有 Render Prop API 并尝试在 UI 中执行乐观响应的组件。 到目前为止,我在 _onSubmit 中有这个 block 功能- createApp({ variab
尝试修复 Carto tool from Mapbox 的离线安装在 Ubuntu 14.04 上。目前, Node 给我一个错误,它找不到 optimist 模块。我可以手动找到一个 optimis
正在关注 the Apollo docs on Mutation components ,我有一个有效的 Mutation 组件,看起来像 Apollo 文档中提供的这个示例: { cons
我正在寻找一种让乐观的用户界面从列表中删除项目的方法。 列表的查询是: myQuery{ Foo:{ Bar:{ id } } 删除突变: mutation deleteBar(inp
我正在尝试测试我的应用程序的乐观锁定实现。然而结果并不是我所期望的。我测试的步骤如下 从数据库加载实体 将版本属性设置为比数据库中存在的版本属性小 1 将另一个只是字符串的属性更改为其他内容 保存实体
我是 optimist 的新手我做了一些谷歌搜索和尝试,但我仍然找不到添加 --help 选项的优雅方法。 我看到一个 help()文档上的选项。有了这个,我希望以下工作: var argv = re
使用 React.js 真的很愉快。 我根据官方教程搭建了一个简单的评论应用。 您可以添加、编辑和删除评论。它们每 10 秒通过 GET 拉取一次。 本教程有一次提到乐观更新:在创建、更新或删除操作的
我们使用 SendGrid API 将敏感电子邮件发送到 Office365 托管的电子邮件地址。默认情况下,这两种服务都使用机会性 TLS,这反过来会让您相信电子邮件始终会使用 TLS 进行加密。
有一个实体 Foo 带有 @Version 列。如果我想删除它,我希望 Spring Data JPA 和/或 Hibernate 检查 @Version 列的当前值是否与数据库中的值匹配。如果不是,
static boolean unsynchronizedSetter(Date expected){ Date newDate = new Date(); AtomicReferen
我是一名优秀的程序员,十分优秀!