分布式数据库本身分为计算层、元数据层和存储层:
- 计算层就是之前单机数据库中的 SQL 层,用来对数据访问进行权限检查、路由访问,以及对计算结果等操作。通常客户端不再是访问 MySQL 数据库本身,而是访问一个分布式中间件。
- 元数据层记录了分布式数据库集群下有多少个存储节点,对应 IP、端口等元数据信息是多少。当分布式数据库的计算层启动时,会先访问元数据层,获取所有集群信息,才能正确进行 SQL 的解析和路由等工作。另外,因为元数据信息存放在元数据层,那么分布式数据库的计算层可以有多个,用于实现性能的扩展。
- 存储层用来存放数据,但存储层要和计算层在同一台服务器上,甚至不求在同一个进程中。
这样,就算有数据服务器寄了,也只会影响 1 N \frac{1}{N} N1的数据,N 取决于数据被打散到多少台服务器上。该存储层迅速切换从服务器就行了。