先决条件 – CAP 定理
在分布式系统中,您一定听说过术语 CAP 定理。 CAP 定理指出,在你的数据存储中实现所有三个属性是不可能的。
此处所有三个属性均指 C = 一致性、A = 可用性和 P = 分区容限。根据这个定理,一次只能实现两个中的一个。
如果有 1000 个请求/月,它们可以被管理,但 100 万个请求/月将有点困难。在图中,我们可以有 n 个不同的数据库设置。所有的写操作都在Master数据库中进行,所有的读操作都在Slave数据库中进行。但是必须将来自 master 的数据复制到异步发生的从属数据库。
不一致:
当某些用户在写入后(甚至在将其复制到从站之前)尝试读取数据时,称为不一致。用户可能会认为这是一个错误或其他什么。
分片:
因此,为了克服这种不一致的缺点,我们有另一种称为分片的方法。
在这里,不是主从关系,这里所有的数据库都是主,即所有的数据库都分担同等的责任。例如,在下图中,我们有 3 个数据库实例。这里需要注意的点:
数据被分成 n 个单独的段(这里是 3)。
系统将读写操作缩放 n 倍(如果有 n 个数据库)。
这种方法的缺点:
如果一个特定实例的负载更重,比如说 DB-1,那么它就很难扩展。
现在,如何扩展?我们必须将负载实例分成两个实例来共享负载。需要删除该特定数据库,然后再次拆分,然后再将其切换回来。这是一个乏味的过程,总是需要被监控。
SQL 连接需要黑白分片。
让我们通过考虑以下系统来了解以下每个属性,其中我们有两个 Data 实例,这两个实例都是主数据库。
一致性 –
如前所述,如果数据更新到一个数据库实例,但在将其复制到另一个实例之前,用户查询,如果用户获得的信息是其以前的数据,则表示您的系统不一致。如果用户获得相同的更新值,则称该系统是一致的。
可用性 –
即使您的一台或多台机器出现故障,您的系统仍应始终可用,这意味着如果再有一台数据库服务器出现故障,但作为一个整体,您的系统应该能够执行读写操作。因此必须没有停机时间。
分区容差 –
即使您的数据库服务器之间的连接丢失,您的系统也应该仍在工作。