AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题 / 71844
Accepted
SilentSteel
SilentSteel
Asked: 2014-07-18 11:51:10 +0800 CST2014-07-18 11:51:10 +0800 CST 2014-07-18 11:51:10 +0800 CST

带有 Node.js 和数据库的 Amazon EC2 上的低延迟 RESTful 服务器架构

  • 772

对于具有大量大规模部署实践经验的 DBA 来说,这是一个问题。

  • 我们正在尝试构建一个延迟非常低的应用程序。(我们真的想创造最好的用户体验,在这种情况下延迟很重要。)

  • 该应用程序基本上是一个查询数据库 (OrientDB) 的 RESTful Node.js 服务器。静态内容/文件托管在其他地方。对象主要在客户端转换为 UI。

  • 我们计划使用 Amazon EC2 来托管 Web 服务器和数据库。

  • 高可用性也很重要。

  • 目前,成本不是主要的决定因素。

你会推荐什么架构?

这里有2个选项,也许还有更多:

  • 将 Web 服务器(在本例中为 Node.js)放在与数据库相同的 EC2 实例上。我们将有多个这样的实例来实现可用性和负载平衡。过去,我用它来减少大容量的延迟,但这些系统不必大幅扩展。也是在安置组之前。

  • 或者,在与 REST Web 服务器不同的实例上拥有数据库。

背景

数据库大小约为 50 GB,我们需要更好的解决方案。预计流量将在 8 个月内达到该数量的 10 倍(500 GB 数据库)。

它大约是 20% 的写入和 80% 的读取。现在每秒大约有 1000 个查询,而且这个速度还在增加。

scalability amazon-ec2
  • 1 1 个回答
  • 1784 Views

1 个回答

  • Voted
  1. Best Answer
    Maziyar
    2014-08-18T09:04:30+08:002014-08-18T09:04:30+08:00

    “将网络服务器(在本例中为 Node.js)放在与数据库相同的 EC2 实例上”

    永远不要把你的应用服务器和数据库服务器放在一台机器上。由于您使用的是 EC2,因此亚马逊上有一些名为“Architecting on AWS”的白皮书,其中有一个部分称为可扩展性。你所有的应用服务器都应该是无状态的。这意味着它不应该是任何机器上存储的数据,因此您可以根据您的自动扩展组轻松启动虚拟机(从您的 AMI),或者在流量下降时摆脱它。

    数据库服务器通常有自己的可扩展方式,如主从或副本集。因此,它们不应该在您的应用服务器(自动扩展或 ELB)的同一组中。

    现在是网络延迟,实际上最近我在 AWS VPC 上测试内部网络速度检查,并没有那么糟糕。根据您的 EC2 类型,网络具有低中型和高级网络类型,但在内部网络方面,它的速度非常快。它将在 DNS 解析时间、HTTP 请求时间、HTTP 响应时间等范围内。您应该更担心 EC2 机器上的查询时间,方法是选择 SSD 卷(可能是配置您的 EBS 卷)并可能 RAID 您的 EBS 卷以加快速度读/写。当涉及到架构中的数据库时,瓶颈通常是 I/O,而不是网络延迟(除非您正在使用所有带宽,因此您需要更多的辅助服务器,以便您的应用服务器可以直接从中读取)。

    有问题可以私信我,祝你好运

    • 1

相关问题

  • 什么时候使用像 hadoop 这样的技术?

  • 为什么关系数据库不能满足大数据的规模?

  • 如何扩展 SQL Server 2008 或 2012?

  • MySQL 分片表/服务器或其他减少表大小的方法?

  • MySQL 的分片启发式算法是什么 - 每个表的记录数和每个实例的表数?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve