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.rhkb.cn/news/319785.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Initialize failed: invalid dom.

项目场景: 在vue中使用Echarts出现的错误 问题描述 提示:这里描述项目中遇到的问题: 例如:在vue中使用Echarts出现的错误 ERROR Initialize failed: invalid dom.at Module.init (webpack-internal:///./node_modules/echarts…

放下洒脱,活出勇气 -java面试我来了-(数据库和Spring篇)

事先说明 老师要求我们记面试题-基础篇开始背-五一作业😂😂😂😂 基础重要呀~~~~~复习是必须得-~~~~fighting😁😁 如果有大佬--请不要太在意细节-我的水平有限 开始我们的复习之路----🚀&am…

【Spring 】Spring MVC 入门Ⅱ

Spring MVC 入门Ⅱ 一、接收Cookie / Session 这两者都是用来保存用户信息的,但不同的是: Cookie存在客户端 Session存在服务器 Session产生时会生成一个唯一性的SessionID,这个SessionID可以用于匹配Session和Cookie SessionID可以在Cooki…

如何将安卓手机投屏到Windows 10电脑上

诸神缄默不语-个人CSDN博文目录 我之所以要干这个事是为了用手机直播的时候在电脑上看弹幕…… 文章目录 1. 方法一:直接用Win10内置的投影到此电脑2. 方法二:用AirDroid Cast投屏到电脑上 1. 方法一:直接用Win10内置的投影到此电脑 在设置…

Android 音视频播放器 Demo(二)—— 音频解码与音视频同步

音视频编解码系列目录: Android 音视频基础知识 Android 音视频播放器 Demo(一)—— 视频解码与渲染 Android 音视频播放器 Demo(二)—— 音频解码与音视频同步 RTMP 直播推流 Demo(一)—— 项目…

【跟马少平老师学AI】-【神经网络是怎么实现的】(七-2)word2vec模型

一句话归纳: 1)CBOW模型: 2c个向量是相加,而不是拼接。 2)CBOW模型中的哈夫曼树: 从root开始,向左为1,向右为0。叶子结点对应词有中的一个词。每个词对应唯一的编码。词编码不等长。…

Flask表单详解

Flask表单详解 概述跨站请求伪造保护表单类把表单渲染成HTML在视图函数中处理表单重定向和用户会话Flash消息 概述 尽管 Flask 的请求对象提供的信息足够用于处理 Web 表单,但有些任务很单调,而且要重复操作。比如,生成表单的 HTML 代码和验…

matlab例题大全

1.第1章 MATLAB系统环境 1.1 注:plot函数为画图函数。例plot(x1,y1,:,x2,y2,*); 1.2 注:root为求根函数。p为方程变量前面系数矩阵。 1.3 注: 2*x3y-1*z 2; 8*x2*y3*z 4; 45*x3*y9*z 23 求:x,y,z的…

第十二章 案例二:配置Trunk,实现相同VLAN的跨交换机通信

1、实验环境 公司的员工人数已达到 100 人,其网络设备如图12.13所示,现在的网络环境导致广播较多网速慢,并且也不安全,公司希望按照部门划分网络,并且能够保证一定的网络安全性 图12.13 实验案例二拓扑图 其网络规划…

C++从入门到精通——string类

string类 前言一、为什么学习string类C语言中的字符串示例 二、标准库中的string类string类string类的常用接口说明string类对象的常见构造string类对象的容量操作string的接口测试及使用string类对象的访问及遍历操作下标和方括号遍历范围for遍历迭代器遍历相同的代码&#xf…

【多模态】29、OCRBench | 为大型多模态模型提供一个 OCR 任务测评基准

文章目录 一、背景二、实验2.1 测评标准和结果2.1.1 文本识别 Text Recognition2.1.2 场景文本中心的视觉问答 Scene Text-Centric VQA2.1.3 文档导向的视觉问答 Document-Oriented VQA2.1.4 关键信息提取 Key Information Extraction2.1.5 手写数学公式识别 Handwritten Mathe…

Bert基础(二十一)--Bert实战:文本摘要

一、介绍 1.1 文本摘要简介 文本摘要(Text Summarization),作为自然语言处理(NLP)领域的一个分支,其核心目标是从长篇文档中提取关键信息,并生成简短的摘要,以提供对原始内容的高度…

Unity---版本控制软件

13.3 版本控制——Git-1_哔哩哔哩_bilibili Git用的比较多 Git 常用Linux命令 pwd:显示当前所在路径 ls:显示当前路径下的所有文件 tab键自动补全 cd:切换路径 mkdir:在当前路径下创建一个文件夹 clear:清屏 vim…

linux内核源码分析--核心网络文件和目录

图3-2显示了在/proc/sys中由网络代码所使用的主要目录,就每个目录而言,都列出了在哪一章描述其文件。 proc/sys/net bridge ipv4 core route neigh conf 图3-2/proc/sys/net 中的核心目录 根据前借所述,我们来看net中的树根是如何定义的&…

LeetCode 面试经典150题 28.找出字符串中第一个匹配项的下标

题目:给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标(下标从 0 开始)。如果 needle 不是 haystack 的一部分,则返回 -1 。 思路:暴力(…

大学生上班族必备!九个线上兼职秘籍,让你远离失业风险

互联网时代,兼职新风尚:这些靠谱兼职让你轻松增收 随着互联网技术的飞速发展,兼职工作已成为许多人增加收入、提升自我能力的新选择。本文将为您揭秘一些适合大学生和上班族的靠谱兼职工作,助您轻松找到适合自己的兼职机会。 一…

新的项目springboot

buybuyshenglombok <dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency> 添加依赖 lombok package com.example.demo.pojo;import lombok.AllArgsConstructor; import lombok.Data; import …

二维泊松方程(Neumann+Direchliet边界条件)有限元Matlab编程求解|程序源码+说明文本

专栏导读 作者简介&#xff1a;工学博士&#xff0c;高级工程师&#xff0c;专注于工业软件算法研究本文已收录于专栏&#xff1a;《有限元编程从入门到精通》本专栏旨在提供 1.以案例的形式讲解各类有限元问题的程序实现&#xff0c;并提供所有案例完整源码&#xff1b;2.单元…

ELK Stack 8 接入ElasticFlow

介绍 Netflow v5 / v9 / v10&#xff08;IPFIX&#xff09;&#xff0c;支持大部分网络厂商及VMware的分布式交换机。 NetFlow是一种数据交换方式。Netflow提供网络流量的会话级视图&#xff0c;记录下每个TCP/IP事务的信息。当汇集起来时&#xff0c;它更加易于管理和易读。…

Git系列:config 配置

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…