后台架构设计—数据存储层

数据存储重要性:

????数据是企业最重要的财产;

????数据可靠性是企业的命根,一定要保证。

?

单机存储原理:

????存储引擎:存储系统的发动机,它决定存储系统的功能和性能;

????引擎类型:哈希存储引擎、B树存储引擎、LSM存储引擎

  1. 哈希存储引擎:基于哈希表结构 :数组+链表;支持Create\Update\Delete\随机Read
  2. B树存储引擎:基于B Tree实现,支持单条记录的CURD,支持顺序查找。RDBMS使用较多。
  3. LSM树存储引擎:对数据的修改增量保存在内存,达到一定条件再批量更新到磁盘;优势在于批量写入;劣势在于读取需合并磁盘和内存;

    1. 避免内存数据丢失:修改操作写入到CommitLog日志。

数据模型:

  1. 文件:以目录树组织,如linux,mac,windows;
  2. 关系型:每个关系是一个表格,多行组成,每行多列;
  3. 键值(Key-Value):Memcached, Tokey, Redis;
  4. 列存储型:Casadra, Hbase;
  5. 图形数据库:Neo4J, InfoGrid, Infinite Graph
  6. 文档型:MongoDB, CouchDB

事务与并发控制:

????事务4个基本属性:ACID 原子性、一致性、隔离性、持久性

???? ????并发控制:

????????????锁粒度:Process->DB->Table->Row

???????????????? 提供Read并发,Read不加锁:写时复制、MVCC

????????数据恢复:通过操作日志

????

多机存储原理:

????单机存储原理在多机存储仍然可用;多级存储基于单机存储;

????数据分布:

????????分布在多个节点,节点间负载均衡;

????????分布方式:

????????????静态:取模、uid%32;

????????????动态:一致性hash,数据飘移问题(A节点更新前出现故障,更新迁移到B节点后A节点又恢复);

????????复制:

????????????分布式存储多个副本;保证高可靠和高可用;Commit Log。

????????故障检测:

????????????心跳机制、数据迁移、故障恢复;

?

FLP定理与设计:

????FLP Impossiblity(FLP不可能性):

????????在异步消息通信场景,即使只有一个进程失败,没有任何方法能保证非失败进程达到一致性。

CAP定理与设计:

????CAP:一致性(Consistency)、可用性(Availabilty)、分区容忍性(Tolerance of network Partition)。

????一致性和可用性需要折中权衡

????分布式存储系统需要能够自动容错,也就是说分区容忍性需要保证。

2PC(Two Phase Commit)协议与设计:

????用于分布式事务;

????两类节点组成:

????????协调者(1个);

????????事务参与者(多个);

????分两阶段:

????????请求阶段:协调者通知参与者准备提交或取消事务,所有参与者都需要表决同意或者不同意。

????????提交阶段:

收到参与者所有决策后,协调者进行决策(提交或取消);

通知参与者执行操作,所有参与者都同意就提交,否则取消;

参与者收到协调者的通知后执行操作。

????2PC协议是阻塞式:

????????事务参与者可能发生故障

????????????--设置超时时间;

????????协议者可能发生故障

????????????--日志记录、备用协调者

????应用:交易订单 等;

?

Paxos协议与设计:

????作用:

????????解决节点间的一致性问题;

????????主节点宕掉,则选择新节点;

????????主节点常以操作日志的形式同步备节点。

????分两种角色:提议者(Prpposer)、接受者(Acceptor);

????执行步骤:

  1. 批准:Proposer发送accept消息给Accepter要求接受某个提议者;
  2. 确认:超一半的Accepter接受,则提议值生效,Proposer发送acknowledge消息通知所有的Accepter提议生效。

????与2PC比较::

2PC协议保证多个数据分片上操作的原子性;

????????Paxos协议保证一个数据分片多个副本之间的数据一致性;

????Paxos协议用法:

????????实现全局的锁服务或者命名和配置服务;

????????????---Apache Zookeeper

????????将用户数据复制到多个数据中心;

????????????---Google Megastore

?

数据存储层冗余:

????多个副本,实现访问的高可用性。

????如何实现:

????????数据复制:

????????????基于日志;

????????????Master-Slave:mysql\MongoDB

????????????Replic Set:MongoDB

????????双写:

????????????存储层多主对等结构;比较灵活,但数据模块层成本较高;

????数据备份:

????????冷备份:

????????????定期将数据复制到某个存储介质,是传统的数据保护手段;

????????????优点:简单、廉价,技术难度低;

????????????缺点:定期存在数据不一致;恢复数据时间长;

????????热备份:

????????????online备份;提供更好的高可用性;

????????????异步热备份:

????????????????从主存储写入即返回给应用端,由存储系统异步写入其他副本;

????????????同步热备份:

????????????????多份数据副本写入同步完成,无主从之分;

????????????????为提高性能,应用程序并发写入;

????????????????响应延迟是最慢的那台服务器;

?

数据存储层失效转移机制:

????失效确认:是否宕机、心跳;

????访问转移:访问路由到非宕机机器;存储数据完全一致;

????数据恢复:主从、日志;

时间: 2024-10-19 00:22:52

后台架构设计—数据存储层的相关文章

MVC5 网站开发之三 数据存储层功能实现

数据存储层在项目Ninesky.DataLibrary中实现,整个项目只有一个类Repository. Repository中实现增删改查询等方法供业务逻辑层调用,主要功能如下图: 具体步骤 一.添加实体框架的引用. 1.打开解决方案,选择项目Ninesky.DataLibrary,在引用上右键,选择管理NuGet程序包. 在NuGet包管理器中的浏览标签中点击EntityFramework,点击右侧栏的安装按钮.   在搜索框输入EntityFramework.zh-Hans,安装假体中文资源

亚马逊光缆被挖?——阿里工程师讲解支付宝如何架构设计数据中心

文: 周瑜 校对:李二 全文2500字,建议阅读时长7分钟 点击右上角关注我们,每天都能收到有趣的推文哦. 昨天科技圈最火的新闻应该是"AWS中国区光缆被挖,导致三星.小米等众多企业服务不可用". 又是光缆被挖,咦!?为什么是又,让我们来一起回到过去: 过往案例 2019.6.02:亚马逊光缆被挖断,国内部分地区网络出现异常 2019.3.23:施工队挖断腾讯光纤,致腾讯旗下100多款游戏受影响,损失大了 2015.5.27:由于杭州市萧山区某地光纤被挖断,造成目前少部分用户无法使用支

微服务开发中的数据架构设计

本文来自作者 陈伟荣 在 GitChat 分享的文章[微服务开发中的数据架构设计] 前言 微服务是当前非常流行的技术框架,通过服务的小型化.原子化以及分布式架构的弹性伸缩和高可用性,可以实现业务之间的松耦合.业务的灵活调整组合以及系统的高可用性.为业务创新和业务持续提供了一个良好的基础平台.本文分享在这种技术架构下的数据架构的设计思想以及设计要点,本文包括下面若干内容. 微服务技术框架中的多层数据架构设计 数据架构设计中的要点 要点1:数据易用性 要点2:主.副数据及数据解耦 要点3:分库分表

什么是最适合云数据库的架构设计?

分布式数据库技术发展多年,但是在应用.业务的驱动下,分布式数据库的架构一直在不断发展和演进. 开源金融级分布式数据库SequoiaDB,经过6年的研发,坚持从零开始打造数据库核心引擎.在技术探索中,选择了更适合云数据库场景的架构和引擎设计.本文也将详细展开,介绍目前SequoiaDB的架构与设计理念. SequoiaDB近日也完成由嘉实投资领投的C轮融资.本轮的领投方为嘉实投资,启明创投与DCM作为早期投资方跟投.SequoiaDB巨杉数据库一直坚持技术驱动产品,专注打造金融级分布式数据库,成为

架构设计:负载均衡层设计方案(2)——Nginx安装

前一篇文章<架构设计:负载均衡层设计方案(1)--负载场景和解决方式>中我们描述了要搭设负载均衡层的业务场景和负载均衡层搭建和扩展思路.从这篇文章开始的后几篇文章,我们将详细介绍Nginx.LVS和Nginx+Keepalived.LVS+Keepalived和LVS+Nginx+Keepalived的安装细节,以及它们的性能优化方式. Nginx和LVS都是可以独立工作的,Keepalived作为检测机制,不但可以和Nginx.LVS集成也可以和其他软件集成形成高可用方案(例如可以和MySQ

架构设计:负载均衡层设计方案(8)——负载均衡层总结上篇

1.概述 很明显通过前面的八篇文章的介绍,并不能覆盖负载均衡层的所有技术,但是可以作为一个引子,告诉各位读者一个学习和使用负载均衡技术的思路.虽然后面我们将转向“业务层”和“业务通信”层的介绍,但是对负载均衡层的介绍也不会停止.在后续的时间我们将穿插进行负载均衡层的新文章的发布,包括Nginx技术的再介绍.HaProxy.LVS新的使用场景等等. 这篇文章我们对前面的知识点进行总结,并有意进行一些扩展,以便于各位读者找到新的学习思路. 2.负载均衡层的核心思想 2-1.一致性哈希与Key的选取

架构设计:负载均衡层设计方案(1)——负载场景和解决方式

在上一篇<标准Web系统的架构分层>文章中,我们概述了WEB系统架构中的分层架设体系,介绍了包括负载均衡层.业务层.业务通信层.数据存储层的作用和存在意义.从本片文章开始,我们将首先详细讲解负载均衡层的架构原理和选型场景. 1.不同的负载场景 我们知道负载均衡层的作用是“将来源于外部的处理压力通过某种规律/手段分摊到内部各个处理节点上”,那么不同的业务场景需要的负载均衡方式又是不一样的,架构师还要考虑架构方案的成本.可扩展性.运维难易度等问题.下面我们先介绍几种典型的不同业务场景,大家也可以先

高可用架构设计与实践

第一课:高可用架构知识原理篇 什么架构的高可用? 架构高可用的重要性? 架构高可用的常用手段都有哪些? 架构高可用评价维度是什么? 架构高可用的考核如何分级? 架构高可用的涉及环节都有哪些? 第二课:高可用架构设计之总体架构篇 高可用架构为什么需要分层? 高可用架构分层设计原则是什么?如何架构分层? 高可用架构分层最佳实践: 我们的实践案例: 第三课:高可用架构设计之硬件篇 如何选择硬件?选择什么样的硬件? 高可用架构硬件层面如何保证? 硬件层面高可用架构保证的最佳实践是什么? 我们的实践案例:

架构设计:系统间通信(34)——被神化的ESB(上)

1.概述 从本篇文章开始,我们将花一到两篇的篇幅介绍ESB(企业服务总线)技术的基本概念,为读者们理清多个和ESB技术有关名词.我们还将在其中为读者阐述什么情况下应该使用ESB技术.接下来,为了加深读者对ESB技术的直观理解,我们将利用Apache Camel一起搭建一个ESB技术的服务实现,虽然这个示例不能把目前主流的ESB服务实现中所有功能模块都保罗进来,但至少可以让读者看到ESB技术核心服务完整的工作方式. 2.为什么需要ESB 2-1.ESB与SOA 2-1-1.SOA SOA(Serv