我使用的是MongoDB(Mongo 2.2.0)的分片版本,带有两个分片,每个分片都有一个副本。
我注意到亚马逊不同区域之间的网络并不像在同一区域那样快。 同一区域的ping延迟约为0.5ms,区域之间约为1.5ms,峰值为13ms。
我想知道是否有办法在每个区域设置副本,并将查询路由到最近的机器。
感谢
答案 0 :(得分:0)
文档中有关于Data Center Awareness和Deploying Geographically Distributed Replica Sets的部分。基本上,有一个用于分片和副本集的标记功能,因此您可以explicitly specify进行写入或读取。
然而,最大的问题是您的应用程序架构以及是否要将应用程序服务器放在不同区域。由于写入必须始终发送到主数据库,因此将应用程序服务器放在不同位置以用于大量写入应用程序几乎没有什么好处。
但是,您可以通过使用标记功能或使用nearest
as a read preference来加快读取速度,这将有助于大量读取繁重的应用程序。
一般来说,在不同的数据中心托管应用程序并不容易,因为您需要单点同步或者需要使用某种类型的多版本并发。从技术角度来看,这是一种权衡,它取决于应用程序的性质,在频谱中的位置最适合您。
答案 1 :(得分:0)
对于每个亚马逊实例,它将拥有唯一的私有IP。尝试使用它以获得更好的性能。它将在他们的网络中连接。