云集电商:如何通过 OceanBase 实现降本 87.5%|OceanBase案例

云集电商,一家聚焦于社交电商的电商公司,专注于‘精选’理念,致力于为会员提供超高性价比的全品类精选商品,以“批发价”让亿万消费者买到质量可靠的商品。面对近年来外部环境的变化,公司对成本控制提出了更高要求,尤其是服务器与人力成本两大领域。当前,服务器成本已占据公司总成本的85%以上,因此,优化成本结构,实现高效降本,已成为我们当前工作的重中之重。

作为 DBA,以更低的成本支撑公司的运营是一项重要的成就;对个人而言,可以学到很多知识和方法论,包括成本分析和评估方法、服务器优化和调整方法、人力成本优化和提升方法等。

业务痛点

在做成本优化前,我们需要对自身业务情况及现有痛点有全局的了解。目前很多互联网公司都面临着架构上的痛点,云集也不例外。如下图所示,最上层的应用层采用微服务架构,增加了一个缓存,这是因为电商场景会有秒杀需求,需要写入很快。

1701329029

云集主要使用腾讯云上的CDB,业务微服务的架构导致数据库实例数很多。针对每一个微服务的数据库实例,会有基础的一主一从,另外还会有一个用户从库,一般一个系统会对应三个数据库实例。

从中间箭头再往下看,业务数据库通过Flink、Canal等组件输出到大数据以后,会做数据的统计分析,生成T+0、T+1的报表。同时,也会将部分大数据分析的数据同步回业务数据库,供用户查询,形成数据的循环。

右边的话有一个Cloud DB通过OMS到OceanBase的链路,比如有一个订单系统业务,分了32个实例,有个需求是业务需要做整个系统的聚合查询,在原来的分库分表架构下无法实现,因此同步到一个OceanBase集群里面,满足业务查询的需求。以上就是云集现在的整体架构。

那么这个架构存在哪些问题?总的来说,包括四个方面。

第一,数据孤岛。从公司整体角度来看,同一个查询理论上只需要执行一次即可,但由于业务需求不同,无形之中将一份数据在很多存储系统中存储多份。导致请求量放大很多,执行多次。而且数据也存放多份,导致成本上升。

第二,分库分表。分库分表主要依赖于一些中间件,而每个中间件有自己的特点和适用场景,更为关键的是分库分表中间件带来很多问题,需要从业务或运维侧避免:

  • 业务侵入,业务需要设计多张表来满足不同的查询需求,所有的查询需求需要围绕分区键,增加了业务复杂度。
  • 聚合查询和关联查询变得困难,当出现跨库查询或关联查询时,需要业务将数据收集到应用层进行处理,变得异常困难。
  • 运维变得复杂,当需要扩容或缩容时,异常痛苦,需要大量运维操作进行扩容和数据搬迁, 另外当备份和恢复时,也会非常复杂和繁琐。

第三,运营成本,随着微服务进行水平拆分或者垂直拆分,导致数据库实例数大幅增加,资源成本直线升高,另外,每个实例的资源并没有得到充分利用,CPU 利用率未满20%。如果CPU 超过20%,一旦业务波动,服务器就难以支撑,需要预留一定的硬件资源。

第四,数据安全,因等保审核要求,云集需要满足至少两地三中心的容灾水平,这会带来成本的成倍上升。云集在腾讯云上为生产环境做本地备份和远程备份,在远处备份过程中,会遭遇大量运维问题,比如拉取容易失败、拉取耗时过长。另外,因为数据量过大,需要更高的流量,这也导致流量成本大幅上升。

成本优化方案

基于上述架构痛点,我们探索了几种成本优化的方案。

  • 业务架构复杂,数据流循环和其他环节冗长,故障概率较高,决定舍弃分库分表架构
  • 在数据治理和数据归档方面,归档服务器存储容量有限,无法满足需求,通过将归档数据转移到OceanBase,利用其数据压缩率高的特性,在节省存储成本的同时,变相扩展容量上限,目前无明显瓶颈。
  • 整合业务实例,在保证服务可用的情况下,尽量申请更少的服务器资源;增加服务器资源闲时利用率,比如电商业务主要在白天运行,晚上业务较少的时候就可以生成T0、T1报表数据,充分利用资源。
  • 考虑使用具备HTAP特性的分布式数据库替代传统数据库,将在线和分析的业务集中在一套集群中完成,简化数据链路环节,降低业务架构复杂度,减少运维人力。并且在相同业务负载的情况下,发挥分布式数据库高性能的优势,使用更少的机器资源,优化成本。

上述的成本优化方案面临的阻力有哪些呢?

一个新的架构体系需要时间来验证是否能支持现有业务的发展,需要在架构替换前期证明它可以支持业务的发展,并且说服开发团队增加工作量以支持架构改造、学习和适应新技术是值得的。因此,人力和新技术的学习成本是云集架构改造面临的主要阻力。

云集+ OceanBase 的成本优化方案

在整个成本优化过程中,主要考虑了以下几个原则:

  • 稳定性强,保证整体业务的稳定和无感知。
  • 兼容性高,简化新技术和架构的应用,降低开发难度,减少学习成本。
  • 不过度优化,避免因过度优化而降低业务的波动能力。

之所以选择 OceanBase 作为数据存储解决方案,主要是因为:

  • OceanBase 与 MySQL 的兼容性,减少开发工作量和版本的稳定性。
  • OceanBase 的吞吐量和生态系统的支持良好。
  • HTAP 能力和水平扩展能够满足我们的 TP 和 AP 场景的业务需求。

1701329130

通过引入OceanBase,业务由原来的CDB + ETL + 大数据的架构转变为一套OceanBase集群支撑HTAP业务,减少了数据链路的中间环节,同一套技术栈同时降低开发工作量,通过OceanBase RTO<8s、RPO=0的高可靠性也满足了等保审核的需求,实现了成本上的优化。

1701329144

总结

本文介绍了基于目前大环境下降本的需要,云集的数据库架构以及使用痛点,探索了实施降本过程中的方案。最终通过引入OceanBase分布式数据库,在满足业务场景的基础上,通过其高性能、高压缩、高可靠、HTAP的特性,为云集节约了机器、存储、人力运维的成本。近几年的大环境变化使得云集业务流量减少了很多,由原来每月的服务器成本峰值达到800多万,降为现在不到100万。

这一成本降低的结果是非常显著的。通过技术的优化和适应环境变化,成功地实现了成本的大幅度减少。这不仅仅是对云集来说,也是对其他企业进行成本优化的一个启示。通过优化技术和适应环境,我们可以有效降低成本,提高效率,获得更好的经济效益。

未来,我们也会不断尝试OceanBase新的特性,比如最新的4.2.1 LTS版本,已经在测试当中,希望OceanBase在云集的业务场景里能带来更大的价值。

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

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

相关文章

【React.js】AntDesignPro左侧菜单栏栏目名称不显示的解决方案

作者&#xff1a;CSDN-PleaSure乐事 欢迎大家阅读我的博客 希望大家喜欢 使用环境&#xff1a;WebStorm 目录 问题概述 原因 解决方案 解决方法 潜在问题修改 最终效果呈现 额外内容 管理员界面路由配置 WebStorm背景更换 法一&#xff1a; 法二&#xff1a; 问题概…

一文透彻了解电容

文章目录 一、电容的作用二、电容的选择三、电容的分类四、多层陶瓷电容五、钽电容替代电解电容的误区六、旁路电容的应用问题七、电容的等效串联电阻 ESR八、电解电容的电参数九、电容器参数的基本公式十、电源输入端的 X,Y 安全电容 一、电容的作用 作为无源元件之一的电容&…

Python OpenCV 傅里叶变换

傅里叶变换 傅里叶变换比较难和不容易理解&#xff0c;有错的地方请见谅 傅里叶原理表明&#xff1a;任何连续测量的时序或信号&#xff0c;都可以表示为不同频率的正弦波信号的无限叠加。也就是说&#xff0c;傅里叶变换是一种特殊的积分变换&#xff0c;它能将满足一定条件的…

如何调整pdf的页面尺寸

用福昕阅读器打开pdf&#xff0c;进入打印页面&#xff0c;选择“属性”&#xff0c;在弹出的页面选择“高级” 选择你想调成的纸张尺寸&#xff0c;然后打印&#xff0c;打印出来的pdf就是调整尺寸后的pdf

WPF中如何简单的使用CommunityToolkit.Mvvm创建一个项目并进行 增删改查

目录 开始前准备的数据库dbblog如下&#xff1a; 第一步&#xff1a;创建项目后下载四个NuGet程序包 第二步&#xff1a;删除原本的MainWindow.XAML文件 并创建如下的目录结构 然后在View文件夹下面创建Login.XAML和Main.XAML 并且在App.XAML中将启动项改为Login.X…

基于python多准则决策分析的汽车推荐算法设计与实现

摘要 随着汽车市场的快速发展和消费者需求的多样化&#xff0c;汽车选择变得愈加复杂。为了帮助消费者在众多汽车选项中做出明智的决策&#xff0c;基于多准则决策分析&#xff08;MCDA&#xff09;的汽车推荐算法应运而生。本研究旨在设计和实现一种基于 Python 的汽车推荐系…

xftp连接中不成功 + sudo vim 修改sshd_config不成功的解决方法

我们使用sudo vim不成功&#xff0c;但是我们使用sudo su就可以 了&#xff01; root用户权利更大&#xff01; 喵的&#xff0c;终于成功了&#xff0c;一个xftp连接半天不成功。&#xff08;添加上面的内容就可以连接成功了↑&#xff09;

vue:Transition

1. Transition 1. 基本用法 <Transition> 是Vue 提供的 “内置组件动画组件”&#xff0c;与一般的CSS过渡动画不同的是&#xff0c;它通过在特点时刻给元素或组件增加、移除类名来实现——在一个元素或组件进入和离开 DOM 时应用过渡动画。 下面是一个基本用法&#…

Python 中的字符串匹配算法

在 Python 中&#xff0c;字符串匹配算法用于在一个字符串中寻找一个子串的出现位置&#xff0c;这是许多文本处理任务的核心。下面我将介绍几种常用的字符串匹配算法以及它们在 Python 中的实现方式。 1、问题背景 在 Python 中&#xff0c;字符串匹配是一个非常重要的操作&a…

配置本地策略路由示例

组网需求 RouterA与RouterB间有两条链路相连。 用户希望实现本机下发的不同长度的报文通过不同的下一跳地址进行转发&#xff0c;其中&#xff1a; 长度为64&#xff5e;1400字节的报文设置192.168.1.2作为下一跳地址。长度为1401&#xff5e;1500字节的报文设置192.168.2.2…

【大数据学习 | kafka高级部分】文件清除原理

2. 两种文件清除策略 kafka数据并不是为了做大量存储使用的&#xff0c;主要的功能是在流式计算中进行数据的流转&#xff0c;所以kafka中的数据并不做长期存储&#xff0c;默认存储时间为7天 那么问题来了&#xff0c;kafka中的数据是如何进行删除的呢&#xff1f; 在Kafka…

推荐一款基于Flash的交互式园林设计工具:Garden Planner

Garden Planner是一款由Artifact Interactive开发的基于Flash的交互式园林设计工具。它允许用户以拖放的方式安排植物、树木、建筑物和各种对象&#xff0c;使园林规划变得简单直观。此外&#xff0c;Garden Planner提供工具来快速创建铺路、路径和围栏&#xff0c;帮助用户设计…

微信小程序开发,诗词鉴赏app,诗词推荐实现(二)

微信小程序开发&#xff0c;诗词鉴赏app&#xff08;一&#xff09;&#xff1a; https://blog.csdn.net/jky_yihuangxing/article/details/143501681微信小程序开发&#xff0c;诗词鉴赏app&#xff0c;诗词推荐实现&#xff08;二&#xff09;:https://blog.csdn.net/jky_yih…

关于诊断中的各种时间参数

前言&#xff1a; 因为不会转载&#xff0c;故在这里贴出原文连接&#xff0c;写的非常好&#xff01;条理清晰&#xff0c;一遍看懂king110108 原文链接&#xff1a;UDS之时间参数总结篇_uds时间参数-CSDN博客 以下内容是我自己对这篇文章的一些备注和理解&#xff0c;以及从测…

技术干货|HyperMesh CFD功能详解:虚拟风洞 Part 2

在上期 Part 1文章中&#xff0c;我们介绍了从 v2023 版本开始&#xff0c;虚拟风洞VWT&#xff08;Virtual Wind Tunnel&#xff09;模块合并到HyperMesh CFD中。用户在VWT模块中完成LBM求解器ultraFluidX的前处理设置&#xff0c;导出参数文件XML和模型文件STL&#xff0c;并…

H7-TOOL的CAN/CANFD助手增加帧发送成功标识支持, 继续加强完善功能细节

2.27版本固件正式携带此功能&#xff0c;包括之前做的负载率检测和错误信息展示也将集成到这个版本固件中。 对于接收&#xff0c;我们可以直接看到效果&#xff0c;而发送不行&#xff0c;所以打算在发送的地方展示下发送成功标识。CAN发送不像串口&#xff0c;需要等待应答后…

mysql5安装

1.下载安装包 https://downloads.mysql.com/archives/community/ mysql-5.7.44-1.el7.x86_64.rpm-bundle.tar tar -xvf mysql-5.7.44-1.el7.x86_64.rpm-bundle.tar2.安装依赖 yum -y install perl yum -y install net-tools yum install numactl libaio libaio-devel -y也可…

大模型应用编排工具Dify二开之工具和模型页面改造

1.前言 简要介绍下 dify&#xff1a; ​ 一款可以对接市面上主流大模型的任务编排工具&#xff0c;可以通过拖拽形式进行编排形成解决某些业务场景的大模型应用。 背景信息&#xff1a; ​ 环境&#xff1a;dify-0.8.3、docker-21 ​ 最近笔者在做 dify的私有化部署和二次…

开放寻址法、链式哈希数据结构详细解读

一、开放寻址法&#xff08;Open Addressing&#xff09; 1. 定义 开放寻址法是一种哈希冲突解决策略&#xff0c;所有元素都存储在哈希表中。当发生冲突时&#xff0c;即两个键计算出的哈希值相同时&#xff0c;会按照一定的探查序列查找下一个可用的位置来存储新元素。 2.…

并查集(基础学习与应用)

并查集 基本原理&#xff1a; 对于多个集合&#xff0c;每个集合中的多个元素用一颗树的形式表示&#xff0c;根节点的编号即为整个集合的编号&#xff0c;每个树上节点存储其父节点&#xff0c;使得当前集合的每个子节点都可以通过对父节点的询问来找到根节点&#xff0c;根…