问题标签 [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 投票
5 回答
9111 浏览

您如何使两个相关但独立的系统保持同步?

我目前的开发项目有两个方面。首先,有一个公共网站,外部用户可以在其中提交和更新用于各种目的的信息。然后,此信息将保存到 colo 设施的本地 SQL Server。

第二个方面是内部应用程序,员工使用它来管理这些相同的记录(概念上)并提供状态更新、批准等。该应用程序托管在公司防火墙内,具有自己的本地 SQL Server 数据库。

这两个网络通过硬件 VPN 解决方案连接,这很不错,但显然不是世界上最快的东西。

这两个数据库相似,并且共享许多相同的表,但它们不是 100% 相同。两边的许多表都非常特定于内部或外部应用程序。

所以问题是:当用户更新他们的信息或在公共网站上提交记录时,你如何将这些数据传输到内部应用程序的数据库中,以便内部人员进行管理?反之亦然……您如何将员工所做的更新推送回网站?

值得一提的是,这些更新发生得越“实时”越好。并不是说它必须是即时的,只是相当快。

到目前为止,我已经考虑过使用以下类型的方法:

  1. 双向复制
  2. 双方的 Web 服务接口都带有代码,以便在更改发生时(实时)同步更改。
  3. 双方的 Web 服务接口带有异步同步更改的代码(使用排队机制)。

有什么建议吗?有没有人遇到过这个问题?您是否提出了适合您的解决方案?

0 投票
9 回答
3946 浏览

有 Hadoop 经验吗?

你们中有人尝试过Hadoop吗?它可以在没有与之配套的分布式文件系统的情况下在无共享架构中使用吗?这有意义吗?

我也对您的任何性能结果感兴趣...

0 投票
7 回答
4911 浏览

暗星计划是否现实?

昨晚在纽约谷歌办公室举行的JavaSIG月度会议的主题是Project Darkstar 。对于那些不知道的人(可能是每个人),Project Darkstar 是一个大型多人在线游戏的框架,它试图处理所有“困难的事情”。基本思想是您编写游戏服务器逻辑的方式是将所有操作分解为小任务。您将这些任务传递给 Project Darkstar 框架,该框架处理将它们分发到集群中的特定节点、任何并发问题,并最终持久化数据。

显然,做这种事情对于视频游戏来说是一个与企业应用程序大不相同的问题。演讲的 Jim Waldo 声称,MMO 游戏的 DB 读/写比率为 50/50,而企业应用程序更像是 90% 读取,10% 写入。他还声称,大多数现有的 MMO 将所有内容都单独保存在内存中,并且每 6 小时才转储到数据库中。这意味着如果服务器出现故障,您将丢失自上次数据库转储以来的所有工作。

现在,这个项目本身听起来很酷,但我认为业界不会接受它。首先,您必须用 Java 编写服务器代码。客户端代码可以用任何东西编写(Jim 声称 ActionScript 3 是最流行的,其次是 C++),但服务器代码必须是 Java。听起来不错,但我真的觉得游戏行业的每个人都讨厌 Java。

其次,与其他行业的开发人员更喜欢使用现有的框架和库不同,游戏行业的人似乎喜欢自己编写所有东西。不仅如此,他们还喜欢为他们制作的每款新游戏重写所有内容。在开发人员使用 Havok 进行物理、使用虚幻引擎 3 作为他们的平台等的地方,情况开始发生变化,但在大多数情况下,一切看起来仍然是专有的。

那么,暗星计划的人只是在浪费时间吗?像这样的通用框架真的可以用于具有所需性能的复杂游戏吗?即使它确实有效,游戏公司是否愿意使用它?

0 投票
3 回答
4546 浏览

什么是好的基于 windows 和 iis (http) 的分布式版本控制系统

在我的工作中,我们制作和销售网站。通常我们将基于 .NET C# 的站点安装在客户的服务器上并远程维护和支持它。但是,每隔一段时间,为了进行更大的开发工作并让事情变得更简单(更快!),我们会将站点复制到本地服务器。

这很好,但有一个痛苦 - 将网站移回给客户。现在,如果客户的副本没有任何变化 - 没问题。然而,可悲的事实是,有时(比我想的更频繁地阅读)需要在生产服务器上应用一些修复。要么是因为客户现在需要它,要么只是因为它是主要错误。

我知道您也可以轻松地将这些错误修复应用到本地副本,但这是一个容易出错的过程。因此,我将希望寄托在分布式版本控制上,以帮助同步两个副本。

这是我需要的:

  • 易于安装 - 除了安装程序和管理员权限外,无需其他任何东西。
  • 可以作为虚拟目录集成到现有网站中,并在端口 80 上运行 - 无需使用新的 DNS。
  • 优秀的软件

而已。有任何想法吗?


对答案的一些评论

首先,谢谢!非常感激。

我看过 Mercurial 和 Bazaar,两者看起来都很好。唯一需要注意的是在 IIS 上安装为虚拟目录。据我了解,Mercurial 使用特殊的协议(线路)和 Bazaar 需要并添加了 python 扩展。还有其他更容易与 IIS 集成的系统吗?我愿意为此付出代价。

0 投票
3 回答
13698 浏览

Spread vs MPI vs zeromq?

在对具有 TCP 可靠性的 UDP 之类的广播的答案之一中,用户提到了传播消息传递 API。我也遇到过一个叫做ØMQ的。我也对MPI有一些了解。

所以,我的主要问题是:我为什么要选择一个而不是另一个?更具体地说,当有成熟的 MPI 实现时,我为什么要选择使用 Spread 或 ØMQ?

0 投票
3 回答
778 浏览

分布式应用程序中的决策

对于分布式应用程序,您有很多客户端和一个主服务器,您应该:

  • 让客户端变笨,让服务器变聪明:客户端快速且非侵入性。仅在 1 个地方需要业务规则
  • 让客户端聪明而服务器愚蠢:尽可能多地从服务器上卸下负载

附加信息:

  • 客户收集了大量有关他们所使用的计算机的数据。服务器必须分析所有这些信息以确定这些计算机的运行状况
  • 客户端计算机的所有者是喜怒无常的,如果客户端开始消耗太多资源,将关闭客户端(从而否定分布式应用程序帮助诊断问题的目的)
0 投票
1 回答
441 浏览

如何在对等系统中稳健但最少地分发项目

如果一个人有一个可以查询的点对点系统,那么他想

  • 减少整个网络的查询总数(通过广泛分布“流行”项目和“相似”项目一起)
  • 避免每个节点的过多存储
  • 在客户停机、硬件故障和用户离开(可能为档案管理员/历史学家检测稀有物品)的情况下,确保即使是中等稀有物品的良好可用性
  • 避免在网络分区的情况下查询无法找到匹配项

鉴于这些要求:

  1. 有没有标准的方法?如果没有,是否有任何受人尊敬但实验性的研究?我熟悉一些分配方案,但我还没有看到任何真正解决学习健壮性的东西。
  2. 我是否缺少任何明显的标准?
  3. 有人有兴趣研究/解决这个问题吗?(如果是这样,我很乐意将我这个周末拼凑的一个非常蹩脚的模拟器的一部分开源,并且通常会提供无用的建议)。

@cdv:我现在已经观看了视频,它非常好,虽然我不觉得它完全符合可插拔的分发策略,但它绝对是 90% 的方式。然而,这些问题突出了这种方法的有用差异,这些差异解决了我的一些进一步担忧,并为我提供了一些后续参考。因此,我暂时接受你的回答,尽管我认为这个问题是开放的。

0 投票
8 回答
454 浏览

开发在桌面和浏览器上运行的应用程序的最佳技术?

微软WPF?Adobe AIR/Flex?Adobe闪存?卷曲编程语言?

AJAX 如何适应?

给定一个用 C++ .NET 编写的服务器。

0 投票
10 回答
46082 浏览

从多个服务器聚合多个日志文件的最佳方法

我需要一种简单的方法来监视分布在多个 HP-UX 服务器上的多个文本日志文件。它们是来自多个分布式遗留系统的文本和 XML 日志文件的混合体。目前我们只是通过 ssh 连接到服务器并使用tail -fgrep,但是当您有很多日志要跟踪时,这并不能扩展。

由于日志的格式不同,并且只是文件夹中的文件(当它们达到一定大小时自动旋转),我需要远程收集它们并以不同的方式解析每个文件。

我最初的想法是创建一个简单的守护进程,我可以在每台服务器上运行它,使用针对每种文件类型的自定义文件阅读器将其解析为可以通过套接字通过网络导出的通用格式。另一个本地运行的查看器程序将连接到这些套接字,并在一些简单的选项卡式 GUI 中显示已解析的日志或聚合到控制台。

如果我要以这种方式实现它,我应该尝试转换成什么日志格式?

还有其他更简单的方法吗?我应该尝试将日志文件转换为 log4j 格式以与Chainsaw一起使用,还是有更好的日志查看器可以连接到远程套接字?我可以按照另一个日志问题中的建议使用BareTail吗?这不是一个大规模分布式系统,更改所有应用程序的当前日志记录实现以使用 UDP 广播或将消息放在 JMS 队列上不是一种选择。

0 投票
5 回答
2534 浏览

分布式python

什么是创建分布式应用程序的最佳 Python 框架?例如构建一个 P2P 应用程序。