CynosDB for PostgreSQL 是一种专为云环境设计的高性能、高可用性的分布式数据库服务,它基于 PostgreSQL 引擎,但引入了多种优化策略以解决传统数据库在云上面临的挑战。以下是对 CynosDB for PostgreSQL 一主多读架构的详细说明:
1. **资源利用率低**:传统数据库往往难以充分利用硬件资源,而 CynosDB 通过计算存储分离的设计,实现了计算资源的弹性调度,可以根据业务需求动态调整资源,从而提高资源利用率。
2. **扩展能力不足**:CynosDB 采用共享分布式存储的方式,允许数据库横向扩展,轻松应对高并发读写场景。通过增加存储节点,系统能够支持更大的数据量和更高的并发读写能力。
3. **资源规划难**:云上的资源规划问题在 CynosDB 中得以解决,因为它支持按需付费和灵活扩展,避免了预先规划大量硬件资源的需求。
4. **备份难**:CynosDB 提供后台持续的日志备份,确保数据安全的同时简化了备份流程。同时,通过日志下沉和异步回放技术,减少了网络 I/O 开销,提高了备份效率。
5. **CynosDB 架构**:CynosDB for PostgreSQL 的架构包含一个主实例和多个读实例。主实例负责数据的写入,而读实例用于提供读服务。数据存储在 CynosStore 存储节点上,客户端通过 CynosStore Client 访问数据。
6. **关键设计**:
- **日志下沉**:将日志数据独立于计算节点,降低了网络 I/O,提升了写入性能。
- **日志异步回放**:日志不是立即回放到所有副本,而是先存入日志缓冲区,然后异步地发送和应用,加快了主实例的处理速度。
- **多版本读(同步)**:利用多版本并发控制(MVCC),为读操作提供一致性视图,支持并行读取不同版本的数据。
- **后台持续日志备份**:保证数据安全,便于恢复。
7. **日志管理**:CynosDB 使用 VDL(Volume Durable LSN)和 CPL(Consistency Point LSN)来跟踪日志状态,确保数据的一致性和可恢复性。日志回收机制保证了存储空间的有效利用。
8. **一主多读架构**:传统的 PostgreSQL 主备模式在扩展读能力和可用性方面存在局限,如需要拷贝数据、恢复慢等。CynosDB 的一主多读架构解决了这些问题,读副本不存储数据,而是并行恢复日志,不写磁盘,提升了读性能和主备切换速度。
9. **CynosStore**:作为核心组件,CynosStore 负责存储管理,包括日志管理、连接管理和数据缓冲。它简化了数据库引擎与存储层的接口,使得数据库无需关心具体的日志管理和合并细节。
10. **Block-Journal HashTable**:CynosDB 使用 Block-Journal HTAB 来加速日志合并,提高读取效率。对于不在内存中的页面,可以直接跳过日志合并,进一步提升性能。
11. **高可用性**:通过日志并行恢复、多读副本和快速主备切换,CynosDB 提供了高可用性保障,确保在故障发生时能够迅速恢复服务。
CynosDB for PostgreSQL 通过创新的架构设计,有效解决了云环境中传统数据库的诸多痛点,提高了资源利用率、扩展能力和数据安全性,同时也优化了读写性能,是云环境下的理想数据库解决方案。