数据的存储必然是任何网站必须经历的事,我们可以将数据存放在不同地方,数据库、文件、内存、程序本身、cookie,session中都可以,但是只要需要持久化保留的数据,那么最终肯定还是落在磁盘之上的,我们的磁盘可以格式化成各种类型的文件系统,也可以由应用程序直接调用裸盘

一.存储类型

  1. 块存储
  2. 文件存储
  3. 对象存储

块存储,顾名思义,就是一个单纯的块设备,上面不包含文件系统,一般我们新买的磁盘挂载到服务器上,叫/dev/sdb这种就是一个块存储,比如iscsi,共享过来你发现他直接挂载挂不了,提示要先格式化,因为它是一个裸设备,你可以将他格式化成任意的文件系统来挂载使用,就是送给你一块硬盘的意思

文件存储就是格式化了块设备,现在我们一般使用xfs格式了,以前是ext4,,比如最常用的nfs,它的体现是共享过来我们可以直接挂载卸载,但是上面的文件系统是共享者那面格好的,你不能更改,就是送给你一个目录的意思

对象存储大多就是分布式的了,它是为了解决块存储不容易共享文件存储不够快而出现的,如果对象存储提供了fuse,那么对象存储也可以方便的挂载使用,这也是glusterfs的优势,否则的话就是根据元数据去访问对应数据的,ceph遵循restfulapi 模式,你需要访问对应的uri

二.存储连接方式

DAS存储 (直连式存储Direct-Attached Storage),直接连接在服务器上的存储,第一反应就是磁盘喽

NAS存储 (网络接入存储Network-Attached Storage),通过网络来创建的存储,sab,nfs就是

SAN存储 (存储区域网络Storage Area Network),通过专门的光纤连接给服务器使用的存储,多于大型应用或数据库系统,缺点是成本高,很高….

所以随着业务的不断增长,使用分布式文件系统是我们无法逃避的过称

分布式文件系统现在有很多了,推荐大家学习使用ceph跟glusterfs,glusterfs可以用于生产,ceph是现在一个叼叼的分布式文件系统,他集成了块存储,文件存储,对象存储三种方式,与openstack可以很好的结合,底层是一个对象存储库,本质意义上还是一个对象存储

三.数据库相关

提到数据库,大家的第一反应都是,性能瓶颈,慢慢慢,不敢出事,出事了就可以辞职了,要是有DBA是多么美好的事情

数据库内存储数据的架构有如下几种:

  1. 一台mysql拯救世界。这种做法一般就在于企业最初期、测试环境使用,因为出事了也无伤大雅
  2. 一主一从,高可用。读写都是主库,然后同步到从库,主库出问题了手动切换到从库,好处是最简单,也保证了数据的备份,现在使用的人很多;缺点是你需要手动切换,中间还是会有延迟,而且还需要人为参与的延迟,要是他跑去上厕所或者手机关机那真是bi了poi了,再就是压力都在主库,读写同步都需要
  3. 一主一从,读写分离。写主库,同步到从库,读数据读从库的,但是必须毫无延迟的还是读主库,相比于上一种减少了大部分读压力;缺点在于需要开发人员的配合,因为只有他知道哪些数据可以延迟哪些不能延迟,还需要多记ip,开发人员不配合那真是bi了poi了
  4. 一主多从,读写分离,读压力更加分散,因为一般读数据的频率远大于写;缺点是各个从节点都需要从主同步数据,从节点越多,需要完全同步完成的时间越长
  5. 一主多从,负载均衡。使用lvs为读从节点做集群,写只写主节点,好处是原本代码中控制的读ip统一交给了lvs处理,只需要有两个ip一个读从ip一个写主ip;缺点跟之前还是一样的,主依然需要同步给每个从

  6.主主复制双写。之前一直优化的只要点都是读操作,写并没有针对性优化过,这个架构好处就是分成了两个完全平级的数据库,每人都有可以操作,任务量减少一半。缺点是需要开发配合,还有两个库的自增序号需要分配奇偶数

  7.主主复制单写。这跟一主一从,读写分离挺像的,区别在于出现故障时的处理

    

  8.双主双从。其实就是将主主复制各加了一个从库,保证数据的冗余

    

  9.MHA。这个就是mysql提供的方案了,资料较多,通过一个管理节点来控制大集群

  

  

数据库的访问:

  1. 直接访问,不解释
  2. 通过代理访问,由代理区分操作连接对应机器,比较有名的mycat

 

 

但是随着时间的推移,我们的业务量变得巨大,那么分布式数据库是最终手段

一个网站如果发展到了如此境地,那么也算是不枉此生了,巨大的业务量不断的压垮我们,我们需要进一步对数据分类,快速查询,业务分离,服务解耦

最后,图都是《大型网站技术架构》上的,有兴趣的可以看看,很好的一本书,他不会对你的技术有什么快速提升,但是会对你的思想有很重要的影响

web数据存储的更多相关文章

  1. Web 数据存储总结

    随着Web应用程序的出现,也产生了对于能够在客户端上存储用户信息能力的要求.这个问题的第一个解决方案是以cookie形似出现的.网景公司在一份名为“Persistent Client State: H ...

  2. 浅析Web数据存储-Cookie、UserData、SessionStorage、WebSqlDatabase

    Cookie 它是标准的客户端浏览器状态保存方式,可能在浏览器诞生不久就有Cookie了,为什么需要Cookie 这个东东?由于HTTP协议没有状态,所以需要一个标志/存储来记录客户浏览器当前的状态, ...

  3. web sql database数据存储位置

    Q1: 数据存储在哪儿? Web Storage / Web SQL Database / Indexed Database 的数据都存储在浏览器对应的用户配置文件目录(user profile di ...

  4. Web自动化框架之五一套完整demo的点点滴滴(excel功能案例参数化+业务功能分层设计+mysql数据存储封装+截图+日志+测试报告+对接缺陷管理系统+自动编译部署环境+自动验证false、error案例)

    标题很大,想说的很多,不知道从那开始~~直接步入正题吧 个人也是由于公司的人员的现状和项目的特殊情况,今年年中后开始折腾web自动化这块:整这个原因很简单,就是想能让自己偷点懒.也让减轻一点同事的苦力 ...

  5. cookie是指web浏览器存储的少量数据,该数据会在每次请求一个相关的URL时自动传到服务器中(转)

    基本概念:cookie是指web浏览器存储的少量数据,该数据会在每次请求一个相关的URL时自动传到服务器中. 以博客园为例,我们看看cookie有哪些属性: 1.Name:cookie的名称: 2.V ...

  6. 数据存储之Web存储(sessionStorage localStorage globalStorage )

    Web Storage 两个目标 提供一种在cookie之外的存储会话守数据的途径 提供一种存储大量可以跨会话存在的数据机制 最初的Web Storage规范包含两个对象 sessionStorage ...

  7. Web前端数据存储

    Cookie 会跟随每次请求附加到请求header上,大小限制4k. 部署对象: document.cookie 构成: Key-Value 有效期:根据expires配置 可选项: ;path=pa ...

  8. 数据存储的两种方式:Cookie 和Web Storage

    数据存储的两种方式:Cookie 和Web Storage 1.Cookie Cookie的作用就像你去超市购物时,第一次给你办张购物卡,这个购物卡里存放了一些你的个人信息,下次你再来这个连锁超市时, ...

  9. 数据存储的两种方式:Cookie 和Web Storage(转)

    数据存储的两种方式:Cookie 和Web Storage   数据存储的两种方式:Cookie 和Web Storage 1.Cookie Cookie的作用就像你去超市购物时,第一次给你办张购物卡 ...

随机推荐

  1. iOS学习笔记12-网络(一)NSURLConnection

    一.网络请求 在网络开发中.须要了解一些经常使用的请求方法: GET请求:get是获取数据的意思,数据以明文在URL中传递,受限于URL长度,所以数据传输量比較小. POST请求:post是向serv ...

  2. soapUI学习笔记---断言的小使用

    转自:http://www.cnblogs.com/duimianyoushan/p/4274791.html 以下示例在soapUI 4.5中进行.刚开始学soapUI的使用,记录下以免忘记 1.创 ...

  3. leetcode第一刷_Symmetric Tree

    必须承认,一開始这道题我是不会做的.由于我心目中的树遍历仅仅能用一个节点发起.多么天真而无知. 我想不通如何同一时候遍历两颗子树.由于根节点一定是一个啊.但是,作为对称轴上的它.从一開始就不应该被考虑 ...

  4. Swift中的switch 和 do while

    switch后面的()能够省略 OC中的switch假设没有break就会穿透(依次运行),在Swift中不会穿透(可理解默认就有break) OC中入股要在case中定义变量,必要要加上{}确定作用 ...

  5. Canvas学习笔记——动画中的三角学

    示例1,跟随鼠标的键头:   需要掌握一个重要的公式,这个方法返回从 x 轴到点 (x,y) 之间的角度 Math.atan2(dy,dx); 关键代码: function Arrow() { thi ...

  6. 将txt文件数据存入excel表格

    前言 最近使用Appium自动化在测试设备配网的情况,需要记录每次成功与否和耗时时间. 由于App不是很稳定,执行一段时间会奔溃,因此数据只能通过追加的形式写入到txt文件. 实现过程 存储在txt文 ...

  7. spring 监听器简介

    在java web项目中我们通常会有这样的需求:当项目启动时执行一些初始化操作,例如从数据库加载全局配置文件等,通常情况下我们会用javaee规范中的Listener去实现 常用的监听器有spring ...

  8. 怎么实现单击span时给span添加边框

    说明: 1.开发环境 vs2012 asp.net mvc4 c# 1.效果图 2.html 前端代码 <%@ Page Language="C#" AutoEventWir ...

  9. Pipeline(netty源码)

    精进篇:netty源码死磕6  巧夺天工--Pipeline模式揭秘 1. 巧夺天工--Pipeline模式揭秘 1.1. Pipeline模式简介 管道的发名者叫,Malcolm Douglas M ...

  10. swift-ios开发pod的使用(1)

    MAC安裝CocoaPods   http://www.cnblogs.com/surge/p/4436360.html 请注意我的环境,这个很重要 xcode版本7.3.2   mac 版本OS X ...