提升易用性,OceanBase生态管控产品的“从小到大”
2022年,OceanBase发布4.0版本“小鱼”,并首次公开提出了单机分布式一体化这一理念,旨在适应大小不同规模的工作负载,全面满足用户数据库“从小到大”全生命周期的需求。当时,我们所说的“从小到大”主要聚焦于数据库的“内功”,即数据库内核技术。然而,一个好的数据库产品,仅有深厚的“内功”是远远不够的,还需要有“外功”支撑,即数据库生态产品体系。
接下来,让我们从管控产品的视角,回顾OceanBase在“外功”方面的成长与进步,看看它是如何助力开发者满足从小到大的多样化需求的。
初学者的上手成本
首先来看初学者需要什么?初学者主要关注两个方面——部署成本和部署难度。
1、部署成本
自2021年OceanBase开源以来,我们一直在做产品小型化的迭代,从64G的配置要求优化到如今的2C6G配置要求,期间我们从未讨论存储,因为相比CPU和内存,58GB的存储太廉价了。
直到我们和来自高校的学生交流时,才发现原来我们忽略了一个非常关键的细节。
通常,还未走出校门的学生使用的电脑是Windows或MacOS,而OceanBase目前只支持lLnux系统。很多同学会选择从云厂商购买Linux服务器。下图是主流厂商满足OceanBase配置要求(2C6G)的最廉价的一套配置。

我们发现无论上图中哪种配置都无法满足最低58GB的配置需求,因此,学生在买机器时就需要额外增加存储成本,更糟糕的是,买完机器后发现50GB难以支撑系统运行,还得再买58GB,最终,购买了108GB,这都是额外成本,对学生来说非常敏感。
2024年,我们把58GB的配置要求优化为20GB配置要求,且其中的16GB是真正数据存储,预留4GB日志存储,大大降低首次启动的存储开销,降低学生的上手门槛。
2、部署难度。
分布式系统部署一直都是“老大难”。2023年我们针对易用性做了很多优化,比如OceanBaseD demo快速体验环境、OceanBaseD WED图形化部署,还推出了all in one一键式安装包。但我们发现,不管使用哪套模式,都会遇到共同的问题,那就是用户需要额外下载一个安装器,这并不符合Linux开发者心目中的安装模式。
什么样的安装模式符合Linux开发者预期?在Centos上使用yum isntall,在Ubuntu上使用apt-get install。而在OceanBase 4.2.1版本开始我们支持原生yum/apt-get install,支持使用 systemctl 管理数据库。
同时,我们还与许多操作操作系统社区紧密结合,例如,实现在龙蜥(OpenAnolis)和欧拉(OpenEuler)社区的制品平台上完成从源码到制品的构建,且制品包被两个社区官方仓库收录。这意味着在OpenAnolis和OpenEuler中安装OceanBase将不再需要添加额外的仓库源,开发者只需使用以下两条指令就能快速启动OceanBase数据库。
yum install oceanbase-ce
systemctl start oceanbase
当然我们不会止步于此,未来我们将推动OceanBase与更多的操作系统社区合作,让开发者可以用最简单直接的方式安装OceanBase。
同样的,我们也在积极推进对Windows和MacOS的编译适配工作。任何曾尝试过大型C++项目跨平台编译的开发者都深知,实现像OceanBase这样大型C++项目的跨平台构建既复杂又具有挑战性。
尽管如此,我们仍旧坚持推进下去。也希望开发者们参与共建,在社区和我们一起共同克服困难。
企业开发者需要什么
当一个开发者进入企业或开始管理自己的项目时,他们面临的数据库管理需求显著提升。这时,他们需要的是一个能够提供全面管理功能的数据库管控台,用以高效、便捷地管理数据库环境。为此,OceanBase社区版提供了两款针对性的产品来满足这类需求:OCP 及其轻量版本OCP-Express。
OCP-Express 设计理念是提供一个轻量级的解决方案,它专注于本地集群的管理。该平台的优势在于功能的聚焦性和简化性,部署时不需要额外的MetaDB成本,非常适合初期阶段或小型项目的需求。通过OCP-Express,开发者可以享受到快速、直接的数据库管理体验,无需承担过多的技术和财务负担。
随着项目规模的扩大和数据管理需求的增长,集群数目也可能随之增加,这种情况下,OCP 成为了更合适的选择。OCP提供了更全面的多集群管理功能,支持规模化的管控操作。这意味着对于那些管理着大规模集群或多项目集群的企业和开发者来说,OCP能够提供更灵活、更强大的数据库管控解决方案。然而,选择OCP的同时也意味着面对更多的部署考虑,包括额外的部署工作及相应的MetaDB成本。
那么,怎么打通从yum/apt-get install到ocp-Express再到ocp的链路呢?这里就需要用到OceanBaseD(OceanBasedeployer)。OceanBaseD是随着OceanBase开源的第一批产品,顾名思义,这是一个专注于部署的软件。但早期开源社区管控的产品不是很成熟,因此我们基于OceanBaseD做了一些轻量的运维功能。当下随着管控生态完善,我们可以使OceanBaseD专注于其本应承担的核心职责——软件包管理和部署。
在OceanBaseD的2.8版本中,我们引入了一项新功能——接管集群。通过一个简单的命令——OceanBased cluster takeover -h host -p password <deploy-name>,开发者可快速将用yum/apt-get install部署的OceanBase集群纳入OceanBaseD的统一管理之下。一旦集群被OceanBaseD接管,便可以在现有基础上增加新的组件。
在OceanBaseD 2.4.0版本新增了组件变更能力,使开发者能在已有的OceanBase集群上加装新的组件,比如 OCP Express。了解OceanBaseD的朋友可能会说,“这个为已有集群安装OCP Express的功能你们一年前就做了,新版上有什么不同吗?”
我们可以看到下图的配置对比。左边是我们旧版本,共51行,其中大量的配置与OceanBase相关。此前由于没办法在已部署的配置上直接追加新组件(如OCP-Express,我们每次添加新组件都需要从头编写一个全新的配置文件,并手动为这些组件添加与其相关组件的配置信息),导致冗长的配置过程,作业繁重且易出错。

现在,请看右边这份新版本的配置,在优雅的区别中,它仅包含18行代码。真正关键的设置只在第17和18行,提供了配置路径和内存规格要求,大部分配置都涉及基础的组件信息和集群拓扑。得益于新版本的功能,我们可以使用depends关键字将OCP-Express与OceanBase集群简洁、有效地关联起来。OCP-Express能够从OceanBase集群中自动获取其需要的设置信息,而OceanBase也能感知到OCP-Express的加入,自动为其创建Meta租户。完成新的配置文件编写后我们只需要一条命令即可完成组件追加——OceanBased cluster component add <deploy-name> -c new_conf.yaml。新版本中的自动化流程,大大简化了整个部署过程,消除了以往繁杂的手动步骤,确保了新增组件的平滑与稳定。
随着业务增长和集群数量的增多,我们需要具有多集群管理能力的OCP。此前,OCP的部署也是一个令人头疼的问题,但随着更新,OCP与OceanBaseD的结合让该问题得到了解决。OceanBaseD现在能够支持通过命令行的方式自动化部署OCP,当然通过之前提到的组件变更功能也同样适用于OCP的部署。但我不推荐大家这么做。虽然OCP可以对自己的MetaDB进行一定的运维管理,但这种管理并非全面。此外,我们不建议拿业务集群来承担OCP的MetaDB。原因在于,业务集群通常需要应对业务带来的压力,一旦业务负载增强,OCP对自身MetaDB的连接可能会受到影响。在业务压力大时,如果不能通过OCP及时对业务集群进行扩容,以缓解负载,就可能陷入一个恶性循环。
为了简化部署过程,推荐大家使用OceanBaseD的Web界面部署的MetaDB和OCP。使用这种方法,MetaDB将由OceanBaseD部署,而OceanBaseD本身就能为该集群提供基础的管理功能,包括但不限于扩容、升级,启停等服务。
OCP部署完成后,我们便可以将现有的OceanBase集群接入到OCP中。OCP自社区版发布起就具备接管OceanBase集群的能力,但过程较为繁琐,需要多达五个步骤——选择连接方法、填写连接信息、添加主机信息、选择主机类型、添加登录证书。为了简化这一流程,OceanBaseD V2.4.0引入了一个新命令 OceanBased cluster export-to-ocp,允许用户一键将OceanBaseD管理的集群导入到OCP中,导入完成后,也便不再需要OCP-Express。这里可以继续使用OceanBaseD的组件管理能力,通过OceanBased cluster component del <deploy-name> ocp-express命令直接从现有的集群中移出OCP-Express。
基于Kubernetes的新运维
随着全面上云时代的到来,OceanBase也不例外,为了迎合不同用户的需求,提供了多样化的选择方案。对于喜欢公有云服务的用户,可直接在各大云平台上购买OceanBase的公有云服务,享受便捷的数据库体验。而对于那些偏好将数据库系统完全掌握于手中的用户,我们推出了一套基于Kubernetes operator的方案——OceanBase-Operator。OceanBase-Operator项目首次亮相于2022年4月,在2023年的开发者大会上的workshop上同大家一起体验了基于yaml编排的方法创建和管理集群。
为了进一步简化操作,我们引入了operator Dashboard,通过这个可视化界面,用户可以更加便捷地管理其集群。仅需四条简单的命令,就能完成OceanBase-operator和Dashboard的部署。随后就可以完全摆脱YAML文件,在图形化的界面中运维集群。
那么,在Kubernetes上,我们能获得的全新体验是什么?
在传统的物理机环境下,向OCP添加一个节点需要经过一系列繁琐的步骤,包括准备物理机、将其加入OCP,接着加入相应的Zone,并最后提交任务。现在,利用Kubernetes的能力,这个过程变得极其简单,不再需要在考虑新的物理机在哪里,只需要在Dashboard 上调整副本数——比如从1增加到2并提交即可。OceanBase-Operator随后自动完成所有必要操作,实现快速而无缝的扩容。
如果出现节点或整个可用区故障的情况,传统的运维方式将是一场噩梦。运维人员需要将新的主机一台台加入OCP,并一一配置到对应的Zone中。而在Kubernetes中,这一切将完全自动化。一旦OceanBase-Operator检测到副本数量减少,它会自动调度新的Pod来恢复服务,无需任何手动干预。OceanBase-Operator根据存储介质是否可用,OceanBase-Operator会自动决策是重启服务,还是通过挂载新的PV以扩容形式迅速恢复服务。
我们计划未来将支持HPA(Horizontal Pod AutoScaler)功能。用户将通过设定具体的扩缩容指标,OceanBase-Operator能在系统负载升高时自动进行扩容,负载下降时则自动缩容。这一功能在极大减轻运维人员的工作压力的同时还为企业节约了成本。
统一运维接口
上面提到的都是OceanBase原厂提供的管控服务,而对于那些有自建管控平台需求或希望将OceanBase 集成到已有自建平台中的用户,可以使用OceanBaseShell。在OceanBase 4.2.1或更高版本中,我们可以在OceanBaseserver执行文件旁边发现一个新的二进制文件,名为OceanBaseshell。OceanBaseShell是一个结合命令行操作和OpenAPI的软件,它不仅适用于日常运维,还能在OCP或OceanBaseD出现故障时提供应急运维支持,如应急启停、扩缩容、升级等。

OceanBaseShell还提供了一套统一的运维API,为运维动作提供了标准接口。利用OceanBaseShell实现的功能,我们实现了yum/apt-get install部署集群,未来,我们还将基于OceanBaseShell完善这套方案,包括扩容、缩容、升级等。同时OceanBaseD也部分接入了OceanBaseShell,这也是其能接管yum/apt-get install部署的集群的原因。后续我们将继续推进管控产品全面接入OceanBaseShell,以实现统一标准的运维和任务状态的同步。
此前当一个由OceanBaseD部署的集群被OCP接管之后,我们会建议用户不再使用OceanBaseD对该集群进行运维操作,以避免可能发生的运维冲突。全线接入OceanBaseShell之后,所有的运维任务都将通过OceanBaseShell的接口下发,从而确保无论任务是由OceanBaseD、OCP还是用户自建的管控台发起的,都不会发生冲突。
目前,社区已经准备好了OceanBaseShell的GO语言SDK,并计划提供包括Python在内的更多语言的SDK。如果大家需要其他语言的SDK,欢迎在社区提出需求。
同时,我们欢迎开发者加入社区,一起参与OceanBaseShell以及其他生态产品的建设。
相关文章:
提升易用性,OceanBase生态管控产品的“从小到大”
2022年,OceanBase发布4.0版本“小鱼”,并首次公开提出了单机分布式一体化这一理念,旨在适应大小不同规模的工作负载,全面满足用户数据库“从小到大”全生命周期的需求。当时,我们所说的“从小到大”主要聚焦于数据库的…...
Golang——gRPC认证
一. OpenSSL 1.1 介绍 OpenSSL是一个开放源代码的软件库包,用于支持网络通讯过程中的加密。这个库提供的功能包含了SSL和TLS协议的实现,并可用于生成密钥、证书、进行密码运算等。 其组成主要包括一下三个组件: openssl:多用途的命…...
探索FPGA技术:零成本入门指南
FPGA作为一门前沿的集成电路技术,不仅在数字电子领域有着广泛的应用,而且对于硬件编程和数字电路设计的学习者来说,是一次深入了解技术原理的绝佳机会。现在,让我们看看如何不花一分钱,就能开始我们的FPGA学习之旅。 方…...
Java数据结构与算法(组合问题回溯算法)
前言 上期重点介绍了回溯算法在约束满足问题情况下应用。这期看看在组合问题场景下如何使用。 回溯算法通常用于解决以下几类问题: 1. 组合问题 需要从集合中选择一些元素,并找出所有可能的组合。例子:子集生成问题、组合数问题ÿ…...
CMake的使用方法
1 CMakeLists.txt编写 cmake_minimum_required(VERSION 3.12)project(djl_plm)set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdc17 -g")add_executable(simple simple.cpp) add_executable(main main.cpp)include_directories(include) 相当于如下gcc命令࿱…...
java面试整合全套
什么是Java (定义 优点) java是一个平台,由jvm和Java应用编程接口构成的一门面向编程语言。 不仅吸收了C语言的各种优点,还摒弃了c语言里面的多继承,指针等概念,因此java的特征主要有功能强大和简单易用的特征。 jav…...
贪吃蛇小游戏简单制作-C语言
文章目录 游戏背景介绍实现目标适合人群所需技术浅玩Window API什么是API控制台程序窗口大小,名称设置 Handle(句柄)获取句柄 坐标结构体设置光标位置 光标属性获取光标属性设置光标属性 按键信息获取 贪吃蛇游戏设计游戏前的初始化设置窗口的大小和名称本地化设置 宽字符Waht …...
Oracle数据库-重点信息查询方法
文章目录 一、数据库信息及查询方法1.1是否为RAC1.2 数据库存储容量大小1.3 在线会话数1.4 最大分区数1.5 最大存储过程行数1.6 单表最大行数1.7 最大单表大小1.8 表总数量1.9 无主键表的数量1.10 字段数超过200的宽表1.11 关注CPU耗时高的SQL 一、数据库信息及查询方法 1.1是…...
【全开源】多平台租房系统源码(Fastadmin+ThinkPHP+Uniapp)
🏠多平台租房系统:一站式租房新体验🔍 🌐一、引言:租房市场的变革 在快节奏的现代生活中,租房已成为许多人解决居住问题的首选。然而,传统的租房方式往往繁琐且效率低下。随着互联网的飞速发展…...
Pythond 的 corr函数
Python corr函数科普 在数据分析和机器学习领域,数据的相关性是一个非常重要的概念。相关性可以帮助我们理解数据之间的关系,并且可以作为一种预测模型的基础。Python中的corr()函数是一个用于计算数据之间相关性的强大工具。本文将介绍corr()函数的使用方法,并通过代码示例…...
Fiddler 中文版 (强大的网络响应HTPP协议抓包工具)
前言 Fiddler Web Debugger,功能强大的抓包工具,Web调试工具,HTTP协议抓包调试工具。它能够捕获浏览器和程序的所有http/https通信连接,可以针对访问请求,分析请求数据报文、设置断点、调试web程序、解密和美化JS脚本…...
初出茅庐的小李博客之JSON格式介绍
什么是JSON JSON:JavaScript Object Notation (翻译就是JavaScript 对象表示法),是一种表示对象的方法。 JSON 是存储和交换文本信息的语法,类似 XML。但是JSON 比 XML 更小、更快,更易解析。此外JSON也易于人阅读和编写。而且主流的编程语言…...
Vue3相关语法内容,组件传值,事件监听,具名插槽。
1、Vue3相关语法内容 赋值语句(ref、reactive系列)组件传值(父子,子父)watch,watchEffect监听slot具名插槽 1、赋值语法(ref,reactive) 1.1、ref 、isRef、 shallowRef、triggerRef、customRef 支持所有的类型&…...
Linux用户,用户组,所有者权限分配,sftp用户权限分配
注意以下命令执行需要在root用户下执行 tenant命令切换至root命令 sudo -do root 删除用户信息 1.不删除用户主目录 userdel user_name 2.删除用户主目录 userdel -r user_name usermod命令修改用户账户权限 更改用户名 sudo usermod -l newusername oldusername 更…...
iFlyCode:AI智能编程助手引领未来软件开发新趋势
体验地址 在当前软件行业飞速发展的背景下,开发效率和代码质量成为了衡量软件工程师工作效能的两大关键指标。为了应对日益增长的市场需求和紧迫的发布时间,科大讯飞推出了iFlyCode2.0——一款集AI技术于一身的智能编程助手,旨在引领未来软件…...
高低温测试发现文件被篡改
背景 高低温测试-40度和85度压测,出现程序崩溃现象(挂测日志看)。设备常温后也无法恢复,重启后也无法恢复。 定位排查 先校验程序资源文件一致性是否正确 1.取出设备中的程序资源,包括执行文件和主要的so文件(可以从大的文件开始) 2.…...
高考真的不再重要了吗?
阅读本文大概需要 1.11 分钟 一年一度的高考又落幕了,看到不少人说今年的高考热度好像少了几分,不再像过去那样热闹。于是就有人纳闷,高考是不是不那么重要了。 其实你觉得高考不重要,可能是因为你家今年没考生。就像你不怎么关注…...
spring常用注解(八)@Async
一、介绍 1、介绍 二、原理 三、集成与使用 1、集成方法 (1)开启 使用以下注解开启 EnableAsync (2)使用 在需要异步处理的方法上加上 Async 2、返回值 Async注解的方法返回值只能为void或者Future<T>。 &…...
B站画质补完计划(3):智能修复让宝藏视频重焕新生
1 老片存在什么画质问题? B站作为一个拥有浓厚人文属性的平台社区,聚集了诸如《雍正王朝》、《三国演义》等经典影视剧集,同时也吸引了大量用户欣赏、品鉴这些人文经典 。但美中不足的是,由于拍摄年代久远、拍摄设备落后、数据多次…...
Spring Cloud Stream整合RocketMQ
Spring Cloud Stream整合RocketMQ 这里书接上回,默认你已经搭建好了RocketMQ主从异步集群,前面文章已经介绍过搭建方法。 1、Spring Cloud Stream介绍 Spring Cloud Stream是一个框架,用于构建与共享消息系统连接的高度可扩展的事件驱动微服…...
华为云AI开发平台ModelArts
华为云ModelArts:重塑AI开发流程的“智能引擎”与“创新加速器”! 在人工智能浪潮席卷全球的2025年,企业拥抱AI的意愿空前高涨,但技术门槛高、流程复杂、资源投入巨大的现实,却让许多创新构想止步于实验室。数据科学家…...
从WWDC看苹果产品发展的规律
WWDC 是苹果公司一年一度面向全球开发者的盛会,其主题演讲展现了苹果在产品设计、技术路线、用户体验和生态系统构建上的核心理念与演进脉络。我们借助 ChatGPT Deep Research 工具,对过去十年 WWDC 主题演讲内容进行了系统化分析,形成了这份…...
R语言AI模型部署方案:精准离线运行详解
R语言AI模型部署方案:精准离线运行详解 一、项目概述 本文将构建一个完整的R语言AI部署解决方案,实现鸢尾花分类模型的训练、保存、离线部署和预测功能。核心特点: 100%离线运行能力自包含环境依赖生产级错误处理跨平台兼容性模型版本管理# 文件结构说明 Iris_AI_Deployme…...
《用户共鸣指数(E)驱动品牌大模型种草:如何抢占大模型搜索结果情感高地》
在注意力分散、内容高度同质化的时代,情感连接已成为品牌破圈的关键通道。我们在服务大量品牌客户的过程中发现,消费者对内容的“有感”程度,正日益成为影响品牌传播效率与转化率的核心变量。在生成式AI驱动的内容生成与推荐环境中࿰…...
[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?
论文网址:pdf 英文是纯手打的!论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误,若有发现欢迎评论指正!文章偏向于笔记,谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...
江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命
在华东塑料包装行业面临限塑令深度调整的背景下,江苏艾立泰以一场跨国资源接力的创新实践,重新定义了绿色供应链的边界。 跨国回收网络:废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点,将海外废弃包装箱通过标准…...
【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)
可以使用Sqliteviz这个网站免费编写sql语句,它能够让用户直接在浏览器内练习SQL的语法,不需要安装任何软件。 链接如下: sqliteviz 注意: 在转写SQL语法时,关键字之间有一个特定的顺序,这个顺序会影响到…...
土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等
🔍 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术,可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势,还能有效评价重大生态工程…...
3-11单元格区域边界定位(End属性)学习笔记
返回一个Range 对象,只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意:它移动的位置必须是相连的有内容的单元格…...
【Nginx】使用 Nginx+Lua 实现基于 IP 的访问频率限制
使用 NginxLua 实现基于 IP 的访问频率限制 在高并发场景下,限制某个 IP 的访问频率是非常重要的,可以有效防止恶意攻击或错误配置导致的服务宕机。以下是一个详细的实现方案,使用 Nginx 和 Lua 脚本结合 Redis 来实现基于 IP 的访问频率限制…...
