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

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: (文末有彩蛋) # 简介 RDS为用户提供高透明,高可用,高性能,高灵活的读写分离服务。在最近的版本我们基于短连接的用户进行了优化,使得短连接的用户负载均衡更加完善合理。RDS读写分离有如下特性: * 易用/透明性 用户只需要在原来的只读实例的主实例上开通一个读写分离的VIP就可以使用读写分离,而不需要修改任何业务代码。

(文末有彩蛋)

简介

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

  • 易用/透明性

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

  • 高可用

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

  • 高性能

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

  • 高灵活

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

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

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

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

场景应用

随着业务增长,数据越来越大,用户对数据的读取需求也随之越来越多,比如各种AP操作,都需要把数据从数据库中读取出来,同时,随着数据量的增加,读请求的性能消耗也可能随之增加,从而导致影响到用户的写请求,反之亦然,写请求也可能会影响到用户的读请求,使得DB的总体吞吐量下降。为了解决该问题,RDS之前提供了只读实例的方案,用户可以通过开通多个只读实例,将读请求业务直接连接到只读实例上,该方案能够解决上述问题,但引来的问题也很明显,用户的使用成本增大了:需要手动区分读写业务,有多个访问地址维护性差,无法做负载均衡,容易受只读实例的可用性影响等。

RDS云数据库读写分离就是为了解决如上问题而产生的。用户只需要一个请求地址,业务不需要做任何修改,由RDS自带的读写分离中间件服务来完成读写请求的路由及根据不同的只读实例规格进行不同的负载均衡,同时当只读实例出现故障时能够主动摘除,减少对用户的影响。对用户达到一键开通,一个地址,快速使用。

架构简介

Snip20170804_1.png

图1 用户链路视图

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

  • 内部框架

Snip20170804_2.png

图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暂时不支持读写分离

总结

RDS云数据库自带的读写分离服务能够有效的解决用户数据量大读请求多,带来的DB吞吐量下降等问题;一键开通、一个地址、快速使用极大的减少了用户的使用成本;配置灵活,自动检测消除了单点故障提高了系统的可用性。

这里是彩蛋

感谢各位小伙伴的耐心阅读,现在参加MySQL读写分离微博转发活动还有机会获得天猫精灵以及阿里云T恤。

点击云栖社区官方微博活动链接:https://weibo.com/1939498534/FymI1zPYp?type=comment

友情链接:

读写分离help

开通介绍

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
4月前
|
存储 关系型数据库 MySQL
MySQL 读写分离原理
MySQL 读写分离原理
64 0
MySQL 读写分离原理
|
4月前
|
SQL 关系型数据库 MySQL
小白带你学习linux的mysql服务(主从mysql服务和读写分离三十一)
小白带你学习linux的mysql服务(主从mysql服务和读写分离三十一)
68 0
|
3月前
|
SQL 关系型数据库 MySQL
Mycat【Mycat部署安装(核心配置及目录结构、安装以及管理命令详解)Mycat高级特性(读写分离概述、搭建读写分离、MySQL双主双从原理)】(三)-全面详解(学习总结---从入门到深化)
Mycat【Mycat部署安装(核心配置及目录结构、安装以及管理命令详解)Mycat高级特性(读写分离概述、搭建读写分离、MySQL双主双从原理)】(三)-全面详解(学习总结---从入门到深化)
78 0
|
7月前
|
SQL 存储 关系型数据库
MySQL主从复制、读写分离
MySQL主从复制、读写分离
132 0
|
6月前
|
关系型数据库 MySQL 中间件
企业实战(10)基于Maxscale中间件实现Mysql读写分离实战
企业实战(10)基于Maxscale中间件实现Mysql读写分离实战
|
6月前
|
存储 SQL 关系型数据库
数据库魔法师:使用ShardingSphere实现MySQL读写分离与分片指南跟着爆叔的节奏稳了!
数据库魔法师:使用ShardingSphere实现MySQL读写分离与分片指南跟着爆叔的节奏稳了!
64 0
|
7月前
|
SQL 关系型数据库 MySQL
MySQL搭建主从备份读写分离(MySQL5.7案例)
MySQL搭建主从备份读写分离(MySQL5.7案例)
116 0
|
1天前
|
负载均衡 关系型数据库 MySQL
MySQL-Proxy实现MySQL读写分离提高并发负载
MySQL-Proxy实现MySQL读写分离提高并发负载
|
4月前
|
Java 关系型数据库 MySQL
②⑩② 【读写分离】Sharding - JDBC 实现 MySQL读写分离[SpringBoot框架]
②⑩② 【读写分离】Sharding - JDBC 实现 MySQL读写分离[SpringBoot框架]
42 0
|
1月前
|
关系型数据库 MySQL 数据库
使用 Docker 搭建一个“一主一从”的 MySQL 读写分离集群(超详细步骤
使用 Docker 搭建一个“一主一从”的 MySQL 读写分离集群(超详细步骤
64 0