本文主要介绍云数据库 MySQL 数据库代理服务的自动读写分离、功能优势、读写分离路由规则。
目前大量现网用户业务场景中存在读多写少、业务负载无法预测等场景,但有大量读请求的应用场景下,单个实例可能无法承受读取压力,甚至对业务产生影响。为了实现读取能力的弹性扩展,分担数据库压力,可以创建一个或多个只读实例,利用只读实例满足大量的数据库读取需求。但此类解决方案需要业务侧支持读写分离改造,其代码的健壮性决定了业务读写分离的质量,对客户的技术要求较高,而且灵活性和可扩展性较差。
故创建只读实例后,可以通过购买数据库代理配置访问地址策略,在应用程序中配置数据库代理地址,就可以使写请求自动转发到主实例,读请求自动转发到各个只读实例。除此之外也能为其他业务痛点提供天然的解决方案,具体如下:
负载无法预测或波动不规律/负载“洪峰”现象明显的场景
在互联网业务场景中,业务负载和访问压力往往是不可预估、不平稳的,会出现频繁的波动和“洪峰”。如果业务侧大量使用短连接访问数据库,那么在这些场景中很容易产生大量的新建连接,即数据库与应用程序间的连接数容易随着业务访问压力的频繁变动而波动,并且这种场景往往是很难提前预测的。
数据库专属代理的连接管理,使客户可以通过有效重用数据库连接来适当扩展处理不可预测其工作负载的应用程序。首先,使多个应用程序连接可以共享数据库连接,以有效利用数据库资源。其次,允许客户通过调节打开的数据库连接数来保持可预测的数据库性能。最后,可删除无法使用的应用程序请求,以保留应用程序的整体性能和可用性。
应用程序与数据库频繁建立和断开连接的场景
基于无服务器、PHP 或 Ruby on Rails 等技术构建的应用程序,可能会频繁打开和关闭数据库连接来满足应用程序请求。
数据库专属代理可以帮助客户维护数据库连接池,以避免对数据库计算和用于建立新连接的内存造成不必要的压力。
数据库访问连接长时间处于空闲状态并未释放的场景
SaaS 或电子商务行业中的传统应用程序可能会使数据库连接保持空闲状态,以最大程度减少客户重新参与的响应时间。客户可以使用数据库专属代理来保留空闲连接,仅根据需要建立数据库连接,而不是为支持大多数空闲连接过度调大阈值或提供更高配的数据库。
提高数据库 PaaS 服务故障转移场景下的平滑和稳定
使用数据库专属代理,用户可以构建可透明容忍数据库故障转移(主动/被动)的应用程序,而无需编写复杂的故障处理代码。数据库专属代理自动将读流量路由到新的数据库实例,同时保留应用程序连接。
本页内容是否解决了您的问题?