一文详解OceanBase社区版生态工具

在OceanBase生态大家庭中,除了OceanBase数据库内核部分,还有很多功能强大的周边工具,这些工具实现了不同的功能,满足了客户多样化的需求。本文将介绍OCP、ODP两种生态工具,帮助大家对OceanBase生态有更全面的了解。

●面向运维人员的工具OCP(OceanBaseCloudPlatform):白屏化管理和运维OceanBase数据库,让运维管控更加简单

●数据访问链路工具ODP(OceanBaseDatabaseProxy):让访问分布式数据库像访问单机数据库一样简单

一、ODP介绍

ODP简介

ODP是OceanBase的代理服务器,对外提供统一的访问入口:

●ODP完全兼容MySQL协议,用户访问ODP的方式与访问MySQL保持一致,ODP透明转发来自客户端的SQL至OceanBase。用户无需修改现有的数据库访问代码,即可正常访问数据库。

●兼容MySQL的各种语言客户端,包括Java/C++/Python/Go/Rust等。

●ODP无状态、轻量,CPU最低需要1c,内存启动约百M,可以在任意linux机器上部署。

通过使用ODP,用户可以访问OceanBase不同集群下的不同租户,简单方便。

特性介绍

除了作为访问链路的入口,ODP还具有如下核心能力:

●高性能转发:ODP完整兼容MySQL协议,采用多线程异步框架和透明流式转发的设计,既保证了数据的高性能转发,也确保了自身对机器资源的最小消耗。

●最佳路由:ODP会充分考虑用户请求涉及的副本位置、用户配置的读写分离路由策略、OceanBase多地部署的最优链路,以及OceanBase各机器的状态及负载情况。ODP将用户的请求路由到最佳的OBServer,最大程度保证了OceanBase整体的高性能运转。

●连接管理:针对一个客户端的物理连接,ODP维持自身到后端多个OBServer的连接,采用基于版本号的增量同步方案维持了每个OBServer连接的会话状态,以此保证了客户端高效访问各个OBServer。

●专有协议:ODP与OBServer默认采用OceanBase专有协议,如增加报文的CRC校验保证与OBServer链路的正确性,增强传输协议以支持Oracle兼容性的数据类型和交互模型。

●安全可信:ODP支持使用SSL访问数据,并和MySQL协议做了兼容,以满足客户的安全需求。

●易运维:ODP本身无状态,不仅支持无限水平扩展,还支持同时访问多个OceanBase集群。ODP可以通过丰富的内部命令实现对自身状态的实时监控,以此实现极大的运维便利性。

我们以下图为例说明ODP的特性:

图中APP是我们的业务程序,APP前面有三台OBProxy(ODP的进程名叫做OBProxy)。在实际部署中,OBProxy和APP之间一般会有一个负载均衡如F5。F5将请求分散到多台OBProxy上面,而OBProxy后面就是OBServer,图中有6台OBServer。使用ODP好处如下:

连接管理:OBServer集群规模庞大,机器、软件出现问题或者本身运维机器上线、下线概率较大,如果直连OBServer,碰到上面情况客户端就会发生断连。ODP屏蔽了OBServer本身分布式的复杂性,客户连接ODP,ODP可以在保证连接稳定的情况下,自身对OBServer的复杂状态进行处理。

数据路由:ODP知道OBServer中数据分布信息,可以将用户SQL高效转发到数据所在机器,使执行更加地高效。如表t1数据在图中P1内,表t2数据在图中P2内,条t3数据在图中P3内,红色表示主副本,蓝色表示备副本,对于insertintot1语句,ODP可以将SQL转发到IDC2中含有P1主副本的机器上。updatet2语句保证了ODP可以将SQL转发到IDC1中含有P2主副本的机器上。

想get以上好处?快点击视频,掌握如何使用OBD快速部署ODP。

02:39

设计实现

ODP主要业务架构如下图:

ODP的异步框架采用了多线程Epoll+非阻塞的模式,异步转发框架非常高效。单独测试异步框架和Nginx对比,ODP转发性能和Nginx非常接近。在高效转发基础上,ODP实现了MySQL通信协议,进行了生态兼容,使MySQL客户端可以无成本使用,并且ODP还可以解决通信过程中和多台OBServer的状态同步问题。此外,ODP还实现了连接管理,能有效处理和OBServer之间的各种网络情况,屏蔽OBServer异常,保证Client和ODP之间连接的稳定。除了这些,ODP还能有效处理路由问题,确保SQL执行效率最佳。

接下来,我们以路由为例说明ODP核心功能的实现逻辑。下图展示了路由的核心模块,主要包含4个步骤:

1.解析SQL:ODP实现了Parser技术,可以从SQL中获取表名、Hint、分区键等关键路由信息

2.路由规则:获取完SQL信息后,ODP需要确定路由规则,以实现丰富路由策略,从而应对不同场景挑战

3.路由表:根据规则,ODP会查找路由表获取满足规则的机器列表,路由表从OBServer拉取,通过缓存形式保存在内存中

4.从机器列表中ODP会选择一个OBServer,并做容灾检查。检查内容包括Server是否宕机、是否发生过不可用情况等,通过检查才会将请求发往该机器

上面每一部分都有很多细节,ODP本身也经过大量场景打磨,确保其在各种场景中广泛使用。

小结

ODP是访问OceanBase数据库的重要工具,在蚂蚁集团内部、私有云场景、公有云场景都有广泛使用,上面介绍了服务OceanBase的内核能力。除了这些,ODP还具有一些中间件产品的特性,如Sharding、连接池、安全、限流熔断、全链路诊断等。目前,ODP不断打磨产品的易用性,满足客户需求,让大家使用OceanBase更加方便。

二、OCP介绍

何为OCP

对于数据库系统来说,想要提升用户的使用效率,管控平台的使用必不可少。OceanBase数据库作为一个金融级别的分布式数据库来说,更是如此。OCP是针对OceanBase设计开发的一款数据库管控平台,能够提供白屏化的OceanBase运维监控能力,无论是让新手用户快速上手使用OceanBase,还是在生产环境,作为DBA日常的运维工具都非常合适。OCP降低了OceanBase运维的复杂性,能够将OceanBase的运行状态直观地展示出来,使OceanBase不仅兼具高性能和高可用,同时也能做到可运维和可监控。

为什么要使用OCP

1.降低运维OceanBase的复杂性

相比传统数据库,OceanBase分布式的架构设计带来了更好的容灾能力和近乎无限的扩展能力,但是整个系统也更加复杂:

新用户想要体验OceanBase常常卡在了如何将OceanBase运行起来的第一步;

在生产系统中,想要运维好OceanBase也不是一件容易的事情。

OCP提供了OceanBase的运维管控能力,从OceanBase集群的创建到日常使用运维到最终下线,全部都可以通过OCP在Web端完成。

场景1:我是新手用户,如何快速创建一个OceanBase集群进行体验?

在OCP中,将主机资源添加进去,按照页面提示,发起创建集群的任务,任务完成后,集群就建好了,全程只需要Web页面上填写一些信息。

场景2:在大规模生产环境,主机故障经常发生,如何快速进行恢复?

OceanBase提供了不同级别的容灾能力,都依赖多数派予以实现,对于发生少数派的故障可以容忍,但是一定要及时处理,避免其发展成多数派故障,影响可用性。一般处理方式是直接将故障主机进行替换。OCP提供了一键替换故障主机的能力,选择要替换的主机,发起任务即可。

2.作为诊断OceanBase的利器

好的系统不仅要好用,可监控也是一项重要的能力,OceanBase提供了各种视图,记录自身的运行状态。要通过这些视图来排查问题,需要对OceanBase足够了解,而且有些视图只能记录当前的状态值,无法看到一段时间的趋势。OCP收集了OceanBase主要的监控指标,并且进行了整理,支持实时和历史趋势的查询,能够以不同的逻辑和时间维度来分析问题。

问题1:OCP的监控和OBAgent有什么区别,应该怎么选

OCP是一个全功能的平台,包含了监控数据的采集、计算和展示,OBAgent仅做采集,需要配合Prometheus和Grafana来使用。

OCP的指标经过筛选,页面也是按照OceanBase的资源进行设计,而OBAgent的配置更加灵活,采集计算的逻辑以及Grafana的展示页面都可以自己配置,每部分更专注自身的逻辑。

问题2:OCP的监控数据如何与其他系统集成

OCP采集监控数据是通过Exporter的形式进行的采集,可以和Prometheus进行集成。OCP提供了OpenAPI进行监控数据的查询,可以直接查询到计算好的监控数据。

3.为其他组件提供配置服务

OCP作为OceanBase生态中的一个重要成员,除了具有OceanBase的运维监控功能之外,也为其他组件提供了OceanBase的原数据查询功能,OCP中记录了OceanBase的Rootservice地址信息,并保证了同步,可以为其他组件提供连接OceanBase的方式。

OCP系统架构简介

1.OCP模块简介

OCP最重要的模块包括以下三个部分。

●OCP管理服务

一个由java实现的服务,实现了管控OceanBase的主要逻辑,提供


转载请注明:http://www.aierlanlan.com/tzrz/3555.html