有没有人在使用Winsock的C++中有任何良好的点对点(p2p)网络示例?对于特别需要使用这种技术的客户来说,这是一个要求(天知道为什么).我需要确定这是否可行.
任何帮助将不胜感激.
我想避免使用库,这样我就可以理解底层的源代码并进一步了解我的知识.
我100 servers在我的集群中.
当时17:35:00,所有100 servers都提供了数据(大小1[MB]).每个服务器处理数据,并产生约的输出40[MB].每台服务器的处理时间是5[sec].
在time 17:35:05(5[sec] later),需要一台中央机器来读取所有输出100 servers(记住,数据的总大小是:100 [机器] x 40 [MB] ~4 [GB]),聚合它,并产生一个输出.
这是非常重要的是整个过程gathering the 4[GB] data的所有100 servers花费尽可能少的时间尽可能.我该如何解决这个问题?
是否有任何python可以提供帮助的现有工具(理想情况下,但会考虑其他解决方案)?
我正在开发一个Web爬虫,它可以为不想编入索引的站点编制索引.
我的第一次尝试:我编写了ac#crawler,遍历每一页并下载它们.这导致我的IP在10分钟内被其服务器阻止.
我将它移动到亚马逊EC2并编写了一个运行大约50个实例的分布式python脚本.这仍然高于启动我的门槛.每月花费约1900美元......
我回到了我最初的想法并把它放在缩短版的TOR网络上.这很有效,但速度很慢.
我没有想法.如何通过他们阻止我重复请求.
我说"阻止"他们实际上是在一个肯定存在的页面上给我一个随机的404未找到的错误.它是随机的,只有在我在一小时内传递大约300个请求后才开始发生.
我需要对存储在分布式FS上的相当大的文件进行哈希处理.我能够以比整个文件更好的性能处理文件的部分,所以我希望能够计算部分的哈希值然后求和.
我正在考虑CRC64作为散列算法,但我不知道如何使用其理论上的"线性函数"属性,因此我可以对文件的各个部分求和.有什么建议?我错过了什么?
附加说明我为什么看CRC64:
CRC32implementation(zlib),其中包括对部分CRC进行求和的方法,但我想要更广泛的东西.8个字节对我来说很好看.我想知道collectAsMap在Spark中是如何工作的.更具体地说,我想知道所有分区的数据聚合将在何处发生?聚合发生在主人或工人中.在第一种情况下,每个工作人员在master上发送数据,当master从每个worker收集数据时,master将汇总结果.在第二种情况下,工人负责汇总结果(在他们之间交换数据之后),之后结果将被发送给主人.
我必须找到一种方法,以便主人能够分别从每个分区收集数据,而无需工人交换数据.
我最近玩过Hadoop,并对MapReduce作业的调度,管理和报告印象深刻.它似乎使新工作的分配和执行非常无缝,使开发人员能够专注于他们的工作实施.
我想知道Java域中是否存在任何不容易表示为MapReduce问题的作业的分布式执行?例如:
需要任务协调和同步的工作.例如,它们可能涉及顺序执行任务,但同时执行某些任务是可行的:
.-- B --.
.--A --| |--.
| '-- C --' |
Start --| |-- Done
| |
'--D -------------'
Run Code Online (Sandbox Code Playgroud)您希望分发的CPU密集型任务但不提供任何减少的输出 - 例如图像转换/调整大小.
那么是否有一个提供这种分布式计算环境的Java框架/平台?或者这种事情是否可以使用Hadoop接受/实现 - 如果有的话,这些工作的模式/指南是什么?
特别是在以下语言中任何有用程度的任何开源实现:
1)C++
2)Python
3)Ruby
4)C#
有谁知道我如何在多台机器上扩展 Trie?假设第一台机器空间不足,我需要从一个非常大的字典中添加更多单词,我该怎么做才能添加更多单词?(我是一名 Java 思想家,但我相信答案可能与语言无关)。我已经意识到我不能只为每个第一个角色说一台机器,但这并不能真正扩展。
就我目前的一点点了解,“微服务”的核心概念之一就是它依赖于自己的数据库,独立于其他微服务。
深入探讨如何在微服务系统中处理分布式事务,最好的策略似乎是事件溯源模式,其核心是事件存储。
事件存储是否在不同的微服务之间共享?或者每个微服务都有多个独立的事件存储数据库和一个公共事件代理?
如果第一个选项是解决方案,使用 CQRS 我现在可以假设每个微服务的数据库都用作查询端,而共享事件存储在命令端。这是一个错误的假设吗?
既然我们在这个主题中:如果使用乐观锁定在 Stream 中进行并发写入,我必须重试多少次?
非常感谢您给我的每一条建议!
distributed-computing distributed-system event-sourcing microservices
假设我有 2 台机器,每台机器有 4 个 GPU。假设训练算法的每个实例需要 2 个 GPU。我想运行 4 个进程,每台机器 2 个,每个进程使用 2 个 GPU。
如何让每个进程检索同一台计算机上运行的本地进程的数量?我可以检测world size到
torch.distributed.get_world_size()
Run Code Online (Sandbox Code Playgroud)
和global rank与
torch.distributed.get_rank()
Run Code Online (Sandbox Code Playgroud)
但是,鉴于我不想对参数进行硬编码,有没有办法恢复每个节点上运行 2 个进程?这对于我将 GPU 平均分配给每个进程很有用。
示例:假设我知道一台机器有 4 个 GPU,并且上面有 2 个进程,我将分配 GPU[0, 1]来处理local rank0 级的进程,分配 GPU[2, 3]来处理本地等级 1 的进程。我知道进程总数,但我无法理解它们是否是在同一台机器上,所以我无法决定他们可以使用多少个 GPU。
我需要一个可以调用的函数torch.distributed.get_local_world_size()
c++ ×2
hadoop ×2
java ×2
python ×2
apache-spark ×1
architecture ×1
c ×1
crc ×1
gpu ×1
hash ×1
mapreduce ×1
nosql ×1
p2p ×1
pytorch ×1
scalability ×1
system ×1
trie ×1
web-crawler ×1
winsock ×1
winsockets ×1
worker ×1