说下,经理的基本原理

状态机复制


经理本质上一个状态机复制的集群。在状态机复制的架构中,数据库被当做一个状态机。每一次写操作都会导致数据库的状态变化。为了创建一个高可用的数据库集群,有一个组件,即事务分发器,将这些操作按照同样的顺序发送到多个初始状态一致的数据库上,让这些数据库执行同样的操作。因为初始状态相同,每次执行的操作也相同,所以每次状态变化后各个数据库上的数据保持一致。



分布式的状态机复制


事务分发器是一个单点,为了避免单点故障,可以采用分布式的状态机复制。在分布式的状态机复制中,有多个事务分发器,它们彼此互相通信。事务分发器可以同时接收事务请求,就像单个事务分发器同时接收事务请求一样。从应用层来说,并发的事务发到同一个事务分发器和发到不同的事务分发器上效果是一样的。事务分发器之间会互相通信,把所有的事务汇总,排序。最终,每个事务分发器上都有一份完整的排好序的事务请求。每个事务分发器只连接到一个数据库上,并负责把事务请求依次发送到相连的数据库上去执行,其就是一个分布式状态机复制的模型了。



分布式的高可用数据库


将分布式的事务分发模块集成到数据库系统中,就变成了一个分布式的高可用数据库系统。用户通过数据库的用户接口执行事务。数据库收到事务请求后,首先交由事务分发模块处理。事务分发模块将事务汇总排序,然后依次交由数据处理模块去执行这些事务。如果去掉内部的细节,就会发现这是一个非常简洁的数据库集群方案.MGR就是这样一个分布式的高可用MySQL系统。



品味来自官档的一段话~


创建一个容错系统最常见的办法是诉诸组件冗余,换句话说,组件可以被删除,系统应继续按预期运行。这将创建一组挑战,提高这样的系统完全不同层次的复杂性。具体来说,复制数据库必须处理他们需要维护和管理多个服务器,而不只是一个。此外,正如服务器共同合作创建的组其他几个典型的分布式系统必须处理的问题,如网络分区或分大脑场景。


因此,终极挑战是保险丝的逻辑数据库和数据复制的逻辑有多个服务器协调一致的和简单的方法。换句话说,有多个服务器达成系统的状态和数据,系统经过每一个变化。这可以概括为在每个数据库状态转换服务器达成协议,这样他们所有的进步一个数据库或者他们最终收敛于相同的状态。这意味着他们需要操作作为一个状态机(分布式)。


MySQL组复制为分布式状态机复制提供了强大的服务器之间的协调。服务器协调时自动他们是同一组的一部分。

说下,经理的基本原理