问题标签 [distributed-system]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
3320 浏览

c# - 数据库队列的并行处理

有一个小型系统,其中一个数据库表作为 MSSQL 2005 上的队列。几个应用程序正在写入该表,一个应用程序正在以 FIFO 方式读取和处理。

我必须让它更高级一点,才能创建一个分布式系统,在其中可以运行多个处理应用程序。结果应该是2-10个处理应用程序应该能够运行并且它们在工作期间不应相互干扰。

我的想法是用一行显示一个进程已经在处理它来扩展队列表。处理应用程序将首先使用它的标识符更新表,然后请求更新的记录。

所以是这样的:

处理后,它将表的处理列设置为其他内容,例如“完成”或其他内容。

我对这种方法有三个问题。

第一:这可以以这种形式工作吗?

第二:如果有效,是否有效?您还有其他想法来创建这样的发行版吗?

第三:在 MSSQL 中,锁定是基于行的,但是在锁定一定数量的行之后,锁定会扩展到整个表。所以第二个应用程序不能访问它,直到第一个应用程序不释放事务。为了不锁定整个表,只创建行锁,选择(top x)可以有多大?

0 投票
5 回答
5786 浏览

php - PHP 会话是否难以跨分布式系统扩展?

在工作中,我们几乎用 Java 和 perl 做所有事情,但我想使用 PHP 和会话构建一个功能。一些窥视者认为尝试在我们的系统上进行 PHP 会话是一个坏主意,因为它分布在许多服务器上。具体问题会是什么?

0 投票
7 回答
43463 浏览

linux - 商品 Linux 存储场的最佳分布式文件系统

我有很多备用的英特尔 linux 服务器(数百台),并希望将它们用于网络托管和文件共享环境中的分布式文件系统。这不适用于 HPC 应用程序,因此高性能并不重要。主要要求是高可用性,如果一台服务器离线,存储在其硬盘上的数据仍然可以从其他节点获得。它必须通过 TCP/IP 运行并提供标准的 POSIX 文件权限。

我看过以下内容:

  • Lustre ( http://wiki.lustre.org/index.php?title=Main_Page ):非常接近,但它不为节点上的数据提供冗余。您必须使用 RAID 或 DRBD 使数据成为 HA。由 Sun 和开源支持,因此应该存在一段时间

  • gfarm(http://datafarm.apgrid.org/):看起来它提供了冗余,但以复杂性和可维护性为代价。不如 Lustre 得到很好的支持。

有没有人对这些或任何其他可能有效的系统有任何经验?

0 投票
3 回答
25798 浏览

amazon-web-services - 亚马逊 S3 架构

虽然@http://highscalability.com/amazon-architecture的帖子总体上解释了 Amazon 的架构,但我有兴趣了解 Amazon S3 是如何实现的。

我的一些猜测是

  1. 像 HDFS 这样的分布式文件系统 http://hadoop.apache.org/core/docs/current/hdfs_design.html
  2. 一个非关系持久数据库,如 CouchDB http://couchdb.apache.org/

是否可以使用 Python 或 PHP 等脚本语言在更小范围内实现类似的功能?

0 投票
1 回答
791 浏览

openmp - 英特尔 Cluster OpenMP 的类似物

有英特尔 Cluster OpenMP 的类似物吗?该库模拟共享内存机器(如 SMP 或 NUMA),同时在分布式内存机器(如以太网连接的 PC 集群)上运行。

该库允许直接在集群上启动 openmp 程序。

我寻找

  • 允许多线程程序在分布式集群上运行的库
  • 或库(替换例如 libgomp),允许 OpenMP 程序在分布式集群上运行
  • 或编译器,能够从 openmp 程序生成集群代码,除了 Intel C++
0 投票
1 回答
931 浏览

p2p - 使用哪种 DHT 算法(如果我想加入两个单独的 DHT)?

我一直在研究一些 DHT 系统,特别是 Pastry 和 Chord。我已经阅读了一些关于 Chord 对流失反应的担忧,尽管我相信这对于我手头的任务来说不会是一个问题。我正在实施某种社交网络服务,它不依赖于课程项目的任何中央服务器。我需要 DHT 进行查找。

现在我一开始并不知道网络中的所有服务器。正如我所说,没有主要的跟踪服务器。它是这样工作的:每个客户端都有三个专用服务器。三台服务器都有客户端的配置文件,它是墙,它是个人信息,被复制。当用户添加朋友(输入客户地址)时,我才了解其他服务器组。所以我会在两组三台服务器上创建两个单独的 DHT,当他们彼此成为朋友时,我想加入 DHT。我想始终如一。我没有太多时间来熟悉这些协议,所以如果我想加入两个独立的 DHT,我想知道哪个更好?

0 投票
2 回答
19433 浏览

java - Java RMI 和 JMS 有什么区别?

在用 Java 设计分布式应用程序时,似乎有一些技术可以解决同样的问题。我已经简要阅读过Java Remote Method InvocationJava Message Service,但很难真正看出其中的区别。Java RMI 似乎比 JMS 耦合更紧密,因为 JMS 使用异步通信,但除此之外我看不出有什么大的不同。

  • 它们之间有什么区别?
  • 其中一个比另一个新吗?
  • 哪一种在企业中更常见/流行?
  • 他们彼此有什么优势?
  • 什么时候优先于另一个?
  • 它们在实施难度上是否有很大差异?

我也认为Web 服务CORBA解决了同样的问题。

0 投票
1 回答
3485 浏览

client-server - 如何使用消息代理和数据库设计分布式应用程序?

我想实现一个分布式销售点系统,有点像销售点应用程序架构建议中描述的那个。

它是一个具有以下特点的分布式系统:

  • 客户端是关键任务,即使网络连接或服务器失败,它们也应该工作,但只是几天左右。
  • 客户端必须易于安装。
  • 每个客户端都有自己的本地嵌入式数据库。
  • 客户端和服务器之间的通信使用消息队列。
  • 服务器用于备份、记账、统计和向客户分发价格。
  • 服务器放置在互联网上。

我正在使用 JavaDB 作为数据库在 Java Swing 中实现客户端。

我的应用程序应该如何与消息代理和数据库通信?

我以前从未使用过消息队列和消息代理。我的想法是应用程序从数据库读取,但写入消息代理,消息代理写入数据库并与服务器通信。或者这是一个坏主意?我应该如何解决这个问题?

因此,除了我的嵌入式数据库之外,我还需要找到一个消息代理,最好是用 Java 编写的可以嵌入到我的应用程序中的消息代理,以便于安装。

0 投票
3 回答
7612 浏览

c++ - 我可以使用什么库来进行简单、轻量级的消息传递?

我将启动一个需要在分布式节点之间进行通信的项目(该项目使用 C++)。我需要一个轻量级的消息传递库来在节点之间传递非常简单的消息(基本上只是文本字符串)。库必须具有以下特征:

  1. 无需外部设置。我需要能够在我的代码中启动并运行所有内容——我不想要求用户安装任何软件包或编辑任何配置文件(除了要连接的 IP 地址和端口列表)。

  2. 库使用的底层协议必须是 TCP(或者如果是 UDP,则库必须保证最终收到消息)。

  3. 该库必须能够发送和接收任意大的字符串(最多考虑 3GB+)。

该库不需要支持任何安全机制、容错或加密——我只需要它快速、简单且易于使用。我考虑过 MPI,但得出的结论是,我的项目需要在用户机器上进行太多设置。

你会为这样的项目推荐什么库?我会自己动手,但由于时间限制,我认为这不可行。

0 投票
2 回答
7397 浏览

locking - ZooKeeper and RabbitMQ/Qpid together - overkill or a good combination?

Greetings,

I'm evaluating some components for a multi-data center distributed system. We're going to be using message queues (via either RabbitMQ or Qpid) so agents can make asynchronous requests to other agents without worrying about addressing, routing, load balancing or retransmission.

In many cases, the agents will be interacting with components that were not designed for highly concurrent access, so locking and cross-agent coordination will be needed to avoid race conditions. Also, we'd like the system to automatically respond to agent or data center failures.

With the above use cases in mind, ZooKeeper seemed like it might be a good fit. But I'm wondering if trying to use both ZK and message queuing is overkill. It seems like what Zookeeper does could be accomplished by my own cluster manager using AMQP messaging, but that would be hard to get really right. On the other hand, I've seen some examples where ZooKeeper was used to implement message queuing, but I think RabbitMQ/Qpid are a more natural fit for that.

Has anyone out there used a combination like this?

Thanks in advance,

-Chris