如何将 YugabyteDB 设置为最终一致的分布式键值数据库?

Emm*_*uel 5 saas jamstack yugabytedb

我正在创办一家提供 Web SaaS 的初创公司 ( https://tuilder.com/ )。宏伟的计划和潜力。

我对 YugaByte 的全球复制感兴趣。目前,我已经构建了 BadgerDB 的抽象,这是一个用 GoLang 编写的键值数据库。我们的抽象维护索引,有点类似于 graphql,而且速度非常快。是否可以使用 YugaByte DB 进行全局复制作为键值存储?

我的目标是全球分布式的 KeyValue 的性能。

据我了解,写入速度会随着每个额外的复制节点而降低。是对的吗?是否有可能转而青睐速度并在节点之间建立最终一致的模型?我们正在构建 JAM 堆栈。因此,我们需要在 YugaByte 和客户端之间的服务器上有一个身份验证层,理想情况下该层将提供与我们当前在 Go 中编写的相同的抽象。

节点之间的负载平衡如何将请求路由到最近的地理位置?

YugaByte 平台可以实现这一切吗?

小智 3

感谢您对 Yugabyte DB 的关注!这绝对是一个很好的用例。请参阅内联答案。

\n\n
\n

我\xe2\x80\x99m 对使用 YugaByte 进行全局复制感兴趣。目前,我已经构建了 BadgerDB 的抽象,这是一个用 GoLang 编写的键值数据库。我们的抽象维护索引,有点类似于 graphql,而且速度非常快。是否可以使用 YugaByte DB 和全局复制作为键值存储,而不是 GoLang?I\xe2\x80\x99m 目标是KeyValue的性能,全球分布式。

\n
\n\n

是的,您绝对可以使用 Yugabyte DB 实现高性能、全球分布式键值部署。您可以在此处查看全球分布式部署的示例。

\n\n
\n

据我了解,写入速度会随着每个额外的复制节点而降低。是对的吗?是否有可能转而青睐速度并在节点之间建立最终一致的模型?

\n
\n\n

一般来说,延迟会随着复制因子的增加而增加。复制因子主要是为了提高容错能力,但看起来您希望为靠近最终用户的读取提供服务。在这种情况下,您有两种选择:

\n\n
    \n
  • 只读副本是集群中主数据的只读扩展。在这种场景下,集群的主数据部署在一个Region的多个可用区,或者跨邻近的Region。只读副本不会增加写入延迟,因为写入不会同步将数据复制到它们 - 数据会异步复制到只读副本。您可以写入副本,但写入会在内部重定向到事实来源。

  • \n
  • 多主部署目前作为我们 2.0 测试版的一部分发布。此功能允许独立集群以最后写入者获胜语义相互复制。这是关于多主部署的详细设计文档

  • \n
\n\n

假设您想要全局读取和单个集群,我认为只读副本可能就是您正在寻找的。

\n\n
\n

因此,我们需要在 YugaByte 和客户端之间的服务器上有一个身份验证层,理想情况下该层将提供与我们当前在 Go 中编写的相同的抽象。

\n
\n\n

是的,Yugabyte DB 支持在 Go 客户端驱动程序中进行身份验证和 RBAC 授权。

\n\n
\n

节点之间的负载平衡如何将请求路由到最近的地理位置?

\n
\n\n

YCQL API 目前支持从最近的地理区域读取数据,因此您应该已经能够轻松实现这一点。YCQL API 是半关系型的,但对于键值应用程序来说,这应该足够了!

\n\n

希望对您有所帮助,如果您还有任何疑问,请告诉我!

\n