问题标签 [infrastructure]

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 投票
2 回答
122 浏览

git - 跨多个站点管理 git

我们的场景是我们的组织位于几个地理位置。

我想设置一个 git 中央服务器,以便每个分布式团队都可以将他们的更改推送到其中并与其他团队共享。

我想知道做这种事情的最佳选择是什么。

我能想到的当前2个选项是:

  1. 所有全球团队的中央服务器。
  2. 每个地理站点一台中央服务器。在服务器之间设置某种自动推送以保持同步。
  3. 托管解决方案。

虽然#3 目前不是我们组织 AFAIK 的选项,但还有其他选择吗?什么是最好的选择?

我假设已经有一些指导方针和最佳实践来解决这个特定问题。

0 投票
1 回答
88 浏览

windows - 您如何将版本控制、测试和持续集成/部署等开发实践应用于系统管理?

想象一下,您要管理许多服务器,这些服务器具有许多人使用的许多不同服务。现在假设您要重新配置或替换其中一台服务器上的某些软件。显然,您不想在生产中的服务器上工作。

如果这是代码更改,作为开发人员,我会在本地开发机器上进行更改,在本地进行测试并将更改提交到版本控制系统。然后可以将更改部署在暂存环境中,进一步测试并最终部署在生产环境中。如有必要,我也很容易回滚。

一般来说,或者具体来说,您如何在系统管理中实现这一点?

(首先想到的是使用虚拟机并将虚拟机映像放入版本控制中,但我确信有很多我目前不知道的文献和聪明的解决方案。)

0 投票
1 回答
112 浏览

.net - 在这种情况下使用什么:服务或 EventAggregator

我在模块化 Silverlight 应用程序中偶然发现了这种特殊情况。

我需要从应用程序屏幕之一填充上下文菜单,问题是多个模块可能想要在此处添加菜单条目。

我们提出的2个解决方案是:

  • 使用事件聚合器并发布 ContextMenuLoadEvent,模块侦听该事件并在上下文菜单中添加菜单条目
  • 使用 IOC 容器并从模块中注册 IPopulateContextMenu 服务,然后在屏幕中获取所有 IPopulateContextMenu 服务并在它们上调用 Populate。

您认为最好的方法是什么,为什么?

谢谢,

0 投票
2 回答
2119 浏览

amazon-ec2 - 您可以创建自己的 EC2 自动缩放触发器吗?

当在 EC2 上使用自动扩展组时,文档说您可以根据 cloudwatch 指标触发新服务器。是否可以自己启动新实例?

例如,一个应用程序有一个内部项目队列,一旦该队列达到阈值,它就会向 EC2 发送通知以向组中添加更多服务器。

那可能吗?

0 投票
2 回答
425 浏览

magento - Magento 升级流程和基础设施以尽可能减少停机时间

我有一个客户,他目前有一台带有 Magento 的服务器,他admin关闭了整个站点以进行多个小时的更新。我想让它成为即时过程,以便我想就他应该如何设置它提出新的解决方案:

  • Magento 生产服务器 1 (WEB+DB)
  • Magento 生产服务器 2 (WEB+DB)
  • Magento 开发服务器 1

数据库必须以某种方式在这 2 台服务器之间同步(集群?复制?),我认为为了尽可能缩短停机时间,首先应该在开发服务器上测试更新(升级之前从生产服务器同步的数据库/WEB)和之后检查它是否正常工作并知道该过程的外观我将禁用 LoadBalancing 或 RoundRobin DNS 仅对服务器 1 然后在服务器 2 上进行升级/更新,然后切换到服务器 2 作为生产服务器并更新服务器 1。当两者都完成后切换在负载平衡/循环上。

我来自 Windows 环境,所以这就是我在 Windows 上执行此操作的方式(也可能使用单独的数据库和 Web),并且使用 RedGate SqlCompare/Sql Data Compare 等工具应该可以工作。

但我根本不了解 Magento,所以请让我知道有什么可能,如果客户不想让他的商店倒闭,也许应该怎么做……

0 投票
1 回答
356 浏览

ruby-on-rails - Rails 应用程序架构和通用设置

因此,我开始着手公司项目,该项目将包含几个组成部分:

首先...

  1. 工作清单
  2. 客户档案创建和管理
  3. 用户管理和访问(登录、注册、角色等)

之后...

  1. 消息传递
  2. 日程
  3. 基本报告

以后……

  1. 更深入的分析和双

我想知道将每个子弹项目作为自己的 Rails 项目、自包含和模块化是否有意义(如果确实如此);或者最好放在同一个应用程序中。我可以设想这样一种情况,即每个模块都可以彼此独立地运行,以至于它不需要其余的(除了用户功能),另一种情况是所有模块都可以一起使用。

在我看来,许多任务都可以用像 Sinatra 这样的轻量级框架来处理(然后物理地位于 rails 应用程序下)。在服务器上运行多个 Rails 应用程序似乎也有很多开销。但我并不完全了解操作每个场景的所有优点和缺点。

我知道这是一个一般性的问题,肯定会得到很多“它取决于”类型的响应(这是正确的)我是一个准菜鸟,所以要温柔。

提前致谢!

0 投票
2 回答
397 浏览

infrastructure - 本地 MTA,即使有可靠的远程 MTA 可用

我与我们的开发团队讨论了在应用程序服务器上安装本地 MTA,或者他们是否应该使用位于内部网络上的 MTA 服务器来发送电子邮件。两种解决方案各有利弊。

优点:发送电子邮件的程序可以将其发送到本地 MTA,而无需担心发送、重试或任何可能出现的错误。

缺点:发送电子邮件的用户可能会被告知发送邮件有问题。如果远程服务器不可用,程序可以立即检测到。缺点:安全性。必须充分配置本地 MTA 以确保服务器的安全 缺点:过程中增加了一层复杂性。

在我看来,我们应该保持简单。我们不是在谈论与不受我们控制且我们不知道其状态的 MTA 服务器进行通信的程序。在我看来,如果您不确定您的对应部件,则有一个本地 MTA 是必要的,但是在这里,该程序会将其交付给“已知”的 MTA 系统。所以我认为额外的层是没有必要的。此外,在尝试发送电子邮件的每个系统上都有一个本地 MTA 也可能导致额外的问题/错误和更多的管理任务(维护/修补)。有人可能会说,在 Unix 系统上,您总是有一个本地 MTA(sendmail)在运行,但在我们的组织中,我们将系统剥离到最低限度,以确保不会运行额外的服务,这可能会导致潜在的风险。

但是,我很想知道您将如何设计基础设施,记住您与已知/受控/受监控的 MTA 系统进行通信。还是只是观点问题?

非常感谢您的反馈。

伊夫

0 投票
1 回答
1294 浏览

algorithm - Nutch 2 内部发生了什么?

我渴望知道(并且必须知道)nutch 及其用于获取、分类、...(通常是爬行)的算法(因为它与我的项目有关)。
我读了这个材料,但有点难以理解。
有没有人可以以完整且易于理解的方式向我解释这一点?
提前致谢。

0 投票
2 回答
2764 浏览

performance - 是否有关于 Azure VM 本地驱动器有多快的数据?

我正在OnStart()使用“小型”实例在我的 Azure 角色中进行试验。事实证明,将位于驱动器 D 上“本地存储”中的 400 兆字节 ZIP 文件解压缩到驱动器 E 上的文件夹中大约需要两分钟。

我虽然也许应该以其他方式来做,但我找不到任何关于 Azure VM 上的本地磁盘通常有多快的数据。

是否有关于 Azure VM 本地磁盘速度的测试结果?

0 投票
1 回答
3588 浏览

hadoop - 原子hadoop fs移动

在为我当前的一个项目构建基础架构时,我遇到了替换现有 HDFS 文件的问题。更准确地说,我想做以下事情:

我们有几台机器(日志服务器)不断生成日志。我们有一台专用机器(日志预处理器)负责从日志服务器接收日志块(每个块的长度约为 30 分钟,大小为 500-800 mb),对它们进行预处理并上传到我们的 Hadoop 集群的 HDFS .

预处理分三步完成:

  1. 对于每个日志服务器:过滤(并行)接收到的日志块(输出文件约为 60-80mb
  2. 合并(合并排序)步骤 1 中的所有输出文件并进行一些小的过滤(此外,30 分钟的文件被合并为 1 小时的文件)
  3. 使用来自外部数据库的当前映射,处理步骤#2 中的文件以获取最终日志文件并将此文件放入 HDFS。

最终日志文件将用作在 HADOOP 集群上运行的几个 periodoc HADOOP 应用程序的输入。在 HDFS 中,日志文件存储如下:

问题描述:

第 3 步中使用的映射会随着时间而变化,我们需要通过重新计算第 3 步并用新的 HDFS 文件替换旧的 HDFS 文件来反映这些变化。至少在过去 12 小时内以某种周期性(例如每 10-15 分钟)执行此更新。请注意,如果映射发生了变化,在同一个输入文件上应用 step3 的结果可能会有很大不同(它不仅仅是先前结果的超集/子集)。所以我们需要覆盖HDFS 中的现有文件。

但是,我们不能只执行hadoop fs -rm然后hadoop fs -copyToLocal因为如果某些 HADOOP 应用程序正在使用临时删除的文件,则应用程序可能会失败。我使用的解决方案 - 在旧文件附近放置一个新文件,这些文件具有相同的名称但不同的后缀表示文件的版本。现在布局如下:

任何 Hadoop 应用程序在启动(设置)期间都会选择具有最新版本的文件并使用它们。因此,即使正在进行一些更新,应用程序也不会遇到任何问题,因为没有删除输入文件。

问题:

  1. 你知道一些不使用这种复杂/丑陋的文件版本控制的更简单的方法吗?

  2. 一些应用程序可能开始使用当前正在上传但尚未上传的 HDFS 文件(应用程序在 HDFS 中看到此文件但不知道它是否一致)。如果是 gzip 文件,这可能会导致映射器失败。你能建议我如何处理这个问题吗?我知道对于本地文件系统,我可以执行以下操作:

    cp infile /finaldir/outfile.tmp && mv /finaldir/output.tmp /finaldir/output

这是有效的,因为mv是一个原子操作,但是我不确定 HDFS 是否属于这种情况。如果 HDFS在传统的本地文件系统中具有像 mv 这样的原子操作,您能否提出建议?

提前致谢!