我们是阿里云数据库授权代理商,10多阿里云代理经验,现在官网为数据库用户提供破荒,免费开通数据库服务,提供各种数据库迁移服务
读写分离是什么意思?
所谓读写分离其实就是将数据库分为了主从库,一个主库用于写数据,多个从库完成读数据的操作,主从库之间通过某种机制进行数据的同步,是一种常见的数据库架构。
读写分离主要是用来解决什么问题的?
大多的数据库应用中更多的是读多写少,这时候,数据库的读会首先称为数据库的瓶颈,这时,如果我们希望能够线性的提升数据库的读性能,消除读写锁冲突从而提升数据库的写性能,那么就可以使用读写分离的架构,增加多节点多,解决单节点的瓶颈问题。阿里云POLARDB for MySQL集群自带读写分离功能。应用程序只需连接一个集群地址,写请求会自动发往主节点,读请求会自动根据各节点的负载(当前未完成的请求数)发往主节点或只读节点。
功能优势
1)读同步
在POLARDB的链路中间层进行读写分离时,中间层会追踪(track)各个节点已经应用(apply)的重做日志(redolog)位点,即日志序号(LSN);同时,每次数据更新时将此次更新的位点记录为Session LSN。当POLARDB收到新的请求时,将Session LSN与各个节点的LSN进行比较,仅将请求发往LSN早于Session LSN的节点,从而保证会话的一致性。表面上看该方案可能导致主节点压力大,但是因为POLARDB是物理复制,速度极快,在上述场景中,当更新完成后,返回客户端结果时复制就同步在进行,而当下一个读请求到来时,主节点和
只读节点之间的数据复制极有可能已经完成,然后大多数应用场景都是读多写少,所以经验证在该机制下即保证了会话一致性,也保证了读写分离负载均衡的效果。原生支持读写分离,提升性能如果您在云上通过自己搭建代理层实现读写分离,在数据到达数据库之前需要经历多个组件的语句解析和转发,对响应延迟有较大的影响。而POLARDB读写分离在已有的高安全链路中直接内置,没有任何额外的组件来消耗时间,能够有效降低延迟,提升处理速度。
2)简单的维护方式
在传统模式下,您需要在应用程序中配置主节点和每个只读节点的连接地址,并且对业务逻辑进行拆分,才能实现将写请求发往主节点而将读请求发往各个节点。POLARDB提供集群地址,应用程序连接该地址后即可对主节点和只读节点进行读写操作,读写请求会被自动转发,转发逻辑完全对使用者透明,可降低维护成本。同时,您只需添加只读节点的个数,即可不断扩展系统的处理能力,应用程序无需做任何修改。节点健康检查,提升数据库系统的可用性,读写分离模块自动对集群内的所有节点进行健康检查,当发现某个节点宕机或者延迟超过阈值后,将不再分配读请求给该节点,读写请求在剩余的健康节点间进行分配。以此确保单个只读节点发生故障时,不会影响应用的正常访问。当节点被修复后,POLARDB会自动将该
节点纳回请求分配体系内。
3)读写是免费功能
免费提供读写分离功能,无需支付任何额外费用。