我正在运行一个区块链节点(对于那些不知道的人来说,区块链本质上是通过共识协议保持数据库实例同步)。现在我有一个 Web 服务器,它直接与节点内的数据库对话。
但是,为了应对更高的负载,我想在数据库前面放置一个负载均衡器(这样我就可以在均衡器后面随意添加更多节点并以此方式进行扩展)。
我在 AWS 上托管节点(只是一个 EC2 实例)。我希望可以在 EC2 实例前面添加一个 AWS 类负载均衡器,但找不到有关如何执行此操作的任何教程。
问题:这可以(以某种形式)实现吗?我该如何实现?同样,目标是拥有一个我的 Web 服务层可以连接的单一连接字符串,在后台将请求路由到多个数据库实例。
提前致谢。
编辑:基本上,假设我有几个数据库实例,它们都由区块链网络保持同步。我只需要对实例执行读取操作(写入操作在通过协议提交给数据库之前会提交给网络以达成共识)。我需要找到一种方法来平衡多个实例之间的读取操作(同样,这些实例必须保证同步)。
答案1
数据库负载平衡比无状态 Web 服务器负载平衡更困难。您无法使用 AWS 功能自动平衡数据库负载。提高数据库性能的主要方法是使用更大的实例或分配更多 I/O 容量。
Amazon RDS 有一个“读取副本“。这些使用本机复制来使一个或多个附加数据库与主数据库保持同步。您的应用程序必须足够智能才能使用正确的数据库,主数据库用于写入或副本数据库用于读取。
您必须自己阅读一些资料来了解数据库架构,以及它将如何与您的用例交互。您告诉我们的信息还不足以给您一个明确的答案。本文向您介绍 PostgreSQL 集群等。
我建议您首先扩展到更大的实例,让多个客户端使用该数据库。接下来,您必须进行扩展并以某种方式保持数据库同步。
在 AWS 上,你可以重写你的应用程序以使用DynamoDB,一个高度可扩展的 no-sql 数据库。这往往是一个巨大的变化。
如果您编辑您的问题以提供有关您正在做的事情的更多详细信息,您可能会得到更多帮助。