【问题标题】:How does the Titan (not backend storage) clustering work?Titan(非后端存储)集群如何工作?
【发布时间】:2017-05-31 03:56:00
【问题描述】:

上下文

我在 AWS 基础设施上使用 Titan v1.0.0,并希望支持故障转移/容错。 AWS 将负责 DynamoDb 存储后端,但似乎有必要让多个 Titan 实例由 (ELB) 负载均衡器提供服务。

我正在使用 nodeJs 库来访问 gremlin,并使用 gremlin 来访问 Titan。

问题

那么,Titan(不是后端存储)集群是如何工作的?如果有的话。

明确地说,我不是在谈论任何后端存储集群,因为我在 AWS 上使用 dynamoDb。 transaction locking 上的文档向我建议必须存在一个 Titan 集群,因为如果没有某种相互通信,其他 Titan 节点不会知道锁定。但我没有看到任何支持这一点的配置选项。

如果在 Titan 上可以进行集群,有人知道如何在生产高可用性设置中获取此设置吗?

服务器端架构示意图:

[NodeJsA]\             /[TitanA]\
          \           /          \
           [ELB (AWS)]            [DynamoDb (AWS)]
          /           \          /
[NodeJsB]/             \[TitanB]/

此外,如果没有 Titan 节点的集群,则通过 TitanA 节点(上图)进行的更改可能需要以下时间才能在 TitanB 节点上显示(最坏情况):

(AWS最终一致性收敛时间(~1秒)+TitanB缓存超时+从NodeJs节点到titanDB的轮询时间)

缺少集群的另一个后果是会话必须固定在 ELB 中,否则更新后的读取请求可能由具有陈旧信息的不同节点提供服务。

【问题讨论】:

    标签: cluster-computing amazon-dynamodb titan


    【解决方案1】:

    Titan 不会在所选后端支持的范围之外进行任何“集群”。您将“锁定”称为表示支持集群的东西,但是如果您阅读了您提供的链接中的锁定提供程序,您会发现锁定在 Titan 级别并没有真正做任何非常花哨的事情,而且它依赖于后端。所以 Titan 实例真的没有任何外部集群能力或彼此了解。因此,您需要在架构方面考虑到这一点。

    【讨论】:

    • 非常感谢您的澄清。我一定已经阅读了该页面大约 10 次,并且它说锁定被抽象的部分每次都必须经过我。跟进问题...您是否有任何有关 AWS 锁定提供商的信息? AWS 是否提供链接中描述的锁定类型,如果提供,您如何使用它/知道您正在正确使用它?
    • 我对 aws 的实现不太了解,所以我不确定他们是否有自己的锁定提供程序。我只能说,我从未听说过泰坦社区中提到过任何人。
    • 非常感谢:-)。为了完整性(我希望不需要这样做),但如果我必须为 AWS 实现锁定提供程序,是否有我可以查看的指南或 API 参考,或者类似的东西?
    • 我不这么认为。这不是 imo 通常达到的“功能”,因此记录它的需求相当低。我想你想先看看here
    • @JohnStephenson 我们使用与您相同的架构,但在尝试通过 ELB 连接到 Titan 实例的 nodejs 实例中遇到 sshtunnel 问题。我们最终编写了一个自定义 Ping 代码,但要通过 ELB 保持从 nodejs 实例到 Titan 实例的 websocket 连接活动似乎过于繁重。
    猜你喜欢
    • 2016-05-10
    • 2017-04-05
    • 2013-10-28
    • 2016-09-07
    • 1970-01-01
    • 2017-02-28
    • 1970-01-01
    • 1970-01-01
    • 2012-09-18
    相关资源
    最近更新 更多