我正在通过twitter(http://engineering.twitter.com/2010/04/introducing-gizzard-framework-for.html)阅读关于最近发布的Gizzard sharding框架的文章。它提到所有的写操作必须是幂等的以确保高可靠性。如何使写操作幂等?
根据wikipedia,“幂等操作是可以多次应用而不改变结果的操作。”但是,恕我直言,在Gizzard案例中,幂等写操作应该是序列无关紧要的写操作。
现在,我的问题是:如何使写操作idempotent?
我能想象的唯一事情就是每个写入都附加一个版本号。例如,在博客系统中,每个博客必须有一个$ blog_id和$ content。在应用程序级别,我们总是编写像这样的这样的博客内容($ blog_id,$ content,$ version)。 $版本被确定为在应用程序级别唯一。因此,如果一个应用程序首先尝试将一个博客设置为“Hello world”,并且第二个希望它是“再见”,那么编写是幂等的。我们有这样的两个写操作:
write($blog_id, "Hello world", 1);
write($blog_id, "Goodbye", 2);
这两个操作都应该在DB改变了两个不同的记录。所以,无论执行这两个操作的次数和顺序如何,结果都是一样的。
这只是我的理解。如果我错了,请纠正我。