2

我不明白为什么单独的读写比在一台服务器上读写更好。

比如我有一个mysql集群,有三台机器:node1、node2、node3。

一种可能的架构是:

  • 所有对 node1 的写请求,但对 node2 和 node3 的所有读请求。

第二种可能的架构是:

  • 所有这三个节点都处理写入和读取。

我们可以在架构一中看到对 node1 的写入压力非常大,所以我更喜欢架构二。

另外,mongodb为什么要分离对主节点的写入和对辅助节点的读取。

4

2 回答 2

2

这是 MySQL 和 MongoDB 的规模问题。在具有小数据集和低流量的最简单应用程序中,将所有写入和读取都转到一个服务器为您提供了一个简单的架构。在具有低容量写入的高容量读取应用程序中,复制到多个读取节点的单个写入节点使您能够通过添加另一个节点来扩展读取。在高读写量的应用程序中,您可能会考虑分片(在 MySQL 中您可以自己完成或找到帮助工具),在 mongodb 中您运行 mongos 为您处理分片。分片将根据您定义的某些键将记录放在特定实例上。该键将确定每条记录应存储在哪个实例上。您可以想象,分片管理比单个服务器进行读/写访问更复杂。

于 2012-09-05T03:27:50.133 回答
1

MySQL Cluster 还支持自动分片——默认情况下对主键进行散列,但用户可以输入自己的键以提供更多的分布意识。集群中的每个节点都是master,内部负载均衡会将负载分布到节点之间

虽然水平很高,但此处发布的简短演示向您介绍了 MySQL 集群中分片的概念: http ://www.oracle.com/pls/ebn/swf_viewer.load?p_shows_id=11464419

于 2012-09-05T19:41:31.973 回答