我们有一个构建在Restlet框架上的基于REST的应用程序,它支持CRUD操作。它使用本地文件来存储数据。
现在,需要在多个VM上部署此应用程序,一个VM中的任何更新操作都需要传播到其他VM上运行的应用程序实例。
我们解决这个问题的想法是在给定的VM中发生更新操作时发送多个POST消息(发送到所有其他应用程序)。这里的假设是每个应用程序都有一个所有其他应用程序的列表/URL。
有没有更好的方法来解决这个问题?
发布于 2011-09-08 12:39:15
Consistency是一个很深的话题,也是一个hard thing to get right。当同一数据发生两次几乎同时的更改时,问题就来了:冲突的更新可能在一台服务器上以一种顺序到达,而在另一台服务器上以另一种顺序到达。这是一个问题,因为两个服务器不再就数据是什么达成一致,并且不清楚谁是“正确的”。
简而言之:获取您最喜欢的关系型数据库管理系统(例如,mysql很流行),并在所谓的three-tier model中连接您的应用程序服务器。请确保在transactions中执行复杂的更新,这将提供可接受的一致性模型。
长话短说:三层模型很好地服务于中小型网站/服务。您最终会发现单一数据库成为瓶颈。对于读取流量明显大于写入流量的服务,常见的优化方法是创建一个单主多从数据库复制安排,其中所有写入都将发送到单个主服务器(与非分布式事务保持一致所必需的),但更常见的读取操作可能会发送到任何读从服务器。
对于读/写流量均匀混合的服务,放弃一些正式SQL提供的便利(以及附带的限制),转而使用最近出现的各种"nosql“数据存储,可能会更好。它们的相对优点和对各种问题的适用性本身就是一个深层次的话题。
发布于 2015-02-17 13:40:26
我现在可以看到7个主要的选择。您应该了解更多细节,并决定设施/折衷是否适合您的目的
https://stackoverflow.com/questions/7342945
复制相似问题