【问题标题】:Thrift in production: high availability model生产中的节俭:高可用性模型
【发布时间】:2019-06-25 11:39:45
【问题描述】:

尝试学习如何设置 Thrift 服务的高可用性、蓝/绿部署和水平扩展以进行生产。如何在多台服务器上使用 Thrift 并让客户端使用多个服务器节点并在故障情况下自动切换到健康的节点?

我读过thrift tutorials、thrift missing guide 甚至the Learning Apache Thrift book。此外,随机谷歌搜索还没有找到答案。

我确实从node-thrift-pool 找到了部分解决方案,但它只允许将多个服务器添加到池中。但是,一旦您部署了新版本,该池就会变空,因为客户端不知道新服务器(因此需要 ELB 或类似的东西)。我曾尝试使用 ELB,但未能使其正常工作,之后将启用并检查访问日志以深入挖掘。

【问题讨论】:

    标签: thrift amazon-elb


    【解决方案1】:

    如何在多台服务器上使用 Thrift 并让客户端使用多个服务器节点并在故障情况下自动切换到健康的节点?

    简而言之:通过建立适当的架构。

    在某种程度上你问错了问题。 Thrift 只是一种机制,它使两个端点(通常是客户端和服务器)能够通过一些标准化的“构建块”相互通信。

    Apache Thrift 可以不做的事情是为您提供一个成熟的基础架构 - 仅作为示例 - 实施复杂的工作负载调度程序,例如 Apache Mesos1)或者一些分布式的、容错的两阶段提交协议,比如 Paxos 或 Raft。所有这些都位于(至少)一个更高的抽象级别。

    即使是让一组对等机器相互通信的基础架构(“gossip”)也必须构建在 RPC 或消息传递层之上。这完全与所使用的软件组合无关,无论是 Thrift over Sockets 还是消息总线,还是众所周知的 Avian Carriers。

    换句话说,Apache Thrift 可以提供基础架构,让您通过各种渠道以各种格式非常有效地从一个点发送消息到另一个点。如果您需要一些逻辑,那么这当然是可能的,但需要一些其他代码来实现这一点。 Thrift 提供了一把非常强大的瑞士刀,但您仍然必须砍树。

    PS:Randy Abernethy 的Programmer's Guide to Apache Thrift 也值得一看。我不知道另一本书,所以我无法真正比​​较它们。

    1)Mesos 实际上使用了 protobuf。但这是一个不重要的细节。

    【讨论】:

    • 我知道 thrift 不会为我构建基础设施。我一直在寻找类似于基础架构的解释的东西,以允许这些东西用于节俭服务。例如:是否获得了带有 aws elbs 的 HA/故障转移,或者是否有另一种有效的模型?与扩展相同,将使用哪些技术在 N 个 thrift 服务(在不同的服务器上)之间分配负载?
    【解决方案2】:

    harpc 是一个选择,但不支持 python3

    【讨论】:

      猜你喜欢
      • 2012-03-02
      • 1970-01-01
      • 2017-08-12
      • 1970-01-01
      • 2012-11-25
      • 1970-01-01
      • 1970-01-01
      • 2012-11-28
      • 1970-01-01
      相关资源
      最近更新 更多