似乎有相当多的网格计算框架,但是为了低延迟分布计算的目的,哪些实际上被投资银行用于很大程度?我有兴趣听到有关Windows,Linux和跨平台的答案.什么RPC机制似乎最受青睐?
我听说由于低延迟和低速的原因,计算本身通常用C++/C编写,因为在VM上运行的计算比本机代码慢几个数量级.这在实践中似乎是一种常见的情况吗?例如,分布式.NET网格框架运行用本机c ++/c编写的计算?
我正在编写一个涉及多个前端节点的分布式应用程序,除非它们是列表的一部分,否则需要拒绝对用户执行操作.
现在我们有超过4个节点,但只有一个运行DB2的数据库服务器通常需要维护.
现在我们正在轮询数据库以更新内存列表,这样如果用户从列表中删除,则更改会反映到所有4个节点.但是,如果在数据库关闭时重新启动其中一个节点,我们最终会得到一个空列表,这将拒绝我们不想要的所有用户请求.我们可以接受来自用户的请求,即使数据库已关闭,因为我们将它们缓冲在消息队列中,但我们想立即拒绝它们,如果它们需要被拒绝的话!
在我们的4个节点上运行Zookeeper实例并在Zookeeper中存储用户权限是否有意义.因此,阅读应该是快速的,并且数据具有高可用性和可靠性.我们不必再进行轮询,即使我们重新启动数据库,节点也可以从zookeeper获取配置!
我计划编写一个简单的数据流框架,它基本上由对象的惰性方法调用组成.如果我考虑过分布式编程,那么在Python中启用它的最简单方法是什么?没有我做网络编程的任何透明解决方案?
或者首先,我如何在Python中使用多核处理器?
我在一家小型软件公司工作,我的任务是研究分布式锁管理器供我们使用.它必须与Java和C++接口.
我已经使用ZooKeeper工作了几个星期,并根据文档实现了共享锁(读写锁).我现在需要实现死锁检测.如果每个客户端都可以维护锁的图形,那么它将是快速而简单的.但是,您无法可靠地查看ZooKeeper中节点发生的每个更改,因此无法保持准确的图形.这意味着每次检查死锁时,我都需要下载许多锁,这似乎不切实际.
另一种解决方案是在ZooKeeper服务器中实现死锁检测,我现在正在研究它.每个客户端都会在'/ waiting'中创建一个以其会话ID命名的节点,其数据将是其等待的锁.由于每个锁都有一个短暂的所有者,我将有足够的信息来检测死锁.
我遇到的问题是ZooKeeper服务器没有ZooKeeper客户端的同步保证.另外,ZooKeeper服务器没有像客户端那样很好地记录,因为你通常不应该触摸它.
所以我的问题是:如何使用Apache ZooKeeper实现死锁检测?我看到很多人推荐ZooKeeper作为分布式锁管理器,但如果它不能支持死锁检测,那么没有人应该将它用于此目的.
我有一个有效的解决方案.我无法保证其正确性,但它已通过我的所有测试.
我正在分享我的checkForDeadlock方法,这是死锁检测算法的核心.以下是您需要了解的其他信息:
waitNode = zooKeeper.create(waitingPath + "/" + sessionID, resource.getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.EPHEMERAL);checkForDeadlockDeadlockException如果发现死锁,则抛出一个.否则,它会正常返回.bySequenceNumber 是一个比较器,按照ZooKeeper附加到顺序znode末尾的序列对znodes进行排序.码:
private void checkForDeadlock(String pathToResource) throws DeadlockException {
// Algorithm:
// For each client who holds a lock on this resource:
// If this client is me, announce deadlock.
// Otherwise, if this client is waiting for a reserved resource, recursively check for deadlock …Run Code Online (Sandbox Code Playgroud) 您能告诉我如何使用一些通用套接字在不同服务器上的两个程序之间发送消息ZeroMQ吗?所有本地套接字程序都有效,但我不明白它们是如何传播到不同的地方的.因为攀爬错误:
Traceback (most recent call last):
File "/Users/*****/Projects/*****/workers/internal_links_parser.py", line 20, in <module>
socket.bind("tcp://***.***.***.***:5000")
File "socket.pyx", line 447, in zmq.core.socket.Socket.bind (zmq/core/socket.c:4312)
zmq.core.error.ZMQError: Can't assign requested address
Run Code Online (Sandbox Code Playgroud)
请解释,如果不难给出一个例子.谢谢!
如果我在GUI模式下使用4个客户端服务器(1个Master + 3 Slave)运行分布式测试,并在我的计划中设置以下值 -
Number of Threads = 12000
Ramp Up time = 1000
Loop count = 1
Run Code Online (Sandbox Code Playgroud)
完成测试后我得到了36000个样品(这没关系12000 * 3 = 36000),但我的问题是加速时间 - 对于36000个用户来说它是3000吗?或者它将为36000保持1000
提前致谢
为什么多paxos被称为多paxos?我看不出它是多么"多".
目前,我正在使用JSON库来序列化发送方(JeroMQ)上的数据,并在接收方(C,ZMQ)进行反序列化.但是,在解析时,JSON库开始消耗大量内存,操作系统会终止进程.所以,我想按原样发送float数组,即不使用JSON.
现有的发件人代码在下面(syn0并且syn1是Double数组).如果syn0并且syn1每个大约100 MB,则在解析接收到的数组时,该进程将被终止,即下面的代码段的最后一行:
import org.zeromq.ZMQ
import com.codahale.jerkson
socket.connect("tcp://localhost:5556")
socket.send(json.JSONObject(Map("syn0"->json.JSONArray(List.fromArray(syn0Global)))).toString())
println("SYN0 Request sent”)
val reply_syn0 = socket.recv(0)
println("Response received after syn0: " + new String(reply_syn0))
logInfo("Sending Syn1 request … , size : " + syn1Global.length )
socket.send(json.JSONObject(Map("syn1"->json.JSONArray(List.fromArray(syn1Global)))).toString())
println("SYN1 Request sent")
val reply_syn1 = socket.recv(0)
socket.send(json.JSONObject(Map("foldComplete"->"Done")).toString())
println("foldComplete sent")
// Get the reply.
val reply_foldComplete = socket.recv(0)
val processedSynValuesJson = new String(reply_foldComplete)
val processedSynValues_jerkson = jerkson.Json.parse[Map[String,List[Double]]](processedSynValuesJson)
Run Code Online (Sandbox Code Playgroud)
可以在不使用JSON的情况下传输这些数组吗?
这里我在两个C程序之间传输一个float数组:
//client.c
int main (void)
{ …Run Code Online (Sandbox Code Playgroud) 在Tensorflow中,我们可以使用Between-graph Replication分布式培训来构建和创建多个Tensorflow会话.MonitoredTrainingSession()协调多个Tensorflow会话,并且有一个参数checkpoint_dir用于MonitoredTrainingSession()恢复Tensorflow会话/图形.现在我有以下问题:
tf.train.Saver()来恢复Tensorflow图saver.restore(...).但是我们如何通过使用来恢复它们MonitoredTrainingSession()?MonitoredTrainingSession()使用测试(或预测)模式?我阅读了Tensorflow Doc,但未找到这两个问题的答案.如果有人有解决方案我真的很感激.谢谢!