如果我们有一个数据库系统在地理位置不同的位置上复制...,并且我们希望允许在每个数据库上进行写操作。最好的方法是什么?
例如:expedia.com这样的网站使世界各地的顾客都可以预订任何酒店。
说美国,欧洲和亚洲的客户正在预订同一家酒店的房间。我们可以从地理位置上分离(并复制)的多个RO实例中读取数据,因此我们向客户显示该酒店中有可用的房间。
现在,如果所有这些客户都尝试预订,那么最简单的方法就是写一个实例。
在写之前,我们会每次检查房间是否可用。如果仍然可用,我们写。
这样,一旦第一个请求通过,我们就可以拒绝其他请求。
但是以这种方式,美国客户(主实例所在的位置)将具有不公平的优势,因为写入请求需要更长的时间才能通过长距离传输。
因此,我们将不得不允许写入多个实例..然后留出一些时间使其在各个实例之间进行同步。但是,如果我们写入两个实例,我们将如何确保只有一个写入请求成功?我敢肯定,必须有某种行业标准的方式来做到这一点。但是我似乎找不到任何好读的东西。