问题标签 [distributed]

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 投票
1 回答
510 浏览

distributed - 我应该在什么级别实现分布式系统上节点之间的通信?

我正在构建一个 Web 应用程序,从第一天开始,它就会受到单个服务器可以处理的限制。所以我正在考虑采用具有多个相同节点的分布式架构。目标是提供可扩展性(添加服务器以容纳更多用户)和容错。节点需要在它们之间共享一些状态,因此它们之间需要一些通信。我相信我有以下替代方法可以在 Java 中实现这种通信:

  • 使用套接字和自定义协议实现它。
  • 使用 RMI
  • 使用 Web 服务(每个节点都可以发送和接收/解析 HTTP 请求)。
  • 使用 JMS
  • 使用另一个高级框架,如Terracottahazelcast

我想知道这些技术之间的比较:

  • 当节点数增加时
  • 当节点之间的通信量增加时(每秒 1000 条消息和/或高达 100KB 的消息等)
  • 在实际层面上(例如易于实施、可用文档、许可证问题等)
  • 我也很想知道人们在实际生产项目中使用了哪些技术(而不是实验或学术项目)。
0 投票
3 回答
2606 浏览

java - Google App Engine(或更一般地在分布式服务器环境中)中的单例如何工作?

我对单例在 Google App Engine(或任何分布式服务器环境)中的工作方式很感兴趣。鉴于您的应用程序可以同时在多个进程中(在多台机器上)运行,并且请求可以完全路由,那么当应用程序执行以下操作时实际上会发生什么:'CacheManager.getInstance()'?

我只是以(GAE)CacheManager 为例,但我的意思是,某处有一个单例的全局应用程序实例,那么它在哪里?是否调用了 RPC?实际上,全局应用程序状态(如会话)实际上是如何处理的?

问候, 谢恩

0 投票
7 回答
1477 浏览

c++ - 毕业设计

我需要做一个项目作为我最后一年工程毕业学习的一部分。你能推荐一些与分布式系统人工智能有关的项目,这些项目需要python、c 或 c++进行编程吗?注意:-请建议一个由 2 名学生组成的小组可以实现的项目。

0 投票
6 回答
1411 浏览

c++ - 小型分布式 C++ 应用程序的最佳方法

我正在分发一个独立的应用程序。应用程序的每个实例都必须能够发送和接收查询。

要求:

  1. 语言 - C++
  2. 规模 - 小。一次可能是 5 个实例
  3. 平台无关
  4. 传输的数据量预计会很高(最坏情况下的原始图像)

我不想使用 RPC,因为它需要运行注册表服务。我认为 CORBA 和 SOAP 的开销太大了。我有点决定使用自定义协议,但只是想听听是否有更好的方法。

谢谢。

0 投票
4 回答
118 浏览

svn - 更改 SVN 存储库

我从 SVN 服务器 A 签出了一个项目,但我需要将我的更改提交回服务器 B - 两台服务器上的存储库具有相同的结构。我怎么能用 Tortoise SVN 做到这一点?

谢谢,唐

0 投票
4 回答
8221 浏览

java - Distributed systems, best framework?

I am building a software program that follows the scenario:

I have many computers, and add each one of them to the a cluster. Each computer in the cluster can add a file to a distributed table (dictionary,hashmap, should be fast enough).

So now I have a place where everyone can see what files does the group/cluster contains. Now a computer from the group/cluster requests a file. He can access all the information about the file from the distributed table ( on what computer it can find the file etc...).

By some mechanism it should get the file from point B ( computer that has the file ) to point A ( the computer who requested the file ).

Basically it should do data replication. ( but for very large files )

So you probably wonder by now, what is this quy asking for, here it is :

The data replication should be as fast as possible. What would be the best approach ? I thought about something like flux networks.

What would be the best framework, to use for a software following the scenario ?

I AM SEARCHING FOR A JAVA FRAMEWORK :). (I NEEDED TO RUN CROSS-PLATFORM)

Thank you!

0 投票
3 回答
5912 浏览

database - 同步常见分布式数据的最佳实践

我有一个支持离线模式的互联网应用程序,用户可以创建数据,当用户重新在线时,这些数据将与服务器同步。因此,正因为如此,我在我的数据库中使用 UUID 作为标识,因此断开连接的客户端可以生成新对象,而不必担心使用另一个客户端使用的 ID 等。但是,虽然这对于该用户拥有的对象非常有用是由多个用户共享的对象。例如,用户使用的标签可能是全局的,远程数据库不可能保存宇宙中所有可能的标签。

如果离线用户创建一个对象并为其添加一些标签。假设这些标签在用户的本地数据库中不存在,因此软件会为它们生成一个 UUID。现在,当这些标签同步时,需要一个解析过程来解决任何重叠。将远程数据库中的任何现有标签与本地版本匹配的某种方式。

一种方法是使用某个过程,通过该过程,全局对象由自然键(在标签的情况下为名称)解析,并且本地数据库必须用全局数据库中的这个对象替换它的现有对象。当与其他对象有很多连接时,这可能会很混乱。有些东西告诉我要避免这种情况。

另一种处理方法是使用两个 ID。一个全局 ID 和一个本地 ID。我希望使用 UUID 有助于避免这种情况,但我一直在使用单个 UUID 和使用两个拆分 ID 之间来回切换。使用这个选项让我想知道我是否让问题失控了。

另一种方法是通过非共享对象跟踪所有更改。在此示例中,用户分配了标签的对象。当用户同步他们的离线更改时,服务器可能会用全局标签替换他的本地标签。下次此客户端与服务器同步时,它会检测到非共享对象的更改。当客户端拉下该对象时,他将收到全局标签。该软件将简单地重新保存指向服务器标签的非共享对象并孤立他的本地版本。与此相关的一些问题是完全同步的额外往返行程,以及刚刚孤立的本地数据库中的额外数据。当系统处于同步状态之间时,是否还会发生其他问题或错误?(即尝试与服务器通信并向其发送对象的本地 UUID 等)。

另一种选择是避免常见的对象。在我的软件中,这可能是一个可以接受的答案。我不会在用户之间进行大量对象共享,但这并不意味着我将来不会这样做。这意味着如果我需要添加这些类型的功能,选择此选项可能会在将来使我的软件瘫痪。这种选择是有后果的,我不确定我是否已经完全探索过了。

因此,我正在寻找任何类型的最佳实践、处理此类系统的现有算法、选择指南等。

0 投票
5 回答
3482 浏览

linux - 跨 Linux 发行版分发二进制应用程序

我编写了一个尚未开源的应用程序,我想在各种 linux 发行版中分发可执行文件。最好的方法是什么,我看了一点 .rpm 和 .deb 包装,但我找不到它是否可以用于二进制文件。理想情况下,我想要 OS X 上的 PackageMaker 或 Windows 上的常规安装程序,它会自动复制到 /usr/bin 中。那是 .rpm 和 .deb 包的用途,还是我必须捆绑一个会自动执行它的 shell 脚本?

0 投票
2 回答
2423 浏览

distributed - 同步噩梦——是否可以在没有 IIS 的 2 个 SQL CE 实例之间使用合并复制(或 RDA)?

我们面临以下涉及保持以下同步的问题:

  • 1 台集中式服务器 (IIS / MSSQL 2005)
  • ClickOnce 分发的许多桌面 WPF 客户端
  • 许多移动客户端 - (Windows CE)

替代文字 http://img502.imageshack.us/img502/8246/deployment.png

有了这些棘手的限制:

  • 所有同步关系都是双向的
  • 桌面和移动节点需要离线模式
  • 移动节点无法与中央服务器同步,但要通过 USB 与桌面节点同步。桌面节点充当移动客户端的服务器,而不是中央服务器。然后,来自移动节点的更新需要通过与桌面同步来传播到中央服务器,然后将该桌面与中央服务器同步。

讨厌。

要同步桌面和服务器,我们知道我们可以使用合并复制——服务器作为提供者,桌面作为订阅者,一切都很好。但是同步移动和桌面节点呢?似乎没有 SQL server + ISS,Desktop 不能成为发布者,对吧?我们只能将 MSSQL CE 部署到桌面。

即使是这种情况,一个节点是否可以既是订阅者又是发布者?我怀疑 Merge Replication 体系结构不支持这种安排 - 似乎集线器和辐射是唯一受支持的模型。

我们正在尝试确定是否可以消除 RDA 或合并复制作为可能的解决方案 - 如果可以,我们可能会采用 MS Sync 框架。

也许我们可以考虑其他技术?

谢谢大家,

阿什利

更新:我们刚刚开始玩 MS Sync Framework,它很震撼!

0 投票
2 回答
557 浏览

data-modeling - 分布式数据模型

我在现场机器人领域工作,我们有一个中央服务器跟踪与车辆状态、环境状态、任务、任务分组等有关的一大堆数据。有处理这些数据的不同部分的过程,以及需要在特定部分发生变化时更新的用户界面。

我想要的是一种系统连接到中央服务器并订阅部分数据的方式。他们将所有数据通过管道传输给他们,并在发生更改时发送任何更改。此外,我希望能够提名某些更新可以合并:如果车辆移动了 3 次,但连接的 UI 没有太多带宽,而不仅仅是发送最新的位置。

目前我正在考虑一个内存数据库,它跟踪客户端订阅查询并计算发送给他们的增量。是否有更好的方法或现有的解决方案来分发数据模型?