OceanBase 助力同方智慧能源,打造安全可靠、高性能的能源数据架构

本文作者:丁泽斌,同方智慧能源数据库工程师

业务背景

作为同方股份有限公司旗下的领军企业,同方智慧能源集团矢志成为全球领先的综合智慧能源解决方案提供商。凭借中核集团和清华大学的科技实力,专注于向建筑、交通、工业、北方供热、数据中心等核心用能领域,提供全方位的服务,包括设计咨询、产品技术、投资建设以及运营维护。为城市构建绿色低碳的能源结构,提供智能、节能及能源利用的一站式解决方案,并提供卓越的能源投资运营服务。目前,公司项目主要有以下主要特色:

○  ToG 业务:我们的主要项目不同于常见的 面向消费者(toC) 或 企业(toB)的服务,更多的是为政府的工业建设、城市交通、基础设施等提供服务。

○  项目独立:项目多拥有完全独立的服务器资源,资源一般不共享。

○  较少使用公有云:极少数项目会使用公有云机器或服务,大规模集群通常会通过内部的私有云或物理机进行部署。

○  设备为主体:大多数项目是以设备为主体,能够 24 小时不间断工作,没有操作极限和压力低谷时期,数据产生频率高。

一、业务中面临的数据库困境

在上述业务背景下,传统数据库由于技术架构老旧、服务器配置低、功能复杂等问题出现了支持瓶颈。一方面,对于物理机来说,MySQL 增加单机 CPU、内存和存储等方式也难以实现扩展,同时存在单节点故障的风险。另一方面,MySQL 的性能提升有限,分库分表方案会增加架构复杂度和改造成本。

我们公司的某项目示例如下:共有 14 台机器,包括 2 两台配置较低的机器和 12 台高配的机器。在底层架构方面,我们采用了 Hadoop,上层利用 Apache Phoenix  接口和 SQL 层转换、数据传输层面,通过 MQ 和其他协议进行中间数据传输,同时使用 Spark 进行离线计算任务。

1712485326

该项目构建了一个分布式数据传输系统,将各省的设备数据传输到各自场站,再由场站将数据传输到中心系统。目前,项目涵盖 100 多个场站,超过 350 万数据量,每日场站数据量达到 10 亿条。该项目运行两年,数据约 55TB,预计未来将支持 2000 个场站,6000 万点位。尽管目前接入场站和预计支持数据量还存在差距,但庞大的数据量使我们必须提前规划支持方案。

在此项目中,Hadoop 体系组件繁多,搭建复杂,运维成本较高。此外,特殊的 Phoenix 语法及时序问题给开发人员带来了困扰,而性能也无法完全满足我们的要求。新项目不受限于服务器的性能,可以提前规划配置与数量,不会被已有代码所限制,从业务诉求角度,我们希望在该项目采用国产自研数据库技术。

因此,我们希望选择一款满足业务要求,性能强劲、生态完整、MySQL,强兼容、具备高扩展、高可靠、易于运维的数据库作为新的解决方案。

二、为什么选择 OceanBase

在数据库方案选型时,我们研究了适用于不同方向的国产数据库,篇幅有限下面主要介绍对 HBase-Phoenix、Apache Ignite、TiDB、OceanBase 的调研结果。

○  HBase-Phoenix:HBase 属于 KV 存储型数据库,Phoenix 将其变成提供 SQL 的接口,更方便分析和业务开发。但是它的结构较为复杂,不支持多种开源工具,而且默认特性也不符合我们的开发习惯,这使得在实际应用中存在一定的限制。

○  Apache Ignite:它是一个关系型内容库,但其资源相对较少,社区的活跃度较低。在初次使用 Apache Ignite 时,我们遇到了一些问题,例如偶然出现分区丢失导致无法进行表查询,正常运行的服务意外挂掉等,这对于线上数据库来说是无法接受的。

○  TiDB:根据我们调研最低的生产环境要求 13 台服务器,对于公司的一些老项目来说,很难达到这个资源配置水平,因此在实际应用中存在一定的挑战。

○  OceanBase:相较之下,OceanBase 由蚂蚁集团完全自研,满足了我们的国产自研需求。其社区活跃度高,官方人员会及时响应用户问题,且生态完善便于运维。值得一提的是,OceanBase 高度兼容 MySQL。经测试后发现,MySQL 项目迁移到OceanBase可以直接运行,应用零改造。此外 OceanBase 的流行度高也非常高,墨天轮国产数据库榜位列第一,GitHub Star 数量也达到 7000+,这些都表明了其在业界的广泛认可和使用。

在国产自研、MySQL 兼容度、生态完善等基础上,我们认为 OceanBase 相比于测试的其他数据库相比更为优秀,也更加符合我们的实际业务需求。主要体现在以下方面:

○  高扩展性:横向、纵向灵活扩展自动负载均衡,可根据需求轻松灵活地扩展节点数量,最多可达 1500+ 节点,且应用无感知;

○  高可靠性:数据强一致,集群多副本,支持跨地域容灾,避免单点故障;

○  低成本:一体化架构,高压缩比,3 台服务器完成最小部署;

○  HTAP:一套引擎支持 OLTP 业务和 OLAP 业务;

○  多租户:资源划分合理,最大化利用资源。

1712485433

同时,我们针对性能对 OceanBase 和 MySQL 进行了压测对比。下图是我们测试 OceanBase 4.2.1 版本和 MySQL 8.0 版本得出的数据。我们使用了 32 核、64G 内存、200G 磁盘的机器进行测试,并将 Sysbench 1.0.2 作为性能压测工具,操作系统使用 Anolis 8.8。

1712485462

在这样的环境下,我们分别对 100 万单表和 100 万 10 张表进行了测试,并考虑了不同线程数下 OceanBase 和 MySQL 的性能表现。可以看到 MySQL 在 32 线程之后,性能逐渐下降。OceanBase 在多线程下性能持续提升,同等硬件环境下性能达到 MySQL 8.0 的 2 倍。通过这次测试可以看出,OceanBase 在相同硬件环境下具有更好的性能表现,尤其在多线程下表现更为突出,相较于 MySQL 8.0 的性能提升明显。这进一步证实了我们选择 OceanBase 作为数据库解决方案的正确性和可靠性。

三、同方能源应用 OceanBase 的实践经验和收益

我们从 OceanBase 3.1.3 版本开始研究,并经历了多个版本的测试,直到最终使用 OceanBase 4.2.1 版本,我们发现在易用性方面得到极大提升,特别是 OCP 和 OBD 均支持白屏,避免了复杂配置,这让我们开始了 OceanBase 的部署工作。

在搭建过程中,我们发现 OceanBase 与 CentOS 7.9 的适配最佳,但为了适应国产自研需求,我们更倾向于使用 Anolis 8.8。以下是我们在真实环境的经验,供大家参考。

○  资源配置:因为 OceanBase 是以租户为单位划分 CPU 和内存资源,即使只搭建实例,自身也会占用一定的 CPU 和内存资源。虽然 从 OceanBase4.0 版本开始可以在低配置低资源环境下运行,但我们不建议在实际生产环境过低地配置资源,否则实际资源可能会分配不足。

○  磁盘选择:目前 OceanBase 建议使用 SSD 磁盘,不建议使用机械硬盘。对于一些在测试环境中使用硬盘的公司会带来一定的影响,可能会导致效率低下,影响使用效果。在规划磁盘的时候,日志磁盘无论数据量再少,磁盘规划应该至少是内存的三倍,否则 OCP 默认无法将所有内存资源分配给租户。为了防止 I/O 资源竞争,日志盘、数据盘、系统盘最好分别独立,不要共用。

○  搭建方式选择:OBD 和 OCP 各有优势,OBD 非常便捷,自带 OCP Express,也可以对集群进行简单的管理,不需要集群资源过多的配置规划,即可完成集群的搭建。但一些高级操作需要在终端操作命令行来完成,比如无法直接通过页面管理 OBProxy ,也无法对集群进行重启等,因此对维护人员要求较高。OCP 功能强大、更方便维护。OCP 可以完成多种高级操作,同时支持管理多个集群。非常适合大型项目的搭建。不过,OCP 作为独立的组件,如果分配过多资源,会造成不必要的资源浪费。而且在搭建 OCP 时,需要一台独立机器以及建设独立的集群以提升其稳定性,确保功能不受限制。

近期我们发现新版本的 OBD 可以直接部署 OCP,这表明 OBD 和 OCP 等工具正在变得越来越成熟和便利。除了 OCP 和 OBD 外,我们还使用了 OMS、ODC、CDC、OBKV、OAT、导出工具、迁移评估工具,以及 MySQL 生态工具。我们建议官方将 OBD、OCP 和 OAT 合并,或更加凸显各自的侧重点,更好地提升用户体验感。这样的整合将使用户更方便地管理和维护数据库,同时减少了学习和使用成本。

四、规划未来

OceanBase 是一个可扩展、高可用、高性能的原生分布式数据库系统,具备强大的数据处理能力,能够支持各种业务场景的需求。未来,我们计划将 OceanBase 应用到更广泛的业务范围,主要从四个方面展开:

○  在业务类型方面,扩大从业务数据到实时数据、再到系统的实时数据和历史数据的范围,以更好地满足不同业务场景的需求,提高数据处理效率。

○  在业务范围方面,从集控中心使用走向多层级协同集群,更好地支持大规模业务场景,提高系统的可靠性和性能。

1712485653

○  在集群规模方面,从高配置的小型集群走向高配置的大型集群,并逐步演变为多集群规模,更好地满足大规模数据处理和可伸缩性需求。

○  在业务方向方面,以新能源项目为切入点,逐步将 OceanBase 应用在供热供暖、地铁交通、智慧建筑等行业,可以更好地支持这些行业的数字化转型和创新发展。

此外,我们非常期待 OceanBase OBKV 集成 NoSQL 能力,以打造更为全面的一体化数据库。我们对 OceanBase 的未来充满信心,期待 OceanBase 能为我们带来更高的性能、更低的成本、更好的收益,为公司的业务发展提供更强大的支持。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/581976.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Altair® HPCWorks™——高性能计算(HPC)和云平台

Altair HPCWorks™——高性能计算(HPC)和云平台 强大的计算助力研发增速,Altair HPCWorks™ 使高性能和云计算变得快速、高效和提高有效产出 - 无论您的资源是在本地、云端还是混合环境中。专业地管理 IT 复杂性并支持最新的 AI 工作负载。使…

《QT实用小工具·四十五》可以在界面上游泳的小鱼

1、概述 源码放在文章末尾 该项目实现了灵动的小鱼&#xff0c;可以在界面上跟随鼠标点击自由的游泳&#xff0c;项目demo演示如下所示&#xff1a; 项目部分代码如下所示&#xff1a; #include "magicfish.h" #include <QtMath> #include <QPainter>…

CentOS7安装和升级nginx

文章目录 一 环境准备二 安装nginx三 升级nginx四 注意事项 一 环境准备 公司等保要求修复nginx的应用漏洞&#xff0c;从1.12.2升级到1.20.2版本。 本机操作系统是CentOS7.9&#xff0c;主机IP是192.168.0.201&#xff0c;nginx是在服务器部署而非容器部署。 下列安装和升级…

Springboot + MySQL + html 实现文件的上传、存储、下载、删除

实现步骤及效果呈现如下&#xff1a; 1.创建数据库表&#xff1a; 表名&#xff1a;file_test 存储后的数据&#xff1a; 2.创建数据库表对应映射的实体类&#xff1a; import com.baomidou.mybatisplus.annotation.IdType;import com.baomidou.mybatisplus.annotation.Table…

《R语言与农业数据统计分析及建模》学习——回归分析

一、线性回归 线性回归是一种广泛用于数据分析、预测和建模的技术&#xff0c;可以帮助我们理解变量之间的关系&#xff0c;并进行预测和推断。 1、简单线性回归 简单线性回归是线性回归的一种特殊情况&#xff0c;适用于只有一个自变量和一个因变量的情况。 在R语言中&#x…

QT c++ 代码布局原则 简单例子

本文描述QT c widget代码布局遵循的原则&#xff1a;实中套虚&#xff0c;虚中套实。 本文最后列出了代码下载链接。 在QT6.2.4 msvc2019编译通过。 所谓实是实体组件&#xff1a;比如界面框、文本标签、组合框、文本框、按钮、表格、图片框等。 所谓虚是Layout组件&#x…

IT廉连看——UniApp——样式绑定

IT廉连看——UniApp——样式绑定 一、样式绑定 两种添加样式的方法&#xff1a; 1、第一种写法 写一个class属性&#xff0c;然后将css样式写在style中。 2、第二种写法 直接把style写在class后面 添加一些效果&#xff1a;字体大小 查看效果 证明这样添加样式是没有问题的…

WPF —— MVVM 指令执行不同的任务实例

标签页 设置两个按钮&#xff0c; <Button Content"修改状态" Width"100" Height"40" Background"red"Click"Button_Click"></Button><Button Content"测试"Width"100"Height"40&…

clickhous学习之旅二

接上回继续鼓捣clickhouse 1.常用数据类型 1.1整型 固定长度的整型&#xff0c;包括有符号整型或无符号整型。整型范围(-2n-1~2n-1-1): Int8 - [-128 :127] -->相当于java中的byte Int16-[-32768 :32767] -->相当于java中的short Int32-[-2147483648 :2147483647] -…

最新官方破解版会声会影2024永久序列号和激活码

会声会影2024是一款功能强大的视频编辑软件&#xff0c;它集合了视频剪辑、音频调整、特效添加等多项功能于一身&#xff0c;为用户提供了一个全面且易用的视频制作平台。无论是初学者还是专业视频编辑人员&#xff0c;都能在这款软件中找到满足自己创作需求的工具。 会声会影最…

基于残差神经网络的汉字识别系统+pyqt前段界面设计

研究内容: 中文汉字识别是一项具有挑战性的任务&#xff0c;涉及到对中文字符的准确分类。在这个项目中&#xff0c;目标是构建一个能够准确识别中文汉字的系统。这个任务涉及到数据集的收集、预处理、模型训练和评估等步骤。尝试了使用残差神经网络&#xff08;ResNet&#x…

windows电脑改造为linux

有个大学用的旧笔记本电脑没啥用了&#xff0c;决定把它改成linux搭一个服务器&#xff1b; 一、linux安装盘制作 首先要有一个大于8G的U盘&#xff0c;然后去下载需要的linux系统镜像&#xff0c;我下的是ubuntu&#xff0c;这里自选版本 https://cn.ubuntu.com/download/d…

中国移动旋转验证码的识别过程

一、前言 今天有空研究了一下这个移动的登录&#xff0c;发现获取手机验证码的时候会弹出一种旋转验证码。这种验证码确实挺头疼。所以顺便研究了一下如何识别。 验证码的样子大家先看一下。看看大家有没有什么更好是思路。 二、验证码识别 我这里就直接上代码。我这里是使用…

SpringMVC基础篇(四)

文章目录 1.视图1.基本介绍1.视图介绍2.为什么需要自定义视图 2.自定义视图实例1.思路分析2.代码实例1.view.jsp2.接口3.配置自定义视图解析器springDispatcherServlet-servlet.xml4.自定义视图MyView.java5.view_result.jsp6.结果展示 3.自定义视图执行流程4.自定义视图执行流…

web安全---xss漏洞/beef-xss基本使用

what xss漏洞----跨站脚本攻击&#xff08;Cross Site Scripting&#xff09;&#xff0c;攻击者在网页中注入恶意脚本代码&#xff0c;使受害者在浏览器中运行该脚本&#xff0c;从而达到攻击目的。 分类 反射型---最常见&#xff0c;最广泛 用户将带有恶意代码的url打开&a…

E-MapReduce极客挑战赛季军方案

前一段时间我参加了E-MapReduce极客挑战赛&#xff0c;很幸运的获得了季军。在这把我的比赛攻略给大家分享一下&#xff0c;希望可以抛砖引玉。 赛题分析与理解 赛题背景&#xff1a; 大数据时代&#xff0c;上云已成为越来越多终端客户大数据方案的落地选择&#xff0c;阿里…

Phi-3-mini-4k-instruct 的功能测试

Model card 介绍 Phi-3-Mini-4K-Instruct 是一个 3.8B 参数、轻量级、最先进的开放模型&#xff0c;使用 Phi-3 数据集进行训练&#xff0c;其中包括合成数据和经过过滤的公开可用网站数据&#xff0c;重点是 高品质和推理密集的属性。 该型号属于 Phi-3 系列&#xff0c;Mini…

Golang | Leetcode Golang题解之第58题最后一个单词的长度

题目&#xff1a; 题解&#xff1a; func lengthOfLastWord(s string) (ans int) {index : len(s) - 1for s[index] {index--}for index > 0 && s[index] ! {ansindex--}return }

虚拟机扩容-根目录挂载sda1的空间不足

提醒&#xff01;不管成不成功&#xff0c;一定要先备份一份虚拟机&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; 走过路过点个关注吧&#xff0c;想到500粉丝&#xff0c;哭。一、查看分区情况 df -h可以看到/dev/sda1已经被占满了 2.关闭虚拟机&#xff…

windows驱动开发-WDF对象

WDF封装了大量的WDF对象&#xff0c;不过&#xff0c;和应用层不一样&#xff0c;不用去尝试从WDF框架对象类上派生和改写原有的WDF类&#xff0c;本意WDF就是希望我们使用这些对象和类&#xff0c;而不是创造新的奇怪的类。 每个WDF对象都代表着对一项驱动需要使用的子功能的…
最新文章