需要帮助了解阿卡



我正在使用Akka创建一个分布式数据库系统。我有一个数据库系统的代码,该系统在一台机器上运行,但想让它分布式。但我在理解和创作方法方面有困难。以下是我对创建一个简单的dist-DB系统的想法,最后我有几个问题。

我创建了一个主节点和 2 个工作节点(比如现在(。在数据库中创建一个关系(表(后,我向master发送一条消息来分发这个关系,该关系应该将关系分成2个(没有工人(块,并在工作节点中创建子关系。

def receive: Receive = {
case distributeTable(r: Relation) => {
worker1 ! createNewRelation(r1)
worker2 ! createNewRelation(r1)
for (i <- 0 until r.rows/2) {
worker1 ! add(r1, r(i));
}
for (i <- r.rows/2 until r.rows) {
worker2 ! add(r1, r(i));
}
}
}

现在,对于从用户对象给出的数据库的任何查询,将被发送到master,它进一步发送到工作节点,并在这些节点上的子关系(较小的表(上执行并将结果发送到master。根据查询,master 对这些结果执行任何其他任务,并将最终结果发送到用户对象。

我对分布式数据库应该如何工作的想法是否正确?

distributeTable的实施是否正确?

有没有办法对所有工作节点进行分组并发送消息,以便将它们分发到它们之间?我想避免为单个工作节点编写任务。例如:代替worker1 ! msg1worker2 ! msg1。有没有办法让我做workers ! msg1,它将被发送到所有工作节点。
如果是这样,在这种情况下,如何从主站的所有工作人员那里收集返回值。

听起来你想要一个Router. 您可以使用一个 actor,并且基本上可以在一个ActorSystem中复制所有内容,也可以跨网络的不同ActorSystem进行复制,其中每个 actor 系统都可以具有数据库的一个分片的位置。

https://doc.akka.io/docs/akka/2.5/routing.html

从您的问题来看,您想使用 akka 远程处理

https://doc.akka.io/docs/akka/2.5/remoting.html 和 akka 工作负载模式 http://letitcrash.com/post/29044669086/balancing-workload-across-nodes-with-akka-2

相关内容

  • 没有找到相关文章

最新更新