读写分离
读写分离是UDDB除了大表拆分之外的另一核心功能,可有效解决读性能问题。 该功能推出后广受用户欢迎,为此我们将其独立为一款专门的读写分离中间件,内置在UDB产品中,供用户免费使用(在UDB控制台即可开启此读写分离中间件)。
如果用户的单机UDB实例有读性能问题但无容量问题,我们建议采用UDB读写分离中间件即可。UDDB的定位更多是做数据拆分,解决容量和写性能问题。
在数据拆分场景下, UDDB能够对每一个数据分片再做读写分离。 用户可以在创建UDDB时, 为存储节点增加若干只读实例,此后发往存储节点的读请求,将按比例路由到只读实例,来分担存储节点的压力。同时, 读请求的路由比例可以在控制台进行设置。设置入口如下:
提供四种配置: 1. 主节点: 读请求只下发给存储节点, 只读实例不下发任何请求; 2. 节点均衡: 读请求均匀分发给存储节点和只读实例; 3. 只读节点均衡: 读请求均匀分发给所有只读实例,但不分发给存储节点; 4. 自定义: 客户自定义读请求的分发比例。
UDDB还支持SQL前面加hint的方式,将某条SQL指定路由到存储节点或者只读实例:
/*force_slave*/select * from t where id=23;
force_slave将该Select语句指定路由到只读实例,如果无只读实例,则路由到存储节点。
/*force_master*/select * from t where id=23;
force_master将该Select语句指定路由到存储节点。