架构训练营学习笔记:4-3存储架构模式之分片架构和分区架构

news2025/2/3 15:17:42

分片架构的本质:

分片架构能提升写性能和存储性能,对应的主备架构的本质是备份,主从架构本质提升读性能。

 分片架构的两个关键点:分片规则跟路由规则

分片规则:

选择基数比较大的某个数据键值,让数据均匀分布,避免热点切片 

  1. 基数Cardinality。被选的数据维度取值范围
  2. 均匀。数据在取值范围内是均匀分布的

分片数据
主键 :适合主业务数据,例如数据库分片常用的用户ID、订单ID,Redis分片的key,MongoDB的文档ID

这里是原则,具体落地得验证,比如订单ID之前遇到老的雪花算法,偶数偏多,数据不均匀,该怎么处理?
时间:适合流水型业务,例如创建日期、IoT事件、动态
分片规则
Hash分片  

 1. sharding key=hash(原始键值)分布均匀,但是不支持范围查询
2. 扩容服务器麻烦,需要做数据迁移
范围分片    

1. 分布可能不均匀,支持范围查询
2. 方便扩容新服务,无需迁移历史数据

路由规则:

业务服务器如何找到数据

配置中心 

  1. 由专属的配置中心记录分片信息,客户端需要向配置中心查询分片信息,然后发起读写操作
  2. 可以支持超大规模集群,节点数量可以达到几百上千
  3. 架构复杂,一般要求独立的配置中心节点,配置中心本身又需要高可用,例如MongoDB用的是replica set,HDFS用的是ZooKeeper

路由转发

   

  1. 每个节点都保存所有路由信息,客户端请求任意节点皆可
  2. 架构相对简单一些,一般通过gossip协议来实现分片信息更新
  3. 无法支持超大规模集群,建议集群数量在100以内(李老师建议50以内)。

分片高可用方案1:独立备份

存储系统已经支持节点级别的复制,redis,mangodb,mysql

分片高可用方案2:互相备份

案例  :HDFS、ES

二分区架构

分区 是按地区分,通过冗余IDC来避免城市级别的灾难,并提供就近访问

DNS:标准协议,通用,但基本只能实现就近接入的路由

GSLB:非标准,需要独立开发部署,功能非常强大,可以做状态监测、基于业务规则的定制路由。这个没看过,不太熟悉,从效果上基于地理位置的流量负载多数据中心外,还具备检测状态。

分区备份策略:集中式  

  1. 设计简单,各分区之间并无直接联系,可以做到互不影响
  2. 扩展容易,如果要增加第四个分区(例如:西安分区),只需要将西安分区的数据复制到武汉备份中心即可,其他分区不受影响
  3. 成本较高,需要建设一个独立的备份中心

互备式

 优点:成本低,直接利用已有机房和网络

 缺点:扩展复杂

独立式

 设计简单,各分区互补影响。

扩展容易,新增加的分区只需要搭建自己的备份中心即可

缺点:成本高,每个分区需要独立的备份中心。

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

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

相关文章

第七章 集成学习

文章目录 第七章 集成学习7.1个体和集成7.2Boosting和AdaBoost7.3Bagging和随机森林7.3.1Bagging7.3.2随机森林 7.4结合策略7.4.1平均法7.4.2投票法7.4.3学习法 7.6实验:Adaboost 第七章 集成学习 7.1个体和集成 集成学习通过构建并结合多个学习器来完成学习任务&…

TS报错Cannot find module ‘xxx‘ or its corresponding type declarations

最近使用 vite vue3 ts 开发一个文本标注的 web 平台,在项目中使用了一个 js-mark 的 npm 包,但是在 import 导入后出现了 TS 报错:TS2307: Cannot find module js-mark or its corresponding type declarations.、无法解析模块 js-mark 的…

Safe Policy Optimization 复现

复现结果 在 PointGoal1、CarGoal1、Velocity-Walker2d 三个任务上测试了 RCPO,CRPO 以及 Safe-Policy-Optimization 中实现的 CPO,PPO-Lag 算法。 CarGoal PointGoal PointGoal1 和 CarGoal1 任务相对比较困难,在探索初期就很容易违反约束…

Dart语言(01)环境安装基础语法总结

0 说明: 说明:该系列教程主要是为有一定语言基础 C/C的程序员,快速学习一门新语言所采用的方法,属于在C/C基础上扩展新语言只是体系的方式。 1 Dart语言简介 Dart亮相于2011年10月10日至12日在丹麦奥尔胡斯举行的GOTO大会&…

【动手学深度学习】--09.PyTorch神经网络基础

文章目录 PyTorch神经网络基础1.层和块1.1自定义块1.2顺序块1.3在前向传播函数中执行代码 2.参数管理2.1参数访问2.1.1目标参数2.1.2一次性访问所有参数2.1.3从嵌套块收集参数 2.2参数初始化2.2.1内置初始化2.2.2自定义初始化 2.3参数绑定 3.自定义层3.1不带参数的层3.2带参数的…

Python爬虫学习笔记:1688商品详情API 开发API接口文档

1688API接口是阿里巴巴集团推出的一种开放平台,提供了丰富的数据接口、转换工具以及开发资源,为开发者提供了通用的应用接口及大量数据资源,支持开发者在1688上进行商品搜索、订单管理、交易报表及物流等方面的操作。 1688API接口主要包含以…

解密成功之道!加湿制冷设备企业如何借助CRM系统降低经营成本?

如何降低企业经营成本的同时提高效率是加湿制冷设备企业关注的重要问题。在这篇软文中,我们将探讨如何通过CRM系统来实现这一目标。企业可以借助CRM系统提高客户关系管理水平,优化销售流程,提升售后服务,从而降低成本,…

价格监测的作用有哪些

随着品牌的发展,销售渠道也会逐步增多,渠道中的问题也会逐渐显现,比如低价、乱价、窜货、假货,所以品牌一般都会进行控价治理,控价最重要的一步便是价格监测,监测出来的价格高低,能直接反应渠道…

抑郁症缓解方法:从心理到行为,全方位提升生活质量

抑郁症是一种常见的心理疾病,不仅仅是心情低落,它还伴随着一系列的身体和心理症状。在应对抑郁症时,除了积极寻求医学专业人士的帮助之外,以下这些招数也可以帮助你缓解抑郁症。 1.保持规律的生活习惯:抑郁症患者往往会…

小程序地图个性化样式组件要收费了!

地图个性化样式组件 自2023年6月29日0点起,该能力需要先购买再使用。若未购买,届时将无法使用该能力。具体购买方式见付费管理。自2023年6月29日0时起,个性化地图配置界面的入口统一为微信公众平台-付费管理,请从此入口进入&#…

STUN/TURN/ICE

RFC 5389 - Session Traversal Utilities for NAT (STUN) https://www.cnblogs.com/pannengzhi/p/5041546.html https://www.cnblogs.com/pannengzhi/p/5048965.html STUN : Session Traversal Utilities for NAT, 一个协助穿越NAT的工具,运行在UDP和TCP之上。 NA…

yolov5(v7.0)网络修改实践一:集成YOLOX的backbone(CSPDarknet和Pafpn)到yolov5(v7.0)框架中

yolov5太好用了,无论是实际做工程还是学习研究,yolov5都比较好上手,而且现在工业界yolov5也应用广泛。但是,作为学习研究,有不少在yolov5之后提出的涨点算法,还是有价值进行研究的,也便于跟进当…

高效管理物流:利用批量查询申通物流信息的技巧

随着电子商务的飞速发展,快递已经成为了现代人生活中不可或缺的一部分。作为国内一家领先的快递公司,申通快递服务广泛,覆盖全国各地。在使用申通快递服务时,我们通过申通快递单号可以方便地查询物流信息。然而,许多人…

python开发项目基于语音识别的智能垃圾分类系统的设计与实现

博主介绍:擅长Java、微信小程序、Python、Android等,专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇🏻 不然下次找不到哟 Java项目精品实战案例…

Ae 效果:CC Mr. Smoothie

风格化/CC Mr. Smoothie Stylize/CC Mr. Smoothie CC Mr. Smoothie(平滑先生)效果可以从一个图层上的两个点进行颜色采样,并将这个两点之间的颜色重映射到另一个图层上,可通过控制重映射的平滑度从而创建迷幻的外观效果。 ◆ ◆ …

图像处理之高斯滤波

文章目录 高斯函数1.一维高斯函数2. 二维高斯函数 高斯滤波1.高斯核生成2.滤波过程 高斯函数 高斯函数广泛应用于统计学领域,用于表述正态分布,在信号处理领域,用于定义高斯滤波器,在图像处理领域,二维高斯核函数常用…

创建一个类Person的简单实例

创建一个类Person的简单实例 创建一个类Person,包含以下属性:姓名(name)、年龄(age)、朋友(friends数组)、问候(sayhi方法,输出问候语,例如&#…

将TXT转化为PDF的软件,分享两个简单的方法!

在数字化时代,文档的传递和共享已经成为我们日常工作中的一部分。然而,有时我们可能需要将文本文件(如TXT格式)转换为PDF格式,以便更方便地共享、打印或存档。PDF格式的文件具有普遍的兼容性,可以在不同的设…

ESP32-C3 VSCode开发环境搭建

之前的文章 ESP32MicroPython开发环境的搭建 介绍了ESP32 MicroPython开发环境的搭建,此次计划采用ESP32-C3做小飞机主控,不太适合用MicroPython,要用ESP-IDF原生框架,因为平时一直用vs code编辑器,所以就选了vs code做…

数据库的扩展策略

了解不同的数据库扩展技术可以帮助我们选择适合我们需求和目的的合适策略。 因此,在本文中,我们将展示不同的解决方案和技术,用于扩展数据库服务器。它们分为读取和写入策略。 读取/加载 有时我们的应用程序承受着巨大的负载。为了解决这个…