尝试学习如何为生产设置高可用性,蓝/绿部署和横向扩展Thrift服务。如何在多个服务器上使用Thrift并让客户端使用多个服务器节点并在故障情况下自动切换到健康节点?
我已阅读thrift tutorials,thrift missing guide甚至the Learning Apache Thrift book。此外,随机谷歌搜索没有提出答案。
我确实从node-thrift-pool找到了部分解决方案,但它只允许一个人将多个服务器添加到池中。但是,一旦部署了新版本,该池就会变空,因为客户端不会知道新服务器(因此需要ELB或类似的东西)。我尝试过使用ELB并且无法使其工作,将在此之后启用并检查访问日志以深入挖掘。
答案 0 :(得分:1)
如何在多个服务器上使用Thrift并让客户端使用多个服务器节点并在故障情况下自动切换到健康节点?
简而言之:通过建立适当的架构。
在某种程度上,你提出了错误的问题。 Thrift只是一种机制,它允许两个端点(通常是客户端和服务器)通过一些标准化的“构建块”相互通信。
Apache Thrift可以不做什么,为您提供完全成熟的基础架构 - 仅作为示例 - 实现复杂的工作负载调度程序,如Apache Mesos 1)或一些分布式,容错的两阶段提交协议,如Paxos或Raft。所有这些都位于(至少)一个抽象级别更高。
甚至让一组对等机器相互通信的基础设施(“gossip”)也必须建立在RPC或消息传递层之上。这完全不管所使用的软件组合,无论是套接字上的Thrift还是消息总线,或者是众所周知的Avian Carriers。
换句话说,Apache Thrift可以提供基础架构,让您通过各种格式的各种渠道,非常高效地将消息从一个点发送到另一个点。如果你需要一些逻辑,那么这当然是可能的,但是需要一些其他代码才能实现这一点。节俭提供了一把非常有能力的瑞士刀,但你仍然需要砍树。
PS:Randy Abernethy的Programmer's Guide to Apache Thrift值得一看。我不知道另一本书,所以我无法真正比较它们。1) Mesos实际上使用了protobuf。但这是一个不重要的细节。
答案 1 :(得分:0)
Turning on connection authentication on a queue manager是一个选择,但没有python3支持