对 postgresql 中的负载平衡和水平扩展感到困惑

Ben*_*Max 7 postgresql scalability cloud load-balancing

如果我错了,请纠正我,但我想通过添加更多机器或平衡多个服务器之间的负载来处理更多请求和负载是水平扩展。那么,如果我添加更多服务器,我该如何分发数据库?我是否创建一个数据库来保存多台服务器的用户记录?还是我也要拆分数据库?数据库完整性如何?如何同步呢?不然我怎么办?我是一个新手,真的很困惑,但渴望学习。我想在我的项目中使用 postgres,并且想在开始之前了解一些基本的东西。我正在考虑使用两个小的 ec2 实例。但是我对数据库感到困惑。我如何着手创建数据库。我需要为此进行分片吗?根据 postgres,水平缩放的最佳方法是什么?如果您能向我解释一下,我将不胜感激。谢谢!

编辑:

如何使用多台机器进行负载均衡并管理数据库?

我有一个用户可以上传视频的应用程序,它将使用 Elastic Transcoder 转换为 mp4。用户约10k。那么,如何使用多台机器进行负载均衡并管理数据库呢?我想做的是性能负载平衡。我在很多帖子中读到添加更多机器可以利用它。所以我认为水平缩放。但是由于水平扩展很可怕,我如何负载平衡和管理我的数据库?

Tom*_*zky 9

数据库水平扩展的第一条规则是避免它。尽一切代价。只有当您可能购买的服务器都无法处理您的数据时,您才应该考虑它。现在有可以处理大量数据的服务器。

数据库的水平扩展将为您提供:

  • 至少一个数量级更复杂的系统:

    • 即使在最简单的分片情况下,您也必须管理更多服务器,均匀分配负载,管理所有节点中的架构更新和共享表,使您的前端连接到正确的服务器等;
    • 如果您改用复制,则必须管理复制延迟、对副本的查询失败、主副本和副本之间的数据安全传输、副本不同步、必须针对主节点运行更新等;
  • 至少一个数量级的错误,上述并发症的直接后果;

  • 至少一个数量级难以调试错误,上述并发症的直接后果;

  • 硬件故障的概率至少高出 2 倍——你至少有 2 台服务器,其中任何一台发生故障的概率都高于一个特定的故障;

  • 性能可能比相同价格的单个服务器差一个数量级,因为更好的存储选项,如电池供电的驱动器控制器或 SSD、数据分区、WAL 文件的智能放置、更大的缓存等,比购买另一个更重要,缓慢的服务器;请记住,数据库的瓶颈主要是存储。

您可以水平扩展连接到数据库的客户端(前端主要受到处理器的瓶颈,所以这是有道理的),您应该使用复制进行故障转移(所谓的热备用服务器),您可以在同一个数据库中对数据进行分区(这将得到您可以获得分片的大部分好处,而缺点要少得多)。在您的规模与 Google、Twitter 或 Facebook 相当之前,不要进行水平缩放。所以没有 2 个小的 EC2 实例,没有。

  • 能否请您也添加一些解释?你的陈述远没有那么明显真实...... (4认同)