背景
OceanBase数据库是分布式数据库,每个表甚至每个表的不同分区都可能存放在不同的机器上。想要对表进行读写,必须先要定位到数据所属的表或是分区的主副本位置,然后才能执行相应的SQL DML语句,这在应用层面而言是几乎不可能做到的
OBProxy作为OceanBase数据库专用的反向代理软件,其核 心功能就是路由以将客户端发起的数据访问请求转发到正确的OBServer上
客户端通过OBProxy访问OceanBase数据库的数据链路如 图所示,用户通过任意Client驱动发出请求,请求通过负载 均衡组件访问到任意一台无状态的 OBProxy上,然后OBProxy 再将用户请求转发到后端 OceanBase 集群中最佳的 OBServer 上去执行
OBProxy核心功能(路由)
OBProxy作为OceanBase的高性能反向代理服务器,其核心功能就是路由转发
OBProxy路由的目标是将具体SQL转发到最恰当的Server上执行,路由的核心过程包括:
简单的SQL Parser,LDC路由,读写分离,备优先读,黑名单机制,下图为OBproxy的路由逻辑
路由功能举例\
OBProxy核心功能(连接管理)
在observer宕机/升级/重启时,客户端与OBProxy的连接不会断开,OBProx可以迅速切换到正常的server上,对应用透明
OBProxy支持用户通过同一个OBProxy访问多个OceanBase集群
Server session对于每个client session独占
同一个client session对应server session状态保持相同(session变量同步)
OBProxy核心功能(监控&&运维)
周期性汇报统计项到OCP,实现了语句级别,事务级别,session级别,Obproxy级别的各种统计
Xflush日志监控(包括慢查询监控、error包监控等)
SQL Audit功能
实现了大量内部命令来实现远程监控,查询和运维