问题标签 [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 回答
1095 浏览

networking - 如何使用“拥有”昵称实现 IRC 服务器?

最近,我一直在阅读 IRC 协议(RFC 1459、2810-2813),并且正在考虑实现自己的服务器。

我不一定要认真地遵守 IRC 协议(毕竟我这样做是为了好玩),但我喜欢它的一件事是网络可以透明地由多个服务器组成。

关于协议或 IRC 规范,我有很多不喜欢的地方。首先是昵称没有所有权。虽然存在像 NickServ 这样的服务,但它们不是官方协议的一部分。另一方面,适当地实施像 NickServ这样的东西会破坏分发的目的(即会有一个地方运行 NickServ,并为它存储一个数据)。

我希望有一种方法可以在每个服务器的基础上管理昵称。这样做的问题是,如果您有两个具有一些注册昵称的服务器,然后它们链接起来,您可能会发生冲突。

有没有办法在不使用一个中央数据存储的情况下避免这种情况?也就是说:是否可以保持服务器松散连接(这样它们每个都作为一个独立的实体存在,但也可以相互连接)并保持昵称之间的唯一性?

我意识到这个问题很模糊,但我想不出更好的措辞方式。我正在寻找更多的建议而不是实际的是/否答案。因此,如果有人对如何在保持服务器独立性的同时在网络中实现昵称唯一性有任何想法,我很想听听。请注意,完全没有必要严格遵守 IRC 协议。我可以根据自己的目的进行更改。:)

0 投票
1 回答
223 浏览

ipc - 如何计算不同机器上的统计数据并再次组合它们?

我有两个提供相同功能的后端应用程序,它们位于两台不同的机器上(实际上这是为了进行负载平衡)。所以他们使用相同的方式处理客户端前端请求。

我想收集有关所有连接的客户端的一些统计信息(即:客户端 GUI 应用程序中最常用的组件是什么或类似的东西)并每秒将结果发送给所有客户端。

我正在考虑分别计算每个后端组件上的这些统计信息并将两者加在一起,在这种情况下,我有一组选项,例如在后端组件之间进行某种通信,或者只是在全局数据库中创建小表,然后每个后端更新表然后选择并发送给它的客户,但这可能会降低性能,因为我想每秒发送一次统计信息

我需要帮助

0 投票
12 回答
8287 浏览

architecture - 如何构建大型应用程序

我认为我已经非常擅长编程的基础知识(适用于各种语言)。我可以写一行代码。我可以写一个很好的方法。我可以写一堂课。我可以写一组很好的类。我可以编写好的中小型应用程序。

然而,我不知道如何构建一个好的大型应用程序。特别是在涉及多种技术并且随着时间的推移可能会涉及更多技术的情况下。假设一个项目有一个大型 Web 前端,一个连接到其他集成后端的大型服务器后端,最后是一个庞大而复杂的数据库。哦,我已经参与了其中的一些应用程序,我确信我可以构建一个。但是,我不太确定它是否可以称为“好”。

因此,我的问题是参考一本书或其他好的阅读资源,在那里我可以学习如何为一般的大型项目分发和组织代码和数据。例如,我是想非常严格地分层,还是想将其封装成独立的单元?我是想尝试将大部分逻辑保留在同一个池中,还是应该在添加我要添加的任何功能时按照最合乎逻辑的方式进行分发?

我已经看过很多关于这些问题的一般原则(例如,没有意大利面条代码,肉丸代码......)并阅读了一些讨论这个问题的优秀文章,但我从未遇到过可以引导我获得具体实践知识的来源。我意识到这个问题的难度,所以我很高兴听到其他人发现有助于他们寻求此类知识的阅读材料。

一如既往,感谢您的回复。

****鉴于“好”代码的定义存在争议,在这种情况下,“好”这个词不会被定义(它意味着你认为它应该意味着什么)。

0 投票
2 回答
335 浏览

python - 通过 Pyro 传输对象

我在一个项目中使用 Pyro,似乎无法理解如何通过网络传输完整的对象。该对象不是分布式的(我的分布式对象工作得很好),但应该作为一个已经可用的分布式对象的参数。

我的对象是从包含一些方法和一些变量的自定义类派生的——一个整数和一个列表。该类可用于服务器和客户端。当使用我的对象作为分布式对象的方法的参数时,整数变量被正确“接收”,但列表为空,即使我可以看到它包含在“发送”之前的值。

为什么是这样?

课程的简短版本:

分布式对象中的接收方法:

0 投票
3 回答
6443 浏览

architecture - 系统架构图中的“云架构”概念

如果您设计一个易于横向扩展的分布式应用程序,或者您只想利用 Amazon、Google 或 Microsoft 提供的任何新的“云计算”产品,那么您通常最终会使用一些典型的概念或组件:

  • 分布式 blob 存储(又名 S3)
  • 异步、持久的消息队列(又名 SQS)
  • 非关系型/非事务型数据库(如 SimpleDB、Google BigTable、Azure SQL 服务)
  • 分布式后台工作池
  • 负载平衡的边缘服务进程处理用户请求(通常是虚拟化的)
  • 分布式缓存(如 memcached)
  • CDN(内容交付网络,如 Akamai)

现在,当涉及到设计和绘制使用这种模式的架构时,我可以使用任何常用的符号吗?或者甚至下载一些很酷的 Visio 模具?:)

它不必是像 UML 这样的正式系统,但我认为如果有每个人都知道和理解的符号会很棒,例如我们有数据库或文档常用的形状。我认为重要的是不要将其与普通文件系统(本地或网络服务器/SAN)或关系数据库等传统概念混为一谈。

简单来说,我希望能够通过看系统架构概览图,就一个应用程序的可扩展性或数据一致性问题得出一些结论。

更新:非常感谢您的回答。我喜欢在传统符号上放置一个小的“云符号”的想法。但是我让这个线程保持打开状态,以防有人会找到特定的符号(可能在一本书左右) - 或者上传了一些拉皮条的 Visio 模板;)

0 投票
8 回答
5934 浏览

java - Java - 分布式编程,RMI?

我在这里遇到了一个问题。我的目标是构建一个框架以允许集成不同的交通模拟模型。这种集成基于在模拟之间共享链路连接性、链路成本和车辆。

为了进行分布式模拟,我计划有一个“协调器”(星形拓扑)。所有参与的模拟只需注册它,并只与协调员交谈。然后协调器在每次模拟之间协调各种任务的执行。

分布问题的一个简单示例是当一个模拟“负责”某些对象(如道路)时。另一个是“负责”其他道路。然而,这些道路是相互关联的(因此,我们需要这些模拟之间的同步,并且需要能够远程交换数据/调用方法)。

我看过 RMI 并认为它可能适合这项任务。(抽象出必须创建一个有线信号规则)。

这是理智的吗?这里的问题是,模拟参与者需要将他们的一些数据存储集中在“协调器”中,以确保模拟之间的显式同步。此外,一些模拟可能需要来自其他模拟的组件或方法。(因此使用 RMI 的想法)。

我的基本方法是让“协调员”运行一个巨大的 RMI 注册表。并且每次模拟都只是在注册表中查找所有内容,确保在每个步骤中使用正确的对象。

任何人有任何沿着这条路前进的提示吗?

0 投票
3 回答
101 浏览

http - Web 服务器的最佳加载方式

如果一个 Web 服务器每天要提供 100GB 的服务,最好是在 10,000 个 10MB 会话或 200,000 个 500kB 会话中这样做。

这个问题的原因是我想知道镜像内容以允许客户端利用 HTTP 的中间开始功能从许多服务器分段下载文件的站点是否有任何优势、劣势或两者都没有。(IIRC 这有点像洪流作品)

0 投票
7 回答
8393 浏览

distributed - 如何设计和验证分布式系统?

我一直在做一个项目,它是一个应用服务器和一个对象数据库的组合,目前只在一台机器上运行。前段时间,我阅读了一篇描述分布式关系数据库的论文,并获得了一些关于如何将论文中的想法应用到我的项目中的想法,这样我就可以使用共享的集群创建一个运行在集群上的高可用性版本- 无架构

我的问题是,我没有设计分布式系统及其协议的经验——我没有在大学学习关于分布式系统的高级 CS 课程。所以我很担心能不能设计出一个不会造成死锁、饥饿、脑裂等问题的协议。

问题:我在哪里可以找到关于设计分布式系统的好资料?有哪些方法可以验证分布式协议是否正常工作?欢迎推荐书籍、学术文章等。

0 投票
4 回答
3274 浏览

http - 用于分布式 HTTP 基准测试的工具?

我想对我们公司正在开发的网站进行基准测试。它将由多个 Web 和后端服务器组成。

为了能够正确模拟大量请求,我正在考虑使用我们的开发机器(大约 15 Xp/Vista)和一些备用 Red Hat 服务器作为基准测试客户端。

是否有任何工具可以让我将这些机器设置为从机/客户端,然后控制它们执行组合基准测试并获得汇总结果?

基准测试将包括模拟普通用户登录和浏览几页。

0 投票
4 回答
408 浏览

.net - 客户端 - 服务器:如果客户端向服务器宣布他们的存在,然后服务器接管,它仍然是客户端服务器,还是 P2P?

问候读者!所以我正在尝试开发一个客户端服务器系统。由于我之前没有设计过客户端服务器系统,所以我想我会发布一个问题,看看这里的专家有什么要说的。

要求:.NET 3.5 WCF 至少 2 台计算机,主机和从机。

用例是一个测试环境,从属设备应主设备的请求运行测试。

问题:我希望从站定位并连接到主站,然后主站控制并启动要运行的测试。从站还进行进度报告:新的测试数据、意外事件等。

我比较困惑的部分是,如果奴隶主动与主人接触,那不就是让他成为主人吗?

这是否意味着我在从属和主控上都需要服务主机,以便它们可以启动活动?