我在建造一座由单一服务器提供服务的“灰色”/Pylons网络应用程序时,现在我想调查如何在配备某种装货平衡器的若干服务器中推广。
主要的关切当然是服务器方面的状态。 其中包括用户会议数据、用户上载数据(图像等)和海滩。 我希望服务器能够分享海滩,因此,如果其他服务器已经这样做的话,一台服务器就不必做额外工作。 缩小规模可能不会很快成为一个问题,但似乎像一项大型建筑决定那样,在开始时就更能使其具有半权。
关于会议,我可以使用基于厨师的会议:。
供用户上载的数据和海滩(目前存放在地方档案系统) 我需要一种不同的办法,我不敢确定哪一种办法最适合。 我所审议的一些备选办法:
- Distributed filesystem
- Amazon S3 in particular, since I m targeting Amazon as cloud provider. However, I d like to avoid my code becoming overly vendor-specific, so changing cloud provider later is feasible.
- [distributed] key-value store, would require to rewrite/abstract-out parts of my code that assume all data goes on filesystem
- Somehow avoid sharing data at all, load balancer could be very clever to direct requests to nodes that have neccessary user data / cache locally. Wait, this is called sharding, right?
- Network-accessible filesystem, NFS in particular: NFS directory exported on one (possibly dedicated) node, all others mounting it. Possible problems I can think of:
- Bandwidth to NFS host could become a bottleneck
- Race conditions when several clients try to access same files at the same time
我现在考虑与“国家财政预算”挂钩,似乎是最容易的解决办法,可能发挥作用。 但是,如果我不知道,也许还会有更多的警告,使这项决定成为一项短视决定? 你们的经验是什么,什么形式的数据储存和分享你用于云层的 app,预计会横向扩大?