用友降运维成本实践:OceanBase替换MySQL,实现高可用

news2024/11/17 23:48:47

导语:随着业务模型的不断变化使运维难度越来越大,用友IT内部采用任务调度中心XXL-JOB和配置管理中心Nacos来实现公司IT分布式任务调度和微服务开发。但XXL-JOB和Nacos集群数量的增多又使其支撑系统MySQL难以招架。

为了寻找一款既能提供高可用又能统一管理集群的数据库,降低运维压力,用友IT内部开始了数据库选型的探索与实践。

 

以下为用友DBA的自述。

 

业务面临挑战

 

随着公司的发展,人员数量及IT系统的规模不断增长,日常的运维管理工作需要更多的投入,因此不得不引入一些自动化工具来助力运维管理,考虑到这些需求,我们引入了调度平台和配置管理中心来实现公司IT运维的标准化和自动化工作。

目前,公司IT团队任务调度平台部分采用XXL-JOB,其核心设计目标是开发迅速、学习简单、轻量级、易扩展,正是基于这些因素。

同时,为了解决团队内部配置管理和服务注册的问题,我们又引入了Nacos作为注册中心和配置管理中心,通过Nacos,一方面可以做服务发现和服务注册,另一方面可以使得配置标准化、格式统一化,当配置信息发生变动时,修改实时生效,无需重启服务器就能够自动感知相应的变化,并将新的变化统一发送到相应程序上,快速响应变化。使用配置中心后只需要相关人员在配置中心动态去调整参数,就基本上可以实时或准实时去调整对应的业务。另外,通过审计功能还可以追溯问题。

但随着XXL-JOB和Nacos集群数量的增多,给我们带来了很多其他烦恼。这些集群自身的运行维护也需要投入人力,同时这些系统都需要数据库来支撑,而我们使用的是单体数据库MySQL,一方面会导致MySQL实例数量增多,另一方面,MySQL实例无法提供HA高可用。当实例出现故障的时候,整个调度平台或配置管理中心就无法使用。如果要继续为MySQL创建高可用集群,管理成本和硬件成本都会非常高。

因此,我们想寻找一款既能提供高可用,又能统一管理集群的数据库,降低运维压力,减少运维成本。

 

技术选型与落地效果

 

在考察了目前市场上的各类数据库后,我们选择了两款分布式数据库作为候选,两款数据库都原生提供了高可用能力,在节点出现问题的时候,可以自动切换,并且业务不需要做任何改造。

其中一款数据库是 OceanBase,由于其提供多租户能力,因此我们最终选择了 OceanBase 作为调度中心和配置管理中心的数据库。利用这种多租户能力,我们可以将多个平台的数据库放在一套 OceanBase 集群中。大幅减少运维多套数据库所带来的工作量,同时租户的资源可以灵活配置,在某些集群业务大量增长时,可快速实现租户的扩容。

除了多租户能力外,我们通过阅读官方文档、浏览 OceanBase 问答社区以及与原厂工程师交流,并上手测试后,发现 OceanBase 还提供了以下四个关键能力。

 

  1. 高扩展

在我们使用MySQL时,其性能会随着数据量的不断增大而降低,导致平台变卡顿。而 OceanBase 这类分布式数据库,提供线性的扩展能力,在数据量增大之后,可通过增加服务器达到性能的线性扩展。

 

  1. 高可用

OceanBase 分布式数据库原生具备高可用能力,通过Paxos协议实现分区级别的高可用,在少数节点出现故障之后,依然能够提供服务,不需要再为数据库补充其他组件来实现高可用及自动故障转移。

 

  1. 高压缩率

基于 OceanBase 的LSM-Tree数据组织形式,全量数据=基线数据+增量数据,因为基线数据是静态数据,只有在下次合并的时候才会有变化,所以实现了很高的压缩率。我们从MySQL迁移到 OceanBase 之后,磁盘占用率只用到原先的1/3左右。

 

  1. 高兼容性

目前 OceanBase 基本兼容MySQL语法,因为Nacos以及XXL-JOB都需要在数据库中执行SQL的初始化,除了 OceanBase 在建表时由于XXL-JOB及Nacos官方提供的SQL运行需要ENGINE=InnoDB语法,其他都没有问题,解决方法很简单,去掉ENGINE=InnoDB就可以了。2-1

决定采用 OceanBase 后,我们投入测试环境运行,效果如下。

XXL-JOB任务调度中心: 初始化SQL完成之后直接运行比较顺利,兼容很不错,没有发现任何异常。

Image

 

Nacos配置管理中心: 初始化SQL完成之后,能够顺利运行。

Image

 

总结

经过上述探索及测试,说明了 OceanBase 与XXL-JOB和Nacos的兼容度、集成度很高,我们利用 OceanBase 的多租户能力,灵活部署XXL-JOB任务调度及Nacos配置管理中心,实现了多租户的管理能力,减少了大量MySQL实例,大大简化了数据库的运维工作。下图是我们集群现在的一个示意图。

 

Image

 

对于本次数据库替换的初步尝试,我们认为非常顺利。基于 OceanBase 提供的Daas能力,可以更好地为XXL-JOB和Nacos这类依赖MySQL的工具提供服务,简化我们数据库的管理,让我们能够有更多的时间不断优化其他工具。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

git常用命令(linux和windows通用)

本文的命令已可满足日常需求 配置用户信息 git config --global user.name “github用户名” git config --global user.email “github绑定邮箱"查看配置信息 git config --global user.name git config --global user.email~/.bashrc文件介绍 ~指当前用户的根目录&…

负载分担方式的双链路热备份配置

** 负载分担方式的双链路热备份配置 ** 实验要求和拓扑 负载分担方式的优点和主备方式的不同 负载分担可以每个ac都管理ap这样就避免了资源浪费,然后又作到了备份 主备方式则是,ap都交给一个ac,另一个ac只作为备份 实验拓扑 实验要求 配置…

全面上新!阿里 2023 版(Java 岗)面试突击手册,Github 已标星 37K

程序员面试背八股,几乎已经是互联网不可逆的一个形式了。自从面试**八股文火了之后,网上出现了不少 Java 相关的面试题,很多朋友盲目收集背诵,**但网上大部分的面试题,大多存在这几个问题:第一,…

剑指 Offer 53 - II. 0~n-1中缺失的数字

摘要 剑指 Offer 53 - II. 0~n-1中缺失的数字 一、二分法 1.1 二分法分析 排序数组中的搜索问题,首先想到 二分法 解决。 根据题意,数组可以按照以下规则划分为两部分。 左子数组: nums[i]i;右子数组:…

Eolink 11月企业与产品动态速览!

本月,Eolink IDEA 插件 “Eolink ApiKit” 最新版本 1.1.3 发布,可进行方法 API 解析的插件,可自动生成注释,可分析方法出入参等。 此外,Eolink 再获多项荣誉与认证,持续行业领先!一起来看看 11…

我今天吃了SHI,请对下联

1. 跨平台终端 Tabby(前身是 Terminus) 是一个可高度配置的终端模拟器和 SSH 或串口客户端,支持 Windows,macOS 和 Linux。 还有一些功能比较常见和易于使用的: 集成了 SSH,Telnet 客户端和连接管理器,可以在 SSH 会…

JAVA SCRIPT设计模式--行为型--设计模式之Mediator中介者模式(17)

JAVA SCRIPT设计模式是本人根据GOF的设计模式写的博客记录。使用JAVA SCRIPT语言来实现主体功能,所以不可能像C,JAVA等面向对象语言一样严谨,大部分程序都附上了JAVA SCRIPT代码,代码只是实现了设计模式的主体功能,不代…

图的初体验

最近周赛有两个差不多的题目,都是关于图的,之前也没有怎么练过关于图的题目,来记录一下。 T1 力扣T320周赛:T3:到达首都的最少油耗 class Solution {//结果long result ;public long minimumFuelCost(int[][] roads…

【推免攻略】四.2021年北交计算机学院夏令营、预推免保研经验

欢迎订阅本专栏:《北交计算机保研经验》 订阅地址:https://blog.csdn.net/m0_38068876/category_10779337.html 【推免攻略】一.北交计算机学院夏令营、预推免攻略【推免攻略】二.联系导师的前期准备及注意事项【推免攻略】三.2020年北交计算机学院夏令营…

如何能成为测试老大?先搞懂项目中的敏捷开发模式

1 什么是敏捷开发? 1、敏捷开发是以用户的需求进化为核心,采取迭代、循序渐进的方式来 进行软件项目的开发。 2、即将项目切分为多个子项目,每个子项目单独发布,保证软件较早可用。 3、及时收集用户反馈,调整未发布…

线性回归线性关系、非线性关系、常见函数导数、损失函数与优化算法、正规方程与单变量函数梯度下降、多变量函数梯度下降

一、线性回归概述 线性回归(Linear regression):是利用回归方程(函数)对一个或多个自变量(特征值)和因变量(目标值)之间关系进行建模的一种分析方式 特点:只有一个自变量的情况称为单变量回归,多于一个自变量情况的叫做多元回归 特征值与目…

机器学习笔记之受限玻尔兹曼机(五)基于含隐变量能量模型的对数似然梯度

机器学习笔记之受限玻尔兹曼机——基于含隐变量能量模型的对数似然梯度引言回顾:包含配分函数的概率分布受限玻尔兹曼机——场景构建对比散度基于含隐变量能量模型的对数似然梯度引言 上一节介绍了对比散度(Constractive Divergence)思想,本节将介绍基于…

制造型企业如何进行多项目管理?这篇文章说清楚了

受经济全球化与科技迅速发展的影响,我国很多企业早已进入了多项目管理模式。多项目管理是从企业整体出发,动态选择不具有类似性的项目,对企业所拥有的或可获得的生产要素和资源进行优化组合,有效、最优地分配企业资源,…

葡聚糖修饰金纳米颗粒(Dex-AuNps)|聚环氧氯丙烷二甲胺修饰多孔磁性葡聚糖微球

葡聚糖修饰金纳米颗粒(Dex-AuNps)|聚环氧氯丙烷二甲胺修饰多孔磁性葡聚糖微球 产品描述:通过特异性识别作用在表面等离子体共振传感器的金膜表面构建了伴刀豆球蛋白A/葡聚糖修饰金纳米颗粒自组装膜 中文名称:葡聚糖修饰金纳米颗粒 英文名称&#xff1…

CMAKE编译知识

1,Ubuntu安装了cmake之后,直接输入指令查看版本。cmake -version 我这里的版本为3.16.3 2,使用visual studio里面创建一个CMake项目是最快可以看到的。但是一般无法理解。所以我找了网上资料。根据网上所说和自己再试错下。初步了解了cmake…

[附源码]JAVA毕业设计微博网站(系统+LW)

[附源码]JAVA毕业设计微博网站(系统LW) 项目运行 环境项配置: Jdk1.8 Tomcat8.5 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术&#xf…

IAA游戏市场规模已达百亿,如何防范游戏安全问题?

近年来,移动休闲游戏市场发展速度迅猛,伽马数据发布的《2022年休闲游戏发展报告》称,2022年第一季度移动游戏下载量TOP200榜单中,休闲类游戏占比已达45%。 2022年第一季度下载量TOP200移动游戏占比情况丨数据来源伽马数据 相比IA…

MMCV学习——基础篇4(Hook)| 八千字:从设计模式到源码解读

MMCV学习——基础篇4(Hook) Hook 机制在MMCV的各个开源库中应用的十分广泛,它主要用于管理和扩展Runner的整个生命周期。通过Hook机制在Runner的各个生命周期节点调用自定义的函数,可以实现丰富的定制功能。 文章目录MMCV学习——…

【C语言航路】第八站:调试(第一幕)

前言 调试的这一站,对于市面上大部分的书籍都是缺失的,然而调试这个内容是非常重要的,尤其是在数据结构部分,将会频繁的使用,这也为我们后面讲解数据结构做一个铺垫。同时,在以后未来工作的时候&#xff0…

Generative Cooperative Learning for Unsupervised Video Anomaly Detection

介绍 在现实世界中,基于学习的异常检测任务极具挑战性,这主要是因为此类事件很少发生。由于这些事件的无约束性质,这一挑战进一步加剧。因此,获取足够的异常示例是相当麻烦的,而人们可以安全地假设,将永远…