架构10- 理解架构的模式4-数据管理模式

一、分片模式:将数据存储区分为多个水平分区或分片,以便更好地管理和处理大量数据。

当业务量达到单个业务表通过缓存和队列削峰等措施后的平均TPS超过1万时,我们不得不考虑数据库分片。

图片

在进行分片之前,我们需要根据数据分布、压力情况和业务逻辑来确定分片的方式,可以是按条件、范围或哈希等策略(三张图展示了三种策略)。此外,还需要对业务代码进行改造,以消除所有不支持的SQL语句。还要确定采用硬编码方式、框架方式或中间件方式进行数据路由。

    在进行分片后,我们需要运维工具来对这些分片数据进行统一的索引加工等操作。最好有一个数据仓库,可以汇总所有数据,方便进行adhoc查询。同时,最好有辅助工具可以帮助我们确定数据会分布在哪个分片中。

二、静态内容托管模式:将静态内容放置在云存储服务中,并直接向客户端传送这些内容,以提高访问效率。

CDN的使用通常有两种方式:主动推送数据到CDN存储和在CDN配置回源站拉取。对于文件类资源,一般使用主动推送数据;而对于静态资源类,一般使用回源方式。

在使用CDN时,需要考虑以下问题:

1. CDN如何认定同一个文件:CDN通常使用文件的URL地址作为唯一标识来认定同一个文件。

2. 缓存刷新工具:CDN提供了缓存刷新工具,可以手动触发刷新边缘节点的缓存,以保证最新的内容能够及时被边缘节点获取。

3. 源站文件一致性:为避免问题,源站需要保持相同文件的一致性,最好是通过版本变化来改变文件名,而不是不断替换同一个文件。这样可以避免边缘节点缓存了不同版本的文件,导致各种奇怪的问题。

4. 排查问题困难性:由于使用CDN后,不同地区的用户访问的是CDN节点上的数据,一旦出现问题,排查和定位可能会比较困难。因此,建议引入前端的错误处理框架,记录前端脚本错误时的调用栈,以便更方便地定位问题。

换句话说:CDN通过URL地址来认定同一个文件,同时提供了缓存刷新工具来刷新边缘节点的缓存。为确保一致性,源站需要保持相同文件的一致性,并尽量避免直接替换同一个文件。当使用CDN后,由于用户访问的是CDN节点上的数据,问题排查可能会比较困难,因此建议引入前端错误处理框架来记录脚本错误以便快速定位问题。

三、索引表模式:为经常被查询的数据存储区中的字段创建索引,以加快数据检索速度。

图片

考虑到以下原因,我们会考虑使用索引表:尽管我们的关系型数据库通常支持非聚集索引(除了主键之外的索引),但在某些情况下,直接在大表上创建多个索引可能不利于性能。当我们对数据进行分片后,只能通过分片键来查询数据,无法使用其他维度进行查询。为了以空间换时间,我们可以单独保存某个维度的复合查询结果作为主键方式的索引数据。然而,需要注意的是,索引只有在数据区分度较高的情况下才能发挥其价值。如果有超过90%的数据具有相同的值,那么使用索引进行查询的性能可能会略低于全表扫描。

换句话说:出于性能考虑,我们会考虑使用索引表。尽管关系型数据库支持非聚集索引,但在某些情况下,对大表创建多个索引可能影响性能。在进行数据分片后,我们不能使用分片键以外的维度进行查询。为了加快查询速度,我们可以将某个维度的复合查询结果作为主键单独保存一份数据。然而,需要注意的是,只有当数据的区分度较高时,索引才能发挥作用。如果有超过90%的数据具有相同的值,那么使用索引进行查询的性能可能稍差于全表扫描。

关注公众号:领取架构师面试资料

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Qt编程之仿gnome-terminal终端样式 +颜色文字显示

Qt仿linux 终端样式 颜色文字 1.说再多废话不如直接show code2.实现效果 本文采用QTextBrowser作为文本显示窗口,进行文本的显示。本文实例实现的效果并没有终端的输入效果,这里只是提供一些仿终端样式思路。 1.说再多废话不如直接show code 1.ui文件…

SpringMVC入门案例

引言 Spring MVC是一个基于MVC架构的Web框架,它的主要作用是帮助开发者构建Web应用程序。它提供了一个强大的模型驱动的开发方式,可以帮助开发者实现Web应用程序的各种功能,如请求处理、数据绑定、视图渲染、异常处理等。 开发步骤 1.创建we…

XSS漏洞:xss.haozi.me靶场通关

xss系列往期文章: 初识XSS漏洞-CSDN博客 利用XSS漏洞打cookie-CSDN博客 XSS漏洞:xss-labs靶场通关-CSDN博客 XSS漏洞:prompt.mi靶场通关-CSDN博客 目录 0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0A 0x0B 0x0C…

JS取余运算符 %,ES2023 新增数组方法Array.at

取余运算符(%)的作用就是用来两个操作数进行相除运算之后的余数。 注意,两个操作数取余是有循环范围的,这个范围为 0 - 第二个参数 - 1。 如下图: 对于6取余的话,得到的取余数据就会一直在0-5之间进行循环…

克魔助手工具详解、数据包抓取分析、使用教程

目录 摘要 引言 克魔助手界面 克魔助手查看数据捕获列表 数据包解析窗口 数据包数据窗口 克魔助手过滤器表达式的规则 抓包过滤器实例 总结 参考资料 摘要 本文介绍了克魔助手工具的界面和功能,包括数据包的捕获和分析,以及抓包过滤器的使用方…

精品基于Uniapp+springboot农产品安全领域的信息采集系统App

《[含文档PPT源码等]精品基于Uniappspringboot农产品安全领域的信息采集系统App》该项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程、包运行成功! 软件开发环境及开发工具: 开发语言:Java 后台框架:sprin…

arcgis javascript api4.x以basetilelayer方式加载arcgis发布的栅格切片服务

需求: 以arcgis js api的basetilelayer加载arcgis发布的栅格切片服务 效果图: 其中和tileinfo和lods,这样获取: https://map.geoq.cn/arcgis/rest/services/ChinaOnlineCommunity/MapServer/?fpjson urltemplate: …

C++发展史

目录 什么是C C的发展史 C的重要性 C在实际工作中的应用 “21天教你学会C” 什么是C 先看看祖师爷,记得多拜拜🤭 C语言是结构化和模块化的语言,适合处理较小规模的程序。对于复杂的问题,规模较大的 程序,需要高度…

算法学习系列(二十三):最小生成树问题

目录 引言一、最小生成树问题二、Prim算法三、Kruskal算法 引言 这个最小生成树问题其实思想都非常的简单,然后代码也是比较简单的,很多人听到这个问题觉得难,比如说跟我一样,主要是因为不知道这个算法,就是一种未知的…

原生SSM整合(Spring+SpringMVC+MyBatis)案例

SSM框架是Spring、Spring MVC和MyBatis三个开源框架的整合,常用于构建数据源较简单的web项目。该框架是Java EE企业级开发的主流技术,也是每一个java开发者必备的技能。下面通过查询书籍列表的案例演示SSM整合的过程. 新建项目 创建文件目录 完整文件结…

CRM系统的销售漏斗是什么?如何提升销售效率?

​ CRM管理系统有许多重要的功能,很多人不太了解什么叫销售漏斗。网上关于CRM销售漏斗的讲解。看完以后仿佛懂了,细心想了想,好像没说透。下面说说CRM销售漏斗如何指导销售人员行动。简单来说就是分解销售目标、规划销售时间、预测销售业绩。…

【时间复杂度】时间复杂度优化法则简讲

一、引言 时间复杂度是衡量算法运行效率的一项重要指标,它描述了随着输入规模的增加,算法的执行时间如何增长。在算法设计与分析中,我们经常面临着优化时间复杂度的任务,以便提高程序的性能。本博客将深入探讨时间复杂度的优化法…

【MYSQL】事务隔离级别

脏读、幻读、不可重复读 脏读 一个事务正在对一条记录做修改,在这个事务完成并提交前,另一个事务也来读取同一条记录,读取了这些未提交的“脏”数据,并据此做进一步的处理,就会产生未提交的数据依赖关系。这种现象被形…

删除edge浏览器文本框储存记录值以及关闭自动填充

当我们点击输入框时总会出现许多以前输入过的信息。 一、删除edge浏览器文本框储存记录值 1、首先按下↓键选中你想删除的信息 2、然后按ShiftfnDel鍵(MAC)/ShiftDel鍵(Win),就可以成功删除。 二、关闭自动填充。 1、在地址栏输入edge://wallet/settings跳转到以…

语言大模型的分布式训练与高效微调指南

原文:语言大模型的分布式训练与高效微调指南 - 知乎 目录 收起 1 分布式训练 2 ZeRO驱动的数据并行 3 全分片数据并行 4 实现 5 高效微调 6 实践指南 7 关于DeepSpeed和FSDP的更多内容 OneFlow编译 翻译|杨婷、宛子琳 最近语言大模型&#xff…

[windows]给WSL安装一个桌面gnome版本

【安装前提】 请提前安装好WSL系统,最好ubuntu系统>18.04 【安装步骤】: WSL 不支持 systemd 而 Gnome 桌面又是基于 systemd,所以先解决这个问题。 sudo apt update sudo apt install git git clone https://github.com/DamionGans/u…

redis数据安全(五)事务

一、概念: 1、介绍:Redis 事务的本质是一组命令的集合。事务支持一次执行多个命令,一个事务中所有命令都会被序列化。在事务执行过程,会按照顺序串行化执行队列中的命令,其他客户端提交的命令请求不会插入到事务执行命…

尚无忧【无人共享空间 saas 系统源码】无人共享棋牌室系统源码共享自习室系统源码,共享茶室系统源码

可saas多开,非常方便,大大降低了上线成本 UNIAPPthinkphpmysql 独立开源! 1、定位功能:可定位附近是否有店 2、能通过关键字搜索现有的店铺 3、个性轮播图展示,系统公告消息提醒 4、个性化功能展示,智能…

【JavaEE进阶】 图书管理系统开发日记——壹

文章目录 🌲序言🌴前端代码的引入🎋约定前后端交互接口🍃后端服务器代码实现🚩UserController.java🚩BookController.java ⭕总结 🌲序言 该图书管理系统,博主将一步一步进行实现。…

秒懂Precision精确率、Recall召回率-附代码和案例

经常有同学目标检测评价指标含糊不清这次带你通俗易懂了解该知识 强烈推荐的博客: 更多有用知识,请点我 //☏:qq1309399183// 深度学习视觉必做项目 计算 precision(精确率)**和 recall(召回率)是评估分类…