问题标签 [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.
distributed - 分布式随机数生成
我想知道是否有办法让 N 个参与者的网络同意随机选择从 1 到 M 的数字。(例如,不受任何参与者的影响)这已经通过抛硬币协议解决了 n=2 和 m=2 的值。有谁知道任何适用于任意 N 和 M 值的解决方案?
php - 在 LAMP 集群中管理 php 会话的最佳方法是什么?
我一直在阅读这个主题一段时间。突然有一天,这个解决方案是必要的,而不仅仅是一个梦想。
通过阅读,我看到了流行的差异(基于文件、memcached、共享内存 (mm)、sql 表和自定义)。
我们最初的想法是使用安装在每个应用程序服务器(LAMP 盒)上的 ZFS 或 AFS,并将session.save_path
php.ini 设置指向该安装路径中的目录。
我想听听成功的故事。
database - 可以处理半结构化数据的数据库?
除了CouchDB和 Native XML 数据库(例如eXist),哪些数据库可以存储和查询非结构化和半结构化数据?
我收到了很多不同格式的数据(XML、JSON、YAML、CSV、一些自定义格式),我需要合并和使用这些数据,但是在关系数据库中开发模式既耗时又困难。
主要是,我正在研究开源解决方案。此外,在某些时候,我想以某种方式提供这些数据。
我知道将所有这些数据转换为通用格式会产生一些开销。在 XML 方面有一些不错的选择:eXist-db 和 BerkeleyDB-XML 似乎有很好的 XQuery 支持。
此外,虽然还很年轻,但 CouchDB 以其简单的“文档”格式看起来很有前途。
我看过的其他途径是 OODBMS,例如 ZODB 和 db4o;编写一些简单的解析脚本,然后“按原样”存储生成的记录对象。那里的问题是事后查询它们;OODBMS 似乎没有很好的查询引擎历史。
我不喜欢的是“blob-in-relational-db”解决方案。看起来像一个 hack,并没有真正考虑到数据的演变、FT 索引等。
还有其他我没有遇到的解决方案吗?
java - 在 J2EE 服务器中的两个不同应用程序之间匹配两个对象实例的最佳方法是什么?
我有一个 J2ee 应用程序,我基本上想要两个对象,由两个单独的 servlet 创建以直接通信,并且我需要这些实例是稳定的,即在会话期间相互“了解”。
顺序大致是:
- 客户端向 Servlet #1 发送请求,后者创建对象 A
- 客户端向创建对象 B 的 servlet #2 发送第二个请求(在第一个返回之后)。
- 对象 B 使用 JNDI 找到 A,两个对象交互。
- 客户端现在继续向需要再次查找 B 的对象 A 发送请求。
我如何确保这两个实例在整个会话期间都知道?将它们绑定到 JNDI 并不能完全解决问题,因为对象 B 需要与其原始 servlet(servlet #2)通信,而该 servlet 在请求之间并不能保持稳定。
有任何想法吗?
提前致谢。
是的,我承认问题描述有点模糊。但这不是一个非常简单的应用程序。不过,我会尝试更好地问它:
我的最终目标是为我的应用程序创建一种“语义调试器”,而不是简单地调试 java 语句的 java 调试器。
被调试的应用程序基本上是一个 servlet。我的工具连接到的。该工具通过另一个控制调试过程的 servlet 维护与应用程序的连接。这两个 servlet 需要不断地直接相互通信。
我目前的想法是设置一个有状态的会话 bean 来促进这种通信(从未做过,仍在努力设置它)。
但我将不胜感激有关如何更好地实现这一目标的任何想法。
architecture - AMQP 是否适合作为机器内和机器间软件总线?
我试图了解AMQP。它看起来非常适合应用程序之间的机器间(集群、LAN、WAN)通信,但我不确定它是否适合(在架构和当前实现方面)用作一台机器内的软件总线。
是否值得拔出当前的高性能消息传递框架来用 AMQP 替换它,或者这是否会通过模糊本地和非本地通信之间的区别而落入与 RPC 相同的陷阱?
我也对使用 WAN 技术进行机器内通信的性能影响持谨慎态度,尽管这可能更多的是实现而不是架构问题。
战争故事将不胜感激。
language-agnostic - 构建农场:选项
我们在这里使用 Incredibuild 以分布式方式编译我们的代码。我想知道在家庭网络上是否有任何开源(或免费)替代品?
如果做不到这一点,是否还有其他与 Visual Studio 良好集成的简单解决方案?
编辑:我应该说我很高兴自己动手并在需要时手动配置每台机器上的所有内容。
design-patterns - 关于设计松散耦合的完整系统的建议?
如何设计松散耦合的系统,这些系统可能经常需要来自彼此的数据,但不一定属于同一类别?
例如,让旧的 Pet-shop 示例更进一步,并创建一个 pet-store 特许经营权。每个宠物商店都有自己的网站,列出他们的联系信息、促销活动和当前库存。
特许经营所有者希望拥有所有特许宠物商店的列表以及联系信息,可能还有一些照片可以在他们的公司网站上找到。他们希望能够更新此信息,并让任何更新都自动双向推送。他们还希望以自动方式向所有商店的站点提供促销信息。
因此,在这种情况下,库存清单由商店“拥有”,联系信息由两个实体部分“拥有”,促销信息由总部“拥有”。由于任意原因,所有这些数据都不能存储在同一个地方。
是否有一些最佳实践或通用策略来应对这种情况?
open-source - 分布式文件系统完整性检查
我需要一个分布式文件系统,它必须扩展到非常大的大小(大约 100TB 实际最大值)。文件大小大多在 10-1500KB 范围内,但有些文件的峰值可能约为 250MB。
我非常喜欢像 GFS 这样具有内置备份冗余的系统的想法,从统计上讲,这将使文件丢失成为过去。
我有几个要求:
- 开源
- 没有 SPOF
- 自动文件复制(即不需要RAID)
- 托管客户端访问
- 文件的平面命名空间 - 最好
- 内置版本控制/延迟删除
- 经过验证的部署
我认真研究过 MogileFS,因为它确实满足了大部分要求。它没有任何托管客户端,但它应该相当直接地做一个 Java 客户端的移植。但是,没有内置版本控制。没有版本控制,除了 MogileFS 中内置的文件复制之外,我将不得不进行正常备份。
基本上,我需要防止突然清除大量不应该拥有的文件的编程错误。虽然 MogileFS 确实通过在 X 台设备上复制我的文件来保护我免受磁盘和机器错误的影响,但如果我进行了无根据的删除,它并不能拯救我。
我希望能够指定删除操作直到 Y 天后才真正生效。删除逻辑上会发生,但我可以将文件状态恢复 Y 天,直到它被实际删除。此外,MogileFS 没有能力在写入期间检查磁盘损坏 - 尽管同样可以添加。
由于我们是一家 Microsoft 商店(Windows、.NET、MSSQL),我最希望核心部分在 Windows 上运行以便于维护,而存储节点由于许可而运行 *nix(或组合)。
在我考虑自己动手之前,你有什么建议让我看看吗?我还检查了 HadoopFS、OpenAFS、Lustre 和 GFS——但似乎都不符合我的要求。
performance - 进程内、进程间和机器间调用之间的相对区别是什么?
忽略有效负载大小,进程内调用(例如在 C++ 或 Java 中)、对同一台机器上的进程的套接字调用以及对另一台机器上的进程的套接字调用之间的延迟相对差异是多少?这可以表示为 ns/ms 或相对数量级的最小延迟。
我正在寻找类似的东西:
http://duartes.org/gustavo/blog/post/what-your-computer-does-while-you-wait
...但扩展到进程内与网络调用(假设快速内部网)。
java - 这是对分布式机制的现实期望吗?
我一直在评估 ActiveMQ 作为候选消息代理。我编写了一些测试代码来尝试了解 ActiveMQ 的性能限制。
我可以通过尽可能快地发送消息来在代理中产生失败状态,如下所示:
我很惊讶这条线
当代理进入失败状态时阻塞。我希望会抛出一些异常,所以会有一些迹象表明经纪人失败了。
我意识到我的测试代码正在向代理发送垃圾邮件,并且我希望代理会失败。但是,我更希望经纪人“大声”失败,而不是简单地阻止。
这是不切实际的期望吗?
更新:
Uri 的回答引用了 3 月份提交的 ActiveMQ 错误报告。错误描述包括一个听起来像我正在寻找的提案:“如果传输上的请求有超时(这是为了捕获失败场景,所以一些不应该合理发生的事情),事情就会出错而不是而不是建立等待线程。”
但是,在 8 个月后,该错误目前已通过单次投票取消分配。所以我想问题仍然存在,这是 ActiveMQ 应该(将会?)实现的吗?