RDS读写分离,海量数据一键搞定

Posted 52AI人工智能

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RDS读写分离,海量数据一键搞定相关的知识,希望对你有一定的参考价值。



简介

RDS为用户提供高透明,高可用,高性能,高灵活的读写分离服务。在最近的版本我们基于短连接的用户进行了优化,使得短连接的用户负载均衡更加完善合理。RDS读写分离有如下特性:

  • 易用/透明性

用户只需要在原来的只读实例的主实例上开通一个读写分离的VIP就可以使用读写分离,而不需要修改任何业务代码。对用户的接入成本几乎为0。

  • 高可用

RDS读写分离服务能够主动判断只读库的健康情况(包括节点crash,主备同步异常,延迟较大等),对于不健康的只读库不再进行路由,从而保证系统的整体可用性。同时在故障节点恢复后重新按权重进行负载均衡。

  • 高性能

RDS的读写分离服务,由RDS的中间件服务提供路由及负载均衡,对于读多写少的业务能够充分利用只读库的资源,使得整体业务性能得到显著的提高。

  • 高灵活

RDS的读写分离服务为用户提供按权重的请求及连接双重负载均衡模式,用户可以根据自己只读库的硬件资源情况,对每个只读库设置相应的读权重,同时也支持把主库放到读列表里,分担部分读请求。

另外,为用户提供读库同步延迟的可用性配置,当用户对数据的实时性要求较高的话,用户可以通过调小该值来保证只有在只读库与主库的同步延迟小于该值时,读写分离服务才会把读请求路由到该只读库。

扩容更灵活,用户可以随着业务的增长适当的扩容只读库,而这个也只需要在控制台上下发一个扩容请求就可以,无需业务上做任务调整。

提供特定的hit语法:如/FORCE_MASTER/ /FORCE_SLAVE/,方便用户指定SQL到master或slave上执行;以及/PROXY_INTERNAL/show last route查看sql路由情况等。

场景应用

架构简介



图1 用户链路视图

对于用户来说看到的还是一个普通的mysql连接,只是这个连接先直接访问RDS的中间件服务,再由中间件服务进行转发,对用户来说是完全透明的。

  • 内部框架


RDS读写分离,海量数据一键搞定


图2 RDS中间件内部组件

RDS中间件服务的读写分离功能,主要由图2所示的模块组成。

  • RW SESSION:每个用户连接对应的RDS中间件服务里的一个rw session,其中主要维护着一个与主库的socket以及与只读库的ro_session,同时负责session状态的保持及恢复

  • RO SESSION:负责与只读库的请求处理

  • ROUTE STRATEGT:该模块也是读写分离的核心模块,负责sql的路由决策

  • LB:load balance,负责读请求的负载均衡,使用常用的weighted round robin算法

  • QOS:负责只读库的健康检查

PS:当前PGSQL暂时不支持读写分离

总结

这里是彩蛋

12月11日抽20名亲赠阿里云T恤!及抽8名赠FIFA世俱杯第二场门票

https://weibo.com/1939498534/Fy4q1DCjz?type=repost#_rnd1512375233310




以上是关于RDS读写分离,海量数据一键搞定的主要内容,如果未能解决你的问题,请参考以下文章

大型网站架构系列:电商网站架构案例

大型网站架构系列:电商网站架构案例

电商网站架构案例

MongoDB分片存储集群支撑海量数据

海量数据mysql优化步骤

阿里云RDS读写分离数据查询延迟解决