本文介绍RDS MySQL的数据库独享代理服务。

RDS数据库代理是位于数据库服务端和应用服务端之间的网络代理服务,用于代理应用服务端访问数据库时的所有请求,具有高可用、高性能、可运维、简单易用等特点,同时提供自动读写分离、事务拆分、连接池等高级功能。

适用场景

  • 使用多个只读实例,在应用程序内实现读写分离,扩容不灵活,维护成本高。
  • 事务内请求过多,导致主实例负载过高。
  • 连接数过多导致实例负载过高。
  • 短连接为主的业务。

独享代理和共享代理

RDS MySQL提供两种数据库代理服务的部署模式:独享代理和共享代理。

共享代理也叫多租户代理,属于多用户共享代理资源,争抢资源会导致代理服务不稳定,同时不支持独享代理的高级特性,如连接池、SSL加密、事务拆分等;共享代理中的读写分离地址类型依赖主实例的网络地址类型,当您切换了主实例的网络类型,读写分离地址的网络类型也会被切换。

独享代理也叫单租户代理,使用独立代理计算资源为当前实例提供代理服务,相比共享代理有如下优势:

  • 更好的稳定性。
  • 更好的隔离性。
  • 更好的性能,一般情况下每个代理每秒可以处理2万请求,每个RDS实例最多可以创建60个代理。
  • 扩容方便快捷,您可以快速调整代理数量
  • 代理性能可监控,您可以根据监控数据及业务规划调整代理个数。
  • 切换主实例的网络类型不会改变读写分离地址的网络类型。
  • 提供独享代理连接地址,应用使用该地址后不用反复变更应用内的地址,减少维护成本。只要不释放代理,代理连接地址可以永远使用。例如您在大促时期开启读写分离,大促结束后释放只读实例,关闭读写分离,也不用变更应用内的连接地址。
  • 支持自动读写分离,减少维护成本。例如,有只读实例时,一般需要在应用程序中添加每个主实例和只读实例的地址,手动实现读写分离。而开通独享代理后,应用程序中只需配置一个代理连接地址,该地址会自动实现读写分离,将读请求发送至只读实例,将写请求发送至主实例。即使增加或删除只读实例,也无需调整应用程序的设置。
  • 支持更多高级功能,例如连接池事务拆分SSL加密等。
说明 由于共享代理的局限性,新实例目前不支持共享代理。RDS MySQL仅为已开通共享代理的存量实例继续提供服务。已开启共享代理的实例建议升级为独享代理,享受更多高级特性。具体操作,请参见共享代理升级为独享代理