【发布时间】:2011-07-08 06:33:52
【问题描述】:
我们正准备扩展 API 密集型 Web 应用程序的 API 端。我的(精通技术的)客户为此提出了一种非常规的方法:与其将负载平衡到多个应用服务器上,后者将与分片数据库通信,他希望我们:
- “shard the app servers”,将app server code和db都放在每个物理服务器上,这样app server只连接自己的db shard;
- 让应用服务器在需要访问其他分片时相互通信(而不是直接与另一个分片的数据库通信);
- 让 API 客户端自己选择一个应用分片(在客户端,基于一些稳定的哈希)并直接与其对话。
根本原因是这样做是最自然的事情,这将使我们能够在未来迁移到多站点分布式系统。
(堆栈是 MySQL 上的 PHP + Node.js,尽管此时也考虑过渡到 MongoDB。)
现在,我认为现成的它没有什么大问题。对这些服务器到服务器的交互进行编码可能会有些麻烦,但它肯定会有自己的好处。基本上我不知道这是否是个好主意。
你想到了什么优点和缺点?我在这里寻找技术问题和优势。谢谢!
【问题讨论】: