linux - (*nix) 用于构建快速且可扩展的 Web 服务的云/集群解决方案

标签 linux unix cloud scalability cluster-computing

<分区>

我要构建一个高性能的网络服务。它应该使用数据库(或任何其他存储系统)、一些处理语言(脚本或非脚本)和网络服务器守护进程。系统应该分布到大量的服务器上,以便服务运行快速可靠。

它应该复制数据以实现可靠性,同时它必须提供分布式计算功能以处理大量数据(主要是,对大型数据库的查询无法在具有合适响应水平)。缓存技术不在主题范围内。

我应该考虑哪些集群/云解决方案?

有很多单系统镜像 (SSI)、集群文件系统(可以是设计的一部分)、Hadoop、BigTable 克隆等项目。每个都有其优点和缺点,“关于”页面总是说解决方案很棒 :) 如果您尝试部署解决该主题的东西 - 分享您的经验!

UPD:它不是文件托管,也不是游戏,而是一些互动的东西。您可以将 StackOverflow 作为 Web 服务的示例:小块数据、半静态内容、密集型数据库操作。


Cross-Post on ServerFault

最佳答案

您确实需要更好地定义“大”。 “大”是一种愿望,还是您的营销部门* 认为他们会有硬性数字?

如果您可以使用简单的组件来做到这一点,那就去做吧。 Cassandra 和 Hadoop 之类的东西既不容易设置(尤其是后者)也不容易开发;能够有效开发此类应用程序的开发人员将非常昂贵且难以雇用。

所以我想说的是,开始使用您最喜欢的“传统”数据库,并使用适当的高可用性解决方案,然后等到接近极限(您始终可以衡量实际应用程序的极限在哪里,一旦构建完成,您就拥有了一个性能测试系统)。

请记住,Stack Overflow 使用非常传统的组件,只需使用少量商品硬件进行良好调整。这对于它的规模来说很好,但永远不会适用于(例如 Facebook),但开发人员知道 SO 的受众永远不会达到 Facebook 的水平。

编辑:

当“传统”技术开始失败时,例如您达到了可以在单个数据库实例上完成的操作的限制,那么您可以考虑分片或将功能分区到更多实例中(再次选择 HA 系统)。

您唯一需要其中一个(例如 Cassandra)“nosql”系统的情况是,如果您有一个具有非常高的写入要求和可用性要求的同构数据存储;即使那样,您仍然可以通过对传统系统进行分片来解决它——就像其他人(甚至 Facebook)有时所做的那样。

关于linux - (*nix) 用于构建快速且可扩展的 Web 服务的云/集群解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1749234/

相关文章:

cloud - 租户和用户有什么区别?

unix - autoconf不生成makefile?

shell - 如何在 KornShell (ksh) 中正确保存 IFS

linux - cut 中的定界符是什么意思,为什么在此命令中它排序两次?

ubuntu - 如何在我的系统上拥有类似 Amazon EC2 的环境?

php - 参数通过 php 传递到 bash 文件不起作用

python - 如何使用 python 脚本将 EML 文件作为电子邮件一次发送一个电子邮件列表?

linux - 如何从 crosstool-ng 工具链名称中删除供应商名称

linux - 在 Linux 中生成的零字节 .lis 文件

linux - Docker 容器数据卷映射失败?