# 功能特性

## 业务透明访问

在原有的主从节点模式中，主UDB节点和每个从节点有一个单独的连接地址，用户需要在业务程序中，单独对每个地址自行进行配置管理，才能实现将写请求发往主UDB节点，
而将读请求发往从节点。

UDB的数据库代理中间件，将多个主从节点整合为一个集群，
通过额外的提供一个代理中间件地址，即可对所属主从节点进行读写操作，读写语句的转发逻辑完全对业务透明，使业务系统无需改造便能轻松获得读写分离的优势。

## 灵活动态扩缩容

相对于业内开源读写分离中间件的单节点部署方式， UDB读写分离Proxy可以动态扩缩容，可以设置不同数量的节点或升降级机器配置来满足业务需要。
同时利用分布式负载均衡产品ULB来做负载均衡和容灾，使整个系统更加健壮稳定。

## 多种读权重分配策略

在控制台上一键即可开启/释放读写分离功能， 提供四种读权重分配策略， 供客户根据业务需要灵活选择和配置。这四种模式为：

1\. 主从库均衡： 读请求均匀分发给主从库；

2\. 主库为主： 读请求只下发给主库， 从库不下发任何请求；

3\. 从库均衡： 读请求均匀分发给所有从库，但不分发给主库；

4\. 自定义： 客户自定义读请求的分发比例。

## SQL限流

使用数据库代理后，可以开启SQL限流功能，可以根据业务需要在页面灵活配置SQL限流。
通过SQL限流可以控制耗时SQL的请求数量，保障数据库服务不会由于过多耗时SQL而降低性能。

## 自动容错

数据库代理会对所属主从复制集群的所有节点，进行健康检查。 当发现主节点不可用时，
将拒绝发往主节点的写入请求以及系统命令等。当发现从节点不可用或者和主节点的数据延迟超过阈值（该阈值可配置）时，将把不可用的从节点剔除出分发目标列表，直到从节点恢复或者数据延迟低于阈值时，才将其重新加入分发目标列表。

## 一个MySQL集群支持创建多个代理

为了确保各个业务之间不会因为某一方业务占用大量资源而影响其他业务的正常运行，在同一个MySQL集群中创建多个代理来实现业务之间的隔离和管理。通过这种方式，我们可以有效地优化系统的性能和可伸缩性，并确保各个业务在资源利用方面的公平性。  

同时多个代理的使用还可以提高系统的可伸缩性。当业务需求增加时，我们可以简单地添加新的代理来处理额外的负载，而无需对整个集群进行扩展。这种灵活性和可扩展性可以有效地满足不同业务的需求，并确保系统的稳定性和可靠性。
