生产中的节俭:高可用性模型
Thrift in production: high availability model
尝试了解如何设置高可用性,Blue/Green 部署和横向扩展 Thrift 服务以用于生产。如何在多台服务器上使用 Thrift 并让客户端使用多个服务器节点并在出现故障的情况下自动切换到健康的节点?[=12=]
我已阅读thrift tutorials, thrift missing guide and even the Learning Apache Thrift book。此外,随机谷歌搜索没有提出答案。
我确实从 node-thrift-pool 中找到了部分解决方案,但它只允许将多个服务器添加到池中。但是一旦你部署了一个新版本,那个池就会变空,因为客户端不知道新服务器(因此需要一个 ELB 或类似的东西)。我曾尝试使用 ELB 但未能使其正常工作,此后将启用和检查访问日志以进行更深入的挖掘。
How can one use Thrift on multiple servers and have the clients use multiple server nodes and automatically switch to healthy ones in a failure scenario?
简而言之:通过设置合适的架构。
在某种程度上你问错了问题。 Thrift 只是一种机制,它使两个端点(通常是客户端和服务器)能够通过一些标准化的“构建块”相互通信。
Apache Thrift 可以不能 做的是为您提供一个完全成熟的基础架构 - 举个例子 - 实现一个复杂的工作负载调度程序,如 Apache Mesos1) 或一些分布式的、容错的两阶段提交协议,如 Paxos 或 Raft。所有这些都位于(至少)一个更高的抽象级别。
甚至是让一组对等机器相互通信的基础设施 ("gossip") is something that has to be built on top of the RPC or messaging layer. This is completely regardless of the combination of software used, be it Thrift over Sockets or a message bus, or be it the proverbial Avian Carriers.
换句话说,Apache Thrift 可以提供基础架构,让您可以非常高效地通过各种渠道以各种格式从一个点向另一个点发送消息。如果你需要一些逻辑,那么这当然是可能的,但是需要一些其他的代码来实现它。节俭给了一把非常有用的瑞士刀,但你还是得砍树。
PS:Randy Abernethy 的 Programmer's Guide to Apache Thrift 也值得一看。我不知道另一本书,所以我不能比较它们。
1) Mesos其实用的是protobuf。但这在这里是一个不重要的细节。
harpc是一个选择,但没有python3支持
尝试了解如何设置高可用性,Blue/Green 部署和横向扩展 Thrift 服务以用于生产。如何在多台服务器上使用 Thrift 并让客户端使用多个服务器节点并在出现故障的情况下自动切换到健康的节点?[=12=]
我已阅读thrift tutorials, thrift missing guide and even the Learning Apache Thrift book。此外,随机谷歌搜索没有提出答案。
我确实从 node-thrift-pool 中找到了部分解决方案,但它只允许将多个服务器添加到池中。但是一旦你部署了一个新版本,那个池就会变空,因为客户端不知道新服务器(因此需要一个 ELB 或类似的东西)。我曾尝试使用 ELB 但未能使其正常工作,此后将启用和检查访问日志以进行更深入的挖掘。
How can one use Thrift on multiple servers and have the clients use multiple server nodes and automatically switch to healthy ones in a failure scenario?
简而言之:通过设置合适的架构。
在某种程度上你问错了问题。 Thrift 只是一种机制,它使两个端点(通常是客户端和服务器)能够通过一些标准化的“构建块”相互通信。
Apache Thrift 可以不能 做的是为您提供一个完全成熟的基础架构 - 举个例子 - 实现一个复杂的工作负载调度程序,如 Apache Mesos1) 或一些分布式的、容错的两阶段提交协议,如 Paxos 或 Raft。所有这些都位于(至少)一个更高的抽象级别。
甚至是让一组对等机器相互通信的基础设施 ("gossip") is something that has to be built on top of the RPC or messaging layer. This is completely regardless of the combination of software used, be it Thrift over Sockets or a message bus, or be it the proverbial Avian Carriers.
换句话说,Apache Thrift 可以提供基础架构,让您可以非常高效地通过各种渠道以各种格式从一个点向另一个点发送消息。如果你需要一些逻辑,那么这当然是可能的,但是需要一些其他的代码来实现它。节俭给了一把非常有用的瑞士刀,但你还是得砍树。
PS:Randy Abernethy 的 Programmer's Guide to Apache Thrift 也值得一看。我不知道另一本书,所以我不能比较它们。
1) Mesos其实用的是protobuf。但这在这里是一个不重要的细节。
harpc是一个选择,但没有python3支持