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

本文主要是介绍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 能为我们带来更高的性能、更低的成本、更好的收益,为公司的业务发展提供更强大的支持。

这篇关于OceanBase 助力同方智慧能源,打造安全可靠、高性能的能源数据架构的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/947446

相关文章

mybatis的整体架构

mybatis的整体架构分为三层: 1.基础支持层 该层包括:数据源模块、事务管理模块、缓存模块、Binding模块、反射模块、类型转换模块、日志模块、资源加载模块、解析器模块 2.核心处理层 该层包括:配置解析、参数映射、SQL解析、SQL执行、结果集映射、插件 3.接口层 该层包括:SqlSession 基础支持层 该层保护mybatis的基础模块,它们为核心处理层提供了良好的支撑。

大模型研发全揭秘:客服工单数据标注的完整攻略

在人工智能(AI)领域,数据标注是模型训练过程中至关重要的一步。无论你是新手还是有经验的从业者,掌握数据标注的技术细节和常见问题的解决方案都能为你的AI项目增添不少价值。在电信运营商的客服系统中,工单数据是客户问题和解决方案的重要记录。通过对这些工单数据进行有效标注,不仅能够帮助提升客服自动化系统的智能化水平,还能优化客户服务流程,提高客户满意度。本文将详细介绍如何在电信运营商客服工单的背景下进行

基于MySQL Binlog的Elasticsearch数据同步实践

一、为什么要做 随着马蜂窝的逐渐发展,我们的业务数据越来越多,单纯使用 MySQL 已经不能满足我们的数据查询需求,例如对于商品、订单等数据的多维度检索。 使用 Elasticsearch 存储业务数据可以很好的解决我们业务中的搜索需求。而数据进行异构存储后,随之而来的就是数据同步的问题。 二、现有方法及问题 对于数据同步,我们目前的解决方案是建立数据中间表。把需要检索的业务数据,统一放到一张M

百度/小米/滴滴/京东,中台架构比较

小米中台建设实践 01 小米的三大中台建设:业务+数据+技术 业务中台--从业务说起 在中台建设中,需要规范化的服务接口、一致整合化的数据、容器化的技术组件以及弹性的基础设施。并结合业务情况,判定是否真的需要中台。 小米参考了业界优秀的案例包括移动中台、数据中台、业务中台、技术中台等,再结合其业务发展历程及业务现状,整理了中台架构的核心方法论,一是企业如何共享服务,二是如何为业务提供便利。

关于数据埋点,你需要了解这些基本知识

产品汪每天都在和数据打交道,你知道数据来自哪里吗? 移动app端内的用户行为数据大多来自埋点,了解一些埋点知识,能和数据分析师、技术侃大山,参与到前期的数据采集,更重要是让最终的埋点数据能为我所用,否则可怜巴巴等上几个月是常有的事。   埋点类型 根据埋点方式,可以区分为: 手动埋点半自动埋点全自动埋点 秉承“任何事物都有两面性”的道理:自动程度高的,能解决通用统计,便于统一化管理,但个性化定

使用SecondaryNameNode恢复NameNode的数据

1)需求: NameNode进程挂了并且存储的数据也丢失了,如何恢复NameNode 此种方式恢复的数据可能存在小部分数据的丢失。 2)故障模拟 (1)kill -9 NameNode进程 [lytfly@hadoop102 current]$ kill -9 19886 (2)删除NameNode存储的数据(/opt/module/hadoop-3.1.4/data/tmp/dfs/na

异构存储(冷热数据分离)

异构存储主要解决不同的数据,存储在不同类型的硬盘中,达到最佳性能的问题。 异构存储Shell操作 (1)查看当前有哪些存储策略可以用 [lytfly@hadoop102 hadoop-3.1.4]$ hdfs storagepolicies -listPolicies (2)为指定路径(数据存储目录)设置指定的存储策略 hdfs storagepolicies -setStoragePo

Hadoop集群数据均衡之磁盘间数据均衡

生产环境,由于硬盘空间不足,往往需要增加一块硬盘。刚加载的硬盘没有数据时,可以执行磁盘数据均衡命令。(Hadoop3.x新特性) plan后面带的节点的名字必须是已经存在的,并且是需要均衡的节点。 如果节点不存在,会报如下错误: 如果节点只有一个硬盘的话,不会创建均衡计划: (1)生成均衡计划 hdfs diskbalancer -plan hadoop102 (2)执行均衡计划 hd

【Prometheus】PromQL向量匹配实现不同标签的向量数据进行运算

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi

MySQL高性能优化规范

前言:      笔者最近上班途中突然想丰富下自己的数据库优化技能。于是在查阅了多篇文章后,总结出了这篇! 数据库命令规范 所有数据库对象名称必须使用小写字母并用下划线分割 所有数据库对象名称禁止使用mysql保留关键字(如果表名中包含关键字查询时,需要将其用单引号括起来) 数据库对象的命名要能做到见名识意,并且最后不要超过32个字符 临时库表必须以tmp_为前缀并以日期为后缀,备份