OBProxy作为OceanBase分布式关系数据库专用反向代理服务器, 为前端用户请求提供了可高性能高准确率的路由转发服务, 为后端Server服务提供了高可用易扩展的容灾保障. 相对于其他数据库的代理服务器, OBProxy根据实际单机环境和OceanBase多集群部署的特点, 采用异步框架和流式转发的设计, 采用FastParse和LockFree的内存方案, 具备有限资源占用下百万QPS的能力和海量部署下丰富便捷的运维支持能力. 通过独立部署的OBProxy, 用户可以无缝地从单机的MySQL迁移到分布式的Oceanbase上.经过蚂蚁金服内外部业务的多年打磨,目前已经伴随着OceanBase稳定支撑阿里/蚂蚁内部上百个关键业务以及浙商银行、南京银行、PayTM等多个外部金融客户。
路由
OceanBase作为关系型数据库, 本身完全兼容MySQL协议. 但与传统单机数据库不同, oceanBase是分布式数据库, 每个表甚至每个表的不同分区都可能存放在不同的机器上, 而想要对表进行读写, 必须先要定位到数据所属的表或是分区的位置. 尽管任何一台OBServer均能路由转发和本地执行的功能, 但实际中这样做将严重影响性能和整体吞吐量.OBProxy通过FastParse获取用户请求的表信息, 通过查表找到该表具体的路由表地址, 通过触发更新+定期淘汰结合方式保证缓存路由表最新状态, 最终实现对用户请求的高准确率转发. OBProxy通过异步事件框架+数据透明流式转发+LockFree的内存管理, 实现高性能的路由.
黑名单
OceanBase是建立在廉价服务器上基于LSM-tree设计的的分布式关系数据库, 在实际运行过程中任何一台Server均可能存在轮转合并/切主/宕机/上线等状态变化, 这些变化将影响用户请求的准确路由和Server的稳定运行. OBProxy通过黑名单机制为用户屏蔽OceanBase的这些内部状态.OBProxy通过触发更新+定期更新的方式获取OceanBase内部Server的最新状态, 通过黑名单/灰名单/白名单的划分对目标流量进行不同程度的限制, 通过实时可调整的黑名单配置参数实现对OceanBase容灾的自主可控.
多集群
OceanBase支持多集群部署, 不同集群的OceanBase彼此物理和逻辑隔离.不借助第三方服务, 单OBProxy能对单集群提供完整服务. 借助于OCP提供的Config Server服务, OBProxy可以支持多集群OceanBase的同时服务, 支持多集群的任意变更.
运维
OceanBase作为新型的分布式关系数据, 其运维手段与传统数据库大不相同. OBProxy作为其代理服务器, 通常大量部署在客户端机器上, 因此其运维方式更加强调远程方式.OBProxy通过丰富的配置项提供了对自身运行参数的详尽管控, 通过强大的内部SQL命令实现对自身状态的实时详细监控和服务的重启升级, 通过预制的内部表实现对OBProxy的全链路的监控和升级监控.