OceanBase 数据库作为一款分布式数据库,业务 APP 连接数据库时和传统数据库是否有不同?

OceanBase 数据库作为分布式数据库,副本可能分布在不同的机器上,为了尽可能地减少跨机数据访问,我们提供了 OBProxy。OBProxy 作为 OceanBase 分布式关系数据库专用反向代理服务器, 为前端用户请求提供了高性能、高准确率的路由转发服务, 为后端 Server 服务提供了高可用易扩展的容灾保障. 相对于其他数据库的代理服务器, OBProxy 根据实际单机环境和 OceanBase 多集群部署的特点, 采用异步框架和流式转发的设计, 采用 FastParse 和 LockFree 的内存方案, 具备有限资源占用下百万 QPS 的能力和海量部署下丰富便捷的运维支持能力。

请问部署多个obproxy,然后使用LVS统一访问入口, 业务通过lvs连接obproxy,是否可行,需要额外注意什么?

这个是可以的。

obproxy是ob集群的反向访问代理,如果obproxy不可用,ob集群通常也不能访问(直连ob节点那个用法在生产是不推荐的)。所以,通常会部署多个obproxy给业务用。为此在obproxy前端还需要一个负载均衡设计。

在传统企业用户里,这个负载均衡设计推荐用F5设备,F5自身也可以主备有高可用,同时为多个后端obproxy提供一个统一的vip或域名,绑定指定端口上。路由策略可以是优先转发某个obproxy,或者随机转发某个obproxy。

普通的互联网用户没有F5的时候,可以使用 SLB/LVS产品、或者nginix代理功能等来实现这个obproxy的随机路由。

需要注意的是如果跨机房了,要看这个lvs能否为跨机房的obproxy提供vip。如果不能,则每个机房启动一个lvs vip为本机房的obproxy提供路由功能。

此外,lvs的网络空闲超时时间要大于数据库连接的空闲超时时间。30分钟是常用设置。应用的连接池需要设置keepalive机制(秒级别)。正常情况下,lvs是不会去中断应用的数据库连接的。

前排