UDDB的解决方案
UDDB来源于数据库中间件+MySQL的方案, 经过数年的发展,已经成为一款真正的分布式数据库。UDDB 提供了如同单机MySQL一样的访问接口和管理方式(支持DML、DDL、复杂查询、分布式事务、用户权限管理、自增ID、系统表查询等), 支持自动化水平拆分(只需要在建表语句中指定拆分键和分片数量),屏蔽了系统扩缩容的细节,让复杂的节点增删、数据迁移等操作对用户透明。同时提供丰富的监控和告警, 以及自动和手动备份功能,做到系统运行状态尽在掌握,具备数据库全生命周期运维管控能力。
UDDB一开始针对OLTP场景推出, 首先解决用户的生产系统在单机数据库上遇到的容量和性能问题; 在解决容量和性能问题后, 用户又进一步有了数据分析的需求,希望能够利用同一套UDDB,就地实现对业务数据的实时分析。为此,UDDB推出了分析节点来满足用户的需求。UDDB的整体架构如下:
1.路由节点:
路由节点承载生产系统发起的OLTP SQL请求,包括Insert/Update/Delete/Select,以及DDL和事务SQL。 路由节点识别SQL语义并将SQL路由到正确的存储节点。存储节点将结果返回后,路由节点或者直接将结果返回给生产系统,或者做一定的处理再返回。比如,对于某些跨多个数据分片的查询,需要对结果进行聚合再返回;对于分布式事务,需要完成完整的二阶段提交再返回到生产系统。
2.存储节点:
一个存储节点就是一个MySQL实例,负责数据的持久化存储,并提供对数据的读写能力。UDDB存储节点基于UDB产品构建,一个UDDB存储节点即为一个UDB实例。目前提供高可用UDB和普通UDB供用户选择。
3.只读实例
只读实例是存储节点的只读从节点,只提供读操作。存储节点通过异步复制向只读实例同步数据。UDDB存储节点的只读实例也是基于UDB产品构建,一个UDDB只读实例即为一个UDB从库实例。
4.分析节点:
分析节点承载分析系统/管理工具发起的OLAP SQL请求, 比如avg/sum/count、group by、order by等。分析节点只接收读请求(Select),不接收写请求(Insert/Update/Delete/DDL),收到写请求会直接报错。 分析节点只连接只读实例,不连接存储节点,因此分析节点的SQL只会下推到只读实例,如此可避免复杂的分析SQL影响存储节点的性能,从而保证OLTP生产系统的正常运行不受影响。
5.ULB:
不管是路由节点还是分析节点,都是多节点多活部署。在多个路由节点/分析节点之前,增加了一个ULB,来做Ip收敛和负载均衡,从而对用户程序只暴露一个路由Ip和一个分析Ip。