问题标签 [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.
design-patterns - 对消息总线/命令调度程序模式的困惑
最近我读了很多关于分布式消息传递和相关模式的文章。我使用了其中一些工具支持的工具,例如NServiceBus。
许多这些模式在互联网上都有描述。我最近读到的其中一些是:
- 消息代理:http: //msdn.microsoft.com/en-us/library/ff648849.aspx
- 消息总线:http: //msdn.microsoft.com/en-us/library/ms978583.aspx
- SOA 中的消息传递模式:http: //msdn.microsoft.com/en-us/library/aa480027.aspx
- Udi Dahan 关于差异的帖子:http ://www.udidahan.com/2011/03/24/bus-and-broker-pubsub-differences/
如果使用 NService 总线这样的工具可以在不考虑基础设施问题的情况下做很多事情,那么当我尝试实现基本的消息总线和命令处理程序时,就会出现一些问题。事实上,当谈到这些模式时,我看不出它们之间有很多差异。
我不会粘贴代码,因为它太长了,但我找到了两篇博客文章,它们很好地描述了我想谈论的实现的想法。
这个想法很简单,消息总线跟踪订阅者并将消息分派给不同的订阅者,如果他们感兴趣的话。
它与消息总线非常相似。命令总线调用给定命令类型的命令处理程序。
所以在这两种情况下都有相似之处。
使用一种模式比使用另一种模式的真正区别和好处是什么(我不是在谈论支持工具)。我错过了什么?
第二个问题是。如果没有支持工具,消息总线是否有价值?我不认为自己能够独自推动对所有租户的支持。
对于一个冗长而令人困惑的问题,我深表歉意,但请不要犹豫,询问更多细节。
wcf - 在 WCF 或 c# 包装器中使用 c++ .lib 文件?
我有一些 c++ .lib 文件,我想创建一个 WCF 服务,在其中可以调用所有用 lib 文件编写的函数,最后可以在分布式系统(web、android、iphone)中使用。
疑点:
- 我是否需要一个 DCOM 对象来将 cpp lib 与 c# 通信,然后在 WCF 中调用 DCOM dll。
- WCF 服务是否从 cpp 自动编组到 c#(使用 System.Runtime.InteropServies)
- 我不确定 WCF 中的后期绑定是否可以发挥作用?
我在 rnd 中发现的一些要点。
- 我知道如何在 vc++ 中从 .lib 文件创建 dll,但这里的问题是“c# 代码中 cpp 类函数的交集”。. 在 cpp 中的示例,我创建了一个函数 getData(char* ch)。现在如何调用这个传递字符串的函数,比如说;“你好世界”。它给出了一个错误(不能重载到数据类型 SByte*)。试过 Sbyte.Parse() 和 Sbyte.TryParse() 但没有运气。
如果这听起来令人困惑,我很抱歉,但任何形式的链接或示例代码的帮助都将受到高度赞赏。谢谢, 阿拜
java - 键值存储接口
你好有以下界面:
我有以下客户端实现了以前的接口:
如何实现客户端以与给定接口交互?我想用客户端-服务器架构来做到这一点。
我想要的另一件事是知道数据存储在哪里的“名称服务器”(基本上它具有到“存储服务器”的键映射),以及其他几个实际保存数据的服务器。
c# - 锁定服务器场 (asp.net)
我想知道是否有任何方法可以使用 MySQL Cluster 之类的分布式服务器对部署在多台服务器上的 asp.net Web 应用程序执行“锁定”。
例如,以更新帐户余额的经典示例为例。任何两个请求都不应同时更新同一个帐户余额。例如:
会员 1 账户余额为 100。
- 请求 A 访问服务器 1 为成员 1 的余额增加 100
- 请求 B 访问服务器 2 为成员 1 的余额增加 50
因此请求 A 将余额从 100 更新为 200 并保存。
请求 B 将余额更新为 150,并保存。
这些都发生在同一时间,因此丢失了信息,因为最终结果应该是 250。
如何锁定请求 B 必须等到请求 A 完成,直到它检索到余额。如果它是单个进程,这可以通过应用程序范围的锁来实现。但是,由于有多个独立的进程,这对于服务器 1 来说是行不通的,它没有被锁定,服务器 2 也没有
任何想法或最佳实践如何做到这一点?
hadoop - 基于分布式/操作系统的有趣项目
我想知道一些基于分布式系统的有趣挑战,这些挑战可以在一个季度的时间范围内解决(我的大学遵循季度系统!)。我希望从事一个能够同时满足操作系统课程和分布式系统课程的项目,这样我就有足够的时间来研究它(因为我已经参加了这两门课程!)。我正在寻找一个强大的编程组件。有人能指出我正确的方向吗?我知道 Hadoop/map-reduce 是热门产品,但如果有人提出虚拟机领域可解决的挑战,我将不胜感激。
filesystems - 任何支持恒定时间克隆的分布式文件系统
- 光泽,或谷歌文件系统(GFS)将文件分割成某种块,并将它们保存到各个节点。因此他们可以实现可扩展性、分布式流量。
- ZFS、btrfs、wafl 支持恒定时间克隆。通过这个,他们可以实现克隆速度,可写快照,节省存储空间。
我一直在创建任何支持上述两个功能的文件系统。
尽管有很多文件系统支持恒定时间克隆。但我找不到任何可以支持恒定时间克隆的分布式文件系统。Lustre 团队看起来正在开发支持 zfs 的 luster(并且还支持克隆)。但它还没有透露(而且它不包括2.0 beta,可能短期内不会透露)。Nexenta 存储似乎通过“命名空间 nfs”支持这些功能。但事实并非如此。它只是按文件级分发分发文件。这意味着,如果某个文件超过了一个节点的卷大小,它将无法处理。如果大量克隆文件增长为大文件,他们将无法处理(至少,他们必须真正将原始文件复制(而不是隐藏节点)到其他节点。也许我可以将 SAN 磁盘附加到 ZFS 节点的 zvolume。但是我'
所以我正在寻找可以处理上述两个问题的文件系统或解决方案。
architecture - 使用 EJB 分发还是复制?
我读过 EJB 允许应用程序与通过 EJB 公开功能的模块一起分发。但似乎它有这里提到的缺点。那么,在多台机器上运行同一个软件比在多台机器上运行软件更好吗?
python - 分布式状态
我有几台服务器都通过 WAN 链接连接(中等带宽,更高的延迟),它们都需要能够共享有关已连接客户端的信息。每个客户端都可以连接到“网格”中的任何服务器。我正在寻找某种分布式数据库,每个服务器都可以托管和更新。如果每台服务器离线任何时间长度,它都能够使用当前状态进行更新,这一点很重要。
如果我找不到任何东西,另一种选择是选择一个服务器来托管所有服务器可以插入的 MySQL DB;但如果可能的话,我真的很想将其作为单点故障删除。(以及与将奴隶提升为主相关的停机时间)
是否有任何您以前使用过并推荐的非单主分布式数据存储?
如果任何解决方案都有 Python 接口,那将是最有用的。
solr - SOLR中的分布式搜索
我正在使用 SOLR 1.3.0 对已经存在的 lucene 索引执行分布式搜索。问题是,有什么方法可以在搜索后从哪个分片中找到结果?
PS:我正在使用 REST api。
java - 启动 rmiregistry 不起作用
启动 rmiregistry 时遇到问题
当我在命令行中输入 start rmiregistry 时,它返回一个错误:
java.rmi.RemoteException:无法导出:类 gnu.java.rmi.dgc。DGCImpl at 0x00418dde (Unknown Source) at 0x004192d2 (Unknown Source) at 0x00443aa4 (Unknown Source) at 0x0046adc4 (Unknown Source) at 0x0040984d (Unknown Source) at 0x0040989a (Unknown Source) at 0x00409090 (Unknown Source) at 0x0040909a (Unknown Source) at 0x0040989a (Unknown Source) at 0x00409090 (Unknown Source) at 0x00404 0x00468d37 (Unknown Source) at 0x0040906c (Unknown Source) at 0x0040a972 (Unknown Source) at 0x0040ac05 (Unknown Source) at 0x00401a80 (Unknown Source) at 0x0040cb73 (Unknown Source) at 0x0040cbae (Unknown Source) at 0x004003 (d7601 at 0x004003) Unknown Source) at 0x00416afe (Unknown Source) at 0x0041f220 (Unknown Source) at 0x004033f7 (Unknown Source) at 0x004034c7 (Unknown Source) at 0x00401328 (Unknown Source) at 0x00401247 (Unknown Source) at 0x00401294 (Unknown Source) at 0x058d30 (Unknown Source) )在 0x770e15ff(未知来源) 在 0x770e15d2(未知来源)
我已经看到了一个可能的解决方案,您可以确保您的环境变量指向正确的 jdk/jre,但我已经做到了,它应该可以工作....但它没有。
我唯一能想到的另一件事是我在大学代理上。
很高兴听到你的回答,Ta