作者:易鸿伟 闫建良 王光树
在 TPC-C 标准定义中,测试系统分为 RTE(Remote Terminal Emulator)和 SUT 两部分。在实际的 TPC-C 测试流程中,不只是对 DB 端能力的考验,对链路 中的所有组件都存在极大的资源消耗和压力。以这次 6088 万 tpmC 测试结果看,我 们一共在 64 台 64C128G 的云服务器上运行了 960 个 RTE 客户端,来模拟总计 47942400 个用户 Terminal,后还需要基于这么多 RTE 统计结果进行一致性 和持久化审计验证。而 SUT 又拆分为三部分:WAS(Web Application Server)、 OceanBase Proxy(OBProxy) 和 OceanBase Server(OBServer)。RTE 的 请 求 到 WAS,然后 WAS 通过 OceanBase 客户端来访问 OBProxy,OBProxy 会将请求 转发到后端 OceanBase 集群中佳的 ObServer 去执行请求。WAS 和 OBProxy 是 RTE 和 OBServer 之间的桥梁,这个桥梁对于承载压力起着至关重要的作用。本 次 TPC-C 基准测试中,OceanBase 访问链路上主要涉及两个组件:
- ODBC 接口及驱动:TPC-C 测试中,WAS 请求 OceanBase 采用了 ODBC 接口。ODBC(Open Database Connectivity) 是 Microsoft 提出的 数据访问规范,ODBC 在大多数 DBMS 上都可以使用,OceanBase 也提供 了 ODBC 接口访问能力。感兴趣的用户可以查阅 ODBC API 说明 快速上手 使用,使用 ODBC 的用户可以直接使用该接口无缝迁移的访问 OceanBase。 ODBC 接口及驱动集成到 WAS 内部,作为请求 OceanBase 的客户端。
- OBProxy 代理:OceanBase 实现了 OBProxy 代理服务器来解决数据库链 路上的路由及容灾问题。OBProxy 会感知数据副本地址和分区规则,不参 与 SQL 引擎参与执行计划的生成调度,主要负责 SQL 路由和转发。这种架 构设计中,OBProxy 承担了基础的路由和容灾功能,而数据库的功能全部交
由 OBServer 实现。这样更加简单明确的分工可以各组件性能做的更加, OBProxy 也做到了完全无状态,只需要添加节点即可实现代理能力的水平扩 容,OceanBase 整体也能做到数据库的高性能。