当前位置: 首页 > news >正文

阳光保险选择OceanBase稳定运行超700天

阳光保险集团成立于 2005 年 7 月,旗下拥有财产保险、人寿保险、信用保证保险、资产管理等多家专业子公司,是全球市场化企业中成长最快的集团公司之一,目前位列中国保险行业前八。随着数字化升级趋势的不断加速,很多企业产生将软硬件升级为满足自主研发要求产品的需求,作为基础软件“三驾马车”之一的数据库成为升级热潮中的一项。

在数字化升级的大背景下,阳光保险集团根据业务需求,展开了数据库选型与升级工作。其一,了解分布式数据库,为未来业务增长做技术储备;其二,在数据库适配且满足业务需求的同时,尽可能降低软件、硬件的开销。

经过深入调研和测试多款产品后,我们选择了 OceanBase。主要有以下四方面原因:

第一,满足关键业务升级需求。OceanBase 是一款完全自研的分布式数据库,且在 2021 年开源了核心代码,非常符合我们当前的关键业务升级需求。

第二,稳定可靠。整套系统稳定运行已经超过 2 年, 数据 0 丢失 ,使用上让我们越发安心和信任。从技术上,OceanBase 基于 Paxos 协议实现的多副本容灾方案,少数派故障时能够达到 RPO = 0,RTO < 8s 的高可用能力;从业务上看, OceanBase 已连续支撑十余年双 11,经过了大量金融领域的核心系统打磨,性能和可靠性已经久经考验。

第三,高度兼容MySQL。兼容性是我们最关注的一点,因为集团业务中很多搭载在 MySQL 上,如果兼容性不足,不仅迁移和改造的成本高,还需要协调业务方配合做改造,非常麻烦。所以引入新技术或替换新产品,要保证无缝、平滑的迁移,尽可能减少改造成本。

第四,多租户管理多套业务。我们在 MySQL 上的业务非常多,虽然业务的访问量和数据量都不是很大,但多套 MySQL 对应多个不同的业务,需要大量的管理和运维工作。OceanBase 的原生多租户能力很好解决了这个问题,大幅降低运维管理复杂度。

在经过前期的测试以后,我们将已有的业务逐步迁移到 OceanBase。我们线上 MySQL 环境以 5.6 版本 和 5.7 版本 为主,使用OceanBase数据迁移工具 OMS 可以直接创建同步链路,自动将 MySQL 数据迁移到 OceanBase,且未出现任何兼容性问题,使整个迁移过程非常便捷、顺利,无形中节省了大量迁移成本。

我们部署了 OceanBase 3.1.5 版本,配置为单台物理机器 128C768G 。目前在 OceanBase 开了 22 个租户,把分布在 MySQL 多个实例上的多套业务迁移至 OceanBase 后分配到不同的租户,这样每个业务单独使用自己的租户资源,互不影响。同时实现了高可用,简化了运维管理。

(一)多租户及资源隔离,提升资源利用率,保证数据安全。

OceanBase 的多租户特性解决了很多小型业务搭载在 MySQL 上的运维复杂问题。租户是一个逻辑概念,通过租户实现资源隔离,并通过权限控制保证租户的数据安全性,对于系统运维,尤其是对云数据库的运维有着重要的积极影响。租户在一定程度上相当于传统数据库的"实例"概念。OceanBase 的租户间是完全隔离的,从根本上解决跨租户的数据访问风险,以确保用户的数据资产不被其他租户访问。因此,我们可以将多个 MySQL 实例上的业务迁移到一套 OceanBase 上,将不同业务放置于对应租户即可,完全不用担心数据安全。另外,租户是资源分配的单元,可以根据业务情况设置资源规则,使机器资源得到充分利用。下图是我们的租户资源配置。

(二)高可用保障业务稳定运行,数据零丢失,无需人工干预。

我们使用 MySQL 时是一主多从架构,其自身没有高可用能力,以至于在一些复杂的大型业务场景,稳定性问题是需要我们格外关注的,特别是当核心业务的主节点异常甚至宕机时,可能需要人工干预处理,比如手动切换,并通过解析 Binlog 补齐数据。这种方式在一定程度上能解决问题,但风险高而且很不方便。使用 OceanBase 后,我们基于 Paxos 协议实现的多副本容灾方案,在三副本情况下,即使挂掉一个副本也不会对上层业务造成影响,少数派故障时能够达到 RPO = 0,RTO < 8s 的高可用能力。

(三)生态丰富/运维方便

对 DBA 来说,数据库运维工具的便捷度影响其工作是否高效的重要因素。OceanBase 运维管理工具 OCP 提供了图形化管理能力,包括数据库及相关资源的全生命周期管理、监控告警、性能诊断、故障恢复、备份恢复等,帮助我们更加高效地管理 OceanBase 数据库,降低企业的 IT 运维成本和学习成本。于我们而言,有三个功能是值得一提的。

其一,通过界面即可概览数据库基本情况及集群性能。对数据库运维人员来说,经常会出现业务 SQL 响应变慢的问题,需要分析是哪个节点的哪个 SQL 变慢了,通过 OCP 可以直观看到 TOP SQL 和慢 SQL,需要的信息都可以快速展示。

其二,扩缩容更简单。在 MySQL 环境上加从节点时需要修改各种参数,甚至可能需要重启服务,而在 OCP 只需要对租户进行简单配置就能实现快速不停机在线扩缩容。

其三,备份恢复更方便。当需要恢复到指定时间点时,MySQL 也能实现,不过操作比较麻烦,需要找到对应 Binlog 文件,然后在命令行里指定解析的文件和需要恢复的时间点;而在 OCP 上只需白屏选中需要恢复的时间点即可。

我们也用过其他企业提供的数据管理平台,最直观感受的就它们大多功能简单,使用复杂,而 OCP 功能丰富,使用简单,真的好用。

迁移至 OceanBase 后为企业带来的收益是显而易见,在 OceanBase 的落地过程中也有一些经验分享。

  • 自增列使用习惯:OceanBase 3.1.x 版本自增列跳号是不连续的,在 MySQL 数据库中自增列是唯一、递增的值,用来标识数据的唯一性。相比 MySQL 这种集中式数据库,作为分布式数据库的 OceanBase 将数据分布在不同的机器上,为了保证高度兼容 MySQL 的同时不损失分布式系统自增列生成的性能,会出现自增列生成过程中跳号不连续的问题。不过,这对我们的业务影响不大,自增列只要保证唯一即可。

  • 原地升级:由于我们使用的是 OceanBase 3.1.5 版本,无法直接原地升级到 4.x 版本,类似 Oracle 早期版本的升级方式,需要在切换环境时迁移、同步数据。

我们使用 OceanBase 已经有两年时间,生产系统集群一直稳定运行。随着 OceanBase 4.x 版本的持续更新,我们了解到其 OLAP 能力和数据压缩能力更强,且 MySQL 兼容性大幅提升。因此,我们计划将大数据量的业务迁移到 OceanBase 4.x 版本,使硬件使用成本进一步缩减。未来,也将根据公司关键业务升级需求的推进情况,将更多业务迁移至 OceanBase。

相关文章:

阳光保险选择OceanBase稳定运行超700天

阳光保险集团成立于 2005 年 7 月&#xff0c;旗下拥有财产保险、人寿保险、信用保证保险、资产管理等多家专业子公司&#xff0c;是全球市场化企业中成长最快的集团公司之一&#xff0c;目前位列中国保险行业前八。随着数字化升级趋势的不断加速&#xff0c;很多企业产生将软硬…...

最强大脑闪电心算草稿1

#include<bits/stdc.h> #include<windows.h> using namespace std; int main() {double speed,n,op,sum0;int ans;srand(time(NULL));cout<<"请输入加(1)/减(2)/加减混合(3):";cin>>op;cout<<"请输入题目数量:";cin>>…...

融优学堂-艺术史

导论4 1.【单选题】根据导论的讲解&#xff0c;下列表述正确的是&#xff08;&#xff09;。&#xff08;1&#xff09;艺术品是因人的活动而被创造出来的人工制品。&#xff08;2&#xff09;许多物品被制造出来时&#xff0c;最初的目的是满足某种实用的用途&#xff0c;而不…...

༺༽༾ཊ—设计-七个-07-原则-模式—ཏ༿༼༻

第七原则&#xff1a;迪米特职责 类与类之间的耦合度尽可能低 换言之&#xff0c;我们可以理解成———只与直接朋友说话&#xff0c;不跟陌生人说话 直接朋友&#xff1a; 通过方法传参传进来的朋友&#xff0c; 类自己的字段&#xff0c; 构造函数进来的也是直接朋友&…...

一篇文章带你搞懂---全排序

顾得泉&#xff1a;个人主页 个人专栏&#xff1a;《Linux操作系统》 《C/C》 《LeedCode刷题》 键盘敲烂&#xff0c;年薪百万&#xff01; 全排序&#xff08;Permutation&#xff09;是指将一组元素按照一定的顺序进行排列的过程。在计算机科学中&#xff0c;全排序是一…...

提升问题检索的能力

事实上&#xff0c;在信息极度丰富的时代&#xff0c;信息检索和筛选能力格外重要。一些搜索引擎的出现已极大地方便了我们日常的信息检索&#xff0c;此处需要注意的是我们不能仅仅局限于常见的搜索引擎&#xff0c;也需要关注和积累一些专业平台或是具有集成功能的引擎&#…...

软件测试|SQLAlchemy query() 方法查询数据

简介 上一篇文章我们介绍了SQLAlchemy 的安装和基础使用&#xff0c;本文我们来详细介绍一下如何使用SQLAlchemy的query()方法来高效的查询我们的数据。 创建模型 我们可以先创建一个可供我们查询的模型&#xff0c;也可以复用上一篇文章中我们创建的模型&#xff0c;代码如…...

FlinkCDC的分析和应用代码

前言&#xff1a;原本想讲如何基于Flink实现定制化计算引擎的开发&#xff0c;并以FlinkCDC为例介绍&#xff1b;发现这两个在表达上不知以谁为主&#xff0c;所以先分析FlinkCDC的应用场景和技术实现原理&#xff0c;下一篇再去分析Flink能在哪些方面&#xff0c;做定制化计算…...

序章 搭建环境篇—准备战士的剑和盾

第一步&#xff1a;安装node.js Node.js 内置了npm&#xff0c;只要安装了node.js&#xff0c;就可以直接使用 npm&#xff0c;官网地址&#xff1a; Download | Node.js 在这里不建议安装最新版本的node.js&#xff0c;可以选跟我一样的版本&#xff0c;node版本v16.13.2 链…...

【C++】vector的使用及模拟实现

目录 一、vector的介绍及使用1.1 介绍vector1.2 vector的使用1.2.1 构造1.2.2 遍历访问1.2.3 容量空间1.2.4 增删查改 二、vector的模拟实现2.1 成员变量2.2 迭代器相关函数2.3 构造-析构-赋值重载2.3.1 无参构造2.3.2 有参构造12.3.3 有参构造22.3.4 拷贝构造2.3.5 赋值重载2.…...

【数据库】sql优化有哪些?从query层面和数据库层面分析

目录 归纳sql本身的优化数据库层面的优化 归纳 这类型问题可以称为&#xff1a;Query Optimization&#xff0c;从清华AI4DB的paper list中&#xff0c;该类问题大致可以分为&#xff1a; Query RewriterCardinality EstimationCost EstimationPlan Optimization 从中文的角…...

nginx基本优化

安装nginx隐藏版本号 查看百度web服务器 [rootcjq11 ~]# curl -I http://www.baidu.com 隐藏nginx服务器版本号 [rootcjq11 ~]# cd /usr/local/src/nginx-1.22.0/ [rootcjq11 nginx-1.22.0]# vim src/core/nginx.h第13、14行修改版本号和服务器名称 [rootcjq11 nginx-1.2…...

软件测试|使用selenium处理单选框和多选框

简介 我们在web自动化测试工作中&#xff0c;经常会遇到对单选框&#xff08;Radio Buttons&#xff09;或者多选框&#xff08;Checkboxes&#xff09;进行操作的场景&#xff0c;单选框和多选框主要是用于我们做出选择或提交数据。本文将主要介绍selenium对于单选框和多选框…...

openssl3.2 - EVP_CIPHER_fetch算法名称字符串(参数2)的有效值列表

文章目录 openssl3.2 - EVP_CIPHER_fetch算法名称字符串(参数2)的有效值列表概述如何找到算法名称字符串列表?openssl-3.2.0\providers\implementations\include\prov\names.h备注END openssl3.2 - EVP_CIPHER_fetch算法名称字符串(参数2)的有效值列表 概述 进行加解密时, 先…...

vue3中的hook公共函数封装及运用

vue3 中的 hooks 就是函数的一种写法&#xff0c;就是将文件的一些单独功能的js代码进行抽离出来&#xff0c;放到单独的js文件中&#xff0c;或者说是一些可以复用的公共方法/功能 使用Vue3的组合API封装的可复用的功能函数自定义hook的作用类似于vue2中的mixin技术自定义Hook…...

广州市工信局、天河区商务金融局及广州专精特新促进会走访思迈特

2024年1月11日下午&#xff0c;广州市工信局、天河区商务金融局及广州专精特新促进会相关负责人莅临广州思迈特软件总部调研指导&#xff0c;思迈特软件总裁兼COO姚诗成代表公司热情接待&#xff0c;并陪同调研。 调研组实地参观了思迈特软件&#xff0c;深入了解了思迈特发展历…...

vi编辑器显示行号和不显示行号切换命令

文章目录 1.临时生效只需要在vi编辑器里面输入1.1.显示行号1.2.不显示行号 2.永久生效 1.临时生效只需要在vi编辑器里面输入 1.1.显示行号 set number 或者 set nu如下图 1.2.不显示行号 set nonumber 或者 set nonu2.永久生效 首先打开配置文件/etc/vim/vimrc,向文件中添…...

使用 LLVM clang C/C++ 编译器编译 boost 基础框架类库

1、下载 boost 1.84 库的源代码放到待编译目录 2、解压并接入 boost 1.84 库源码的根目录 搜索默认的 clang 版本&#xff0c;WSL 2.0/Ubuntu 18.04 LTS 为 clang 6.x 执行命令&#xff1a; ./bootstrap.sh --with-toolsetclang ./b2 toolsetclang 另外一个方法比较麻烦需要…...

推荐一款.NET开发的物联网开源项目

物联网&#xff08;IoT&#xff09;是一个正在快速发展的技术领域&#xff0c;它涉及到各种设备、物体和系统的互联。所以各种物联网平台和物联网网关项目层出不穷&#xff0c;在物联网&#xff08;IoT&#xff09;领域&#xff0c;.NET平台扮演着重要的角色。作为一款广泛使用…...

正则表达式 (用于灵活匹配文本的表达式)

目录 . * . 用于匹配任意单个字符&#xff0c;除了换行符。 例如使用正则表达式 a.b, 它可以匹配aab、acb、a#b * 用于匹配前一个字符零次或多次。 例如&#xff0c;使用正则表达式 ab*c&#xff0c;它可以匹配 "ac"、"abc"、"abbc"&#…...

synchronized 学习

学习源&#xff1a; https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖&#xff0c;也要考虑性能问题&#xff08;场景&#xff09; 2.常见面试问题&#xff1a; sync出…...

2024年赣州旅游投资集团社会招聘笔试真

2024年赣州旅游投资集团社会招聘笔试真 题 ( 满 分 1 0 0 分 时 间 1 2 0 分 钟 ) 一、单选题(每题只有一个正确答案,答错、不答或多答均不得分) 1.纪要的特点不包括()。 A.概括重点 B.指导传达 C. 客观纪实 D.有言必录 【答案】: D 2.1864年,()预言了电磁波的存在,并指出…...

C++八股 —— 单例模式

文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全&#xff08;Thread Safety&#xff09; 线程安全是指在多线程环境下&#xff0c;某个函数、类或代码片段能够被多个线程同时调用时&#xff0c;仍能保证数据的一致性和逻辑的正确性&#xf…...

从“安全密码”到测试体系:Gitee Test 赋能关键领域软件质量保障

关键领域软件测试的"安全密码"&#xff1a;Gitee Test如何破解行业痛点 在数字化浪潮席卷全球的今天&#xff0c;软件系统已成为国家关键领域的"神经中枢"。从国防军工到能源电力&#xff0c;从金融交易到交通管控&#xff0c;这些关乎国计民生的关键领域…...

tomcat指定使用的jdk版本

说明 有时候需要对tomcat配置指定的jdk版本号&#xff0c;此时&#xff0c;我们可以通过以下方式进行配置 设置方式 找到tomcat的bin目录中的setclasspath.bat。如果是linux系统则是setclasspath.sh set JAVA_HOMEC:\Program Files\Java\jdk8 set JRE_HOMEC:\Program Files…...

离线语音识别方案分析

随着人工智能技术的不断发展&#xff0c;语音识别技术也得到了广泛的应用&#xff0c;从智能家居到车载系统&#xff0c;语音识别正在改变我们与设备的交互方式。尤其是离线语音识别&#xff0c;由于其在没有网络连接的情况下仍然能提供稳定、准确的语音处理能力&#xff0c;广…...

消防一体化安全管控平台:构建消防“一张图”和APP统一管理

在城市的某个角落&#xff0c;一场突如其来的火灾打破了平静。熊熊烈火迅速蔓延&#xff0c;滚滚浓烟弥漫开来&#xff0c;周围群众的生命财产安全受到严重威胁。就在这千钧一发之际&#xff0c;消防救援队伍迅速行动&#xff0c;而豪越科技消防一体化安全管控平台构建的消防“…...

【UE5 C++】通过文件对话框获取选择文件的路径

目录 效果 步骤 源码 效果 步骤 1. 在“xxx.Build.cs”中添加需要使用的模块 &#xff0c;这里主要使用“DesktopPlatform”模块 2. 添加后闭UE编辑器&#xff0c;右键点击 .uproject 文件&#xff0c;选择 "Generate Visual Studio project files"&#xff0c;重…...

uni-app学习笔记三十五--扩展组件的安装和使用

由于内置组件不能满足日常开发需要&#xff0c;uniapp官方也提供了众多的扩展组件供我们使用。由于不是内置组件&#xff0c;需要安装才能使用。 一、安装扩展插件 安装方法&#xff1a; 1.访问uniapp官方文档组件部分&#xff1a;组件使用的入门教程 | uni-app官网 点击左侧…...

WEB3全栈开发——面试专业技能点P4数据库

一、mysql2 原生驱动及其连接机制 概念介绍 mysql2 是 Node.js 环境中广泛使用的 MySQL 客户端库&#xff0c;基于 mysql 库改进而来&#xff0c;具有更好的性能、Promise 支持、流式查询、二进制数据处理能力等。 主要特点&#xff1a; 支持 Promise / async-await&#xf…...