分库表数据倾斜的处理让我联想到了AKF模型 | 京东云技术团队

news2024/11/22 22:26:17

1 背景

最近在做需求的时候需要在一张表中增加一个字段。

这张表情况如下:

1、拆分了多个库多张表

2、库表拆分按表中商户编码字段hash之后取模进行拆分

由于库表拆分按照商户编码,有些大商家的单子数量远远要高于其他普通商家,这样就造成了严重的数据倾斜。

在增加字段的时候尝试多种办法,执行多次都添加失败。

虽然通过一些特殊手段还是可以将字段加上的,

但是如果这张表中的数据一直持续下去,导致的结果可能是这张表越来越难以扩展,并且随着数据量的增加还对未来造成一定的隐患。

所以决定对此表再次进行拆分,这时让我想起多年前看的一本书《架构真经》在第二章中介绍分而治之的方法论,其中AKF模型很实用,对我的启发很大。

接下来就简单介绍下。

关于《架构真经》的介绍:本书全面概括了互联网技术架构的理念、设计、实施和监控方面的相关场景、条件和方法,是一本有关设计和构建可扩展性系统的深入且实用的指南。作者马丁·阿伯特和迈克·费舍尔已经为数以百计高速增长公司的上千个不同系统提供了帮助,凭借着多年积累的实战经验,提炼出50条互联网技术架构原则,可以支持几乎任何高速增长公司的扩展。

2 理论模型介绍

关于AKF简介

AKF是以AKF公司的合作伙伴的名字(AKF Partner)命名的,AKF扩展立方体主要围绕系统扩展为主题进行介绍。提出了X、Y、Z三种扩展方向。通过不同方向的扩展来达到接近无限扩展的目的。

在这里插入图片描述

X轴是水平扩展,通俗说就是复制多份数据或服务

Y轴是针对动词(服务)或名词(资源)的拆分,或者说就是业务上的拆分

Z轴是根据实际情况对客户独特属性进行拆分(ID,名称,地理位置等)

X,Y,Z轴分别代表了不同的扩展方向,下面简单解释一下:

X轴代表无差别的克隆服务和数据库。实际场景中我们的应用服务,以及数据库数据的副本理论上是可以无限扩展的。在每个克隆实体间无差别的分配任务,每个克隆实体都可以完成其他克隆实体的任务,无论任务分配给了谁。比如应用服务复制部署了多份,通过负载均衡分发请求,每个应用都可以处理其他应用的请求。

X轴优点:成本低,操作与应用简单

X轴缺点:X轴无差别的处理请求,要求请求之间尽量不要有依赖关系,或者中间状态。数据集过大依然是风险,同时随着系统变大业务变多指令集耦合也会变得很多。

Y轴代表的是按照交易处理的数据类型、交易任务的类型或两者组合分割的工作责任。我们一般用动词或资源进行分离,比如:登录,查询,结算等等。把同样的工作分割成流水线式的工作流或并行的处理流,Y轴代表的更多是对工作的“工业革命”,将耦合紧密的工作进行进行专门处理。Y轴实质代表责任、行动或数据。实施成本一般比X轴扩展代价高。假如有100个人分别造100辆车,每个人负责造一辆,完成造车全部的任务,不如让100个人执行子任务,如发动机的安装、喷漆、四轮定位。这样就会减少前后交互所需要的上下文信息,更专注做某件事情。内聚性更高,耦合性更低。Y轴主要解决指令集的扩展性。

Y轴优点:可以解决指令集与数据集的约束与耦合,充分体现分而治之的思想,代码简单,故障隔离等。

Y轴缺点:成本相对较高,系统庞大,业务复杂

Z轴通常基于请求或客户的信息进行分割。比如我们在拆分客户时会有 “普通会员”和“vip会员“之分,服务“普通会员”与服务“vip会员”可能会有不同。vip会员可能会有更多的服务项目,会有单独的人在处理vip会员的事情。但是他们都是会员。再比如一些客户可能需要专门的账单、付款条件和基于业务量的特别互动。我们可能安排最好的财务代表、甚至特别的经理负责一个或多个客户,以专门处理他们的独特需求。Z轴主要解决数据集的扩展性。

Z轴分割是成本最高的分割方向,Z轴分割有助于提高交易和数据的可扩展性,如果实施得当也有助于扩展指令集和过程

Z轴优点:解决单一数据集过大问题,可以应对数据指数增长。

Z轴缺点:成本最高,很难解决指令集问题。

3 理论实践

通过上面的理论介绍,接下来指导我们对实际业务场景的拆分。

针对文章开头提到的某些大商户单子远远多余其他商户的情况,很显然这是数据集的扩展性导致的问题。

更应该在Z轴上进行扩展拆分,也就是通过商户的特殊性,进行再次拆分来平衡数据。

这里的特殊性可以是表中字段的某一个属性,比如订单编号、创建时间等等。这就需要我们根据实际情况,既要拆分的均匀又要拆分之后能满足未来几年的发展,同时还要满足现有业务的支持。

4 总结

通过对AKF模型的学习我们在工作实践中如果遇到类似的情况可以按照这个模型进行对系统拆分。当然我们也不要过度使用。不同的业务或者场景可能使用其中一个就足够用了,但是又有其他一些场景,已经按照XYZ轴拆分过一次了但是不够满足需求,可以再次在三个轴之一再次进行拆分,已达到满足业务需要的目的。

XYZ三个轴的扩展方向每个都有优缺点,要准确识别场景进行使用,或结合使用互补优缺点。

作者:京东保险 张永刚

来源:京东云开发者社区 转载请注明来源

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

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

相关文章

Matlab论文插图绘制模板第113期—带箭头标记的图

之前的文章中,分享了Matlab带线标记的图: 带阴影标记的图: 进一步,分享一下带箭头标记的图,先来看一下成品效果: 特别提示:本期内容『数据代码』已上传资源群中,加群的朋友请自行下载…

蓝桥杯官网练习题(搭积木)

类似题目: https://blog.csdn.net/s44Sc21/article/details/132758982?csdn_share_tail%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22132758982%22%2C%22source%22%3A%22s44Sc21%22%7Dhttps://blog.csdn.net/s44Sc21/article/deta…

数据在内存中的存储——练习2

题目: int main() {char a -1;signed char b-1;unsigned char c-1;printf("a%d,b%d,c%d",a,b,c);return 0; }思路分析: signed 是有符号的意思unsigned是无符号的意思练习2是无符号类型以有符号类型打印 注意: char是有符号还是无…

uni-app 前端项目(vue)部署到本地win系统Nginx上

若依移动端的项目:整合了uview开源ui框架, 配置后端请求接口基本路径地址: 打包复现到nginx下: 安装个稳定版本的:nginx-1.24.0 部署配置: 增加了网站:8083端口的, 网站目录在ngi…

C++面试/笔试准备,资料汇总

文章目录 后端太卷,建议往嵌入式,qt,测试,音视频,C一些细分领域投简历。有任何疑问评论区聊,我看到了回复 C面试/笔试准备,资料汇总自我介绍项目实习尽可能有1.编程语言:一.熟悉C语言…

玩转金融新“绿”潮,银行纷纷亮大招

在《开辟绿色金融新赛道,看银行如何“向绿而行”》内容中,我们带大家了解了商业银行绿色金融研究背景、规划与能力建设。今天,我们将继续带大家了解商业银行绿色金融实践路径中的绿色信贷产品、绿色债券产品及绿色投资。 在绿色金融实践中&a…

模板学堂|数据可视化仪表板大屏设计流程梳理

DataEase开源数据可视化分析平台于2022年6月正式发布模板市场(https://dataease.io/templates/)。模板市场旨在为DataEase用户提供专业、美观、拿来即用的仪表板模板,方便用户根据自身的业务需求和使用场景选择对应的仪表板模板&a…

数据在内存中的存储——练习1

题目: int main() {int a[4] { 1,2,3,4 };int* ptrl (int*)(&a 1);int* ptr2 (int*)((int)a 1);printf("%x,%x",ptr1[-1], *ptr2);return 0; } 思路分析: int* ptrl (int*)(&a 1); ptr1[-1] &a表示的是整个数…

Rapid普通版DVSSL

Rapid普通版DVSSL,是一种单域名SSL证书,很多人买的平台,比如阿里云、腾讯云可能比较贵。 所以公布一下目前Gworg售价是:190元/年,包括技术支持等其它服务。 1、可以帮助域名认证。 2、可以帮助配置SSL证书。 3、有…

ChatGPT AIGC 一分钟列举10个Xlookup案例,快速掌握

Xlookup函数是Excel新版本中的新出的一个函数功能涵盖Vlookup,Hlookup,index+match等相关功能。 `XLOOKUP` 是 Excel 中的一个功能强大的查找函数,它用于查找和返回一个值在数组或范围中的对应值。`XLOOKUP` 函数可以替代 `VLOOKUP` 和 `HLOOKUP`,并提供了一种更直观和灵活…

堆与栈的区别

OVERVIEW 栈与堆的区别一、程序内存分区中的堆与栈1.栈2.堆3.堆&栈 二、数据结构中的堆与栈1.栈2.堆 三、堆的深入1.堆插入2.堆删除:3.堆建立:4.堆排序:5.堆实现优先队列:6.堆与栈的相关练习 栈与堆的区别 自整理,…

重庆两融利率最低给到多少,利率可以调整吗?

​ 在金融市场中,融资融券是投资者常用的一种加杠杆的金融手段。在重庆地区,融资融券也是广泛应用的投资方式。融资是指投资者向券商借入资金进行股票交易,而融券则是指投资者向券商借入股票进行卖出交易。这两个交易方式都需要支付利息费用…

学习记忆——图像篇——图像记忆

一、图像记忆原理 我们要记忆的内容一般包括图像、声音、文字和 数字这几种,按由易到难的顺序将它们排列: 图像——声音——文字——数字 记忆材料 图像 二、超级记忆的基本方法 记忆的三种类型: 1、瞬间记忆 2、短期记忆 短效记忆、长效记…

LED显示屏控制软件发展历程

LED显示屏控制软件的发展历程经历了多个阶段,从最初的简单控制到今天的复杂、高度定制化的解决方案。免费提供户外led显示屏解决方案。 以下是LED显示屏控制软件的主要发展历程: 早期单机控制: 早期的LED显示屏控制软件通常是基于单台计算机的…

smallWhiteDot Tech Suppor

Preview mail: 352056038qq.com

【测试开发】 测试题总结

祝天天开心 文章目录 1. 测试用例编写2. 如何对bug进行描述3. bug状态转换4. 测试人员和开发人员产生争执5. 登录功能测试用例设计6. 测试生命周期7. 1. 测试用例编写 编写水杯的测试用例 注意,测试用例有一个万能公式 功能测试性能测试页面测试安全性测试兼容性测…

【FAQ】视频监控管理平台/视频汇聚平台EasyCVR安全检查相关问题及解决方法3.0

智能视频监控系统/视频云存储/集中存储/视频汇聚平台EasyCVR具备视频融合汇聚能力,作为安防视频监控综合管理平台,它支持多协议接入、多格式视频流分发,视频监控综合管理平台EasyCVR支持海量视频汇聚管理,可应用在多样化的场景上&…

重庆电建:数据中台建设探索与实践

“数字中国”建设浪潮下,强化数据能力、激发数据价值成为各行各业实现高质量发展的重要抓手和关键引擎。然而,确保数据质量、一致性和充分利用其价值,对中大型企业而言,依然具有挑战。数据中台,能够为这些难题提供有效…

Altium Designer如何查看制定了哪些快捷键?

随着时代高速发展,Altium Designer(AD)、Allegro、Pads等是全球主流的三大EDA软件,因此越来越多工程师被要求学习这些软件,在使用EDA软件设计PCB过程时,熟悉和合理配置快捷键是提高工作效率的关键之一&…

Cesium 地理坐标系和投影坐标系

Cesium 地理坐标系和投影坐标系 投影坐标系墨卡托投影(Mercator projection)高斯-克吕格投影(Gauss-Kruger)UTM投影(Universal Transverse Mercator)网络墨卡托投影(Web Mercator) 地…