数据的存储必然是任何网站必须经历的事,我们可以将数据存放在不同地方,数据库、文件、内存、程序本身、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. HDU 4403 A very hard Aoshu problem (DFS暴力)

    题意:给你一个数字字符串.问在字符串中间加'='.'+'使得'='左右两边相等. 1212  : 1+2=1+2,   12=12. 12345666 : 12+3+45+6=66.  1+2+3+4 ...

  2. HDOJ题目2089 不要62(数位DP)

    不要62 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submi ...

  3. Name和:Name

    http://www.cnblogs.com/tianyutingxy/archive/2011/02/23/1962078.html http://www.tuicool.com/articles/ ...

  4. python(6)- 常用快捷键及基础命令

  5. C中參数个数可变的函数

    一.什么是可变參数 我们在C语言编程中有时会遇到一些參数个数可变的函数,比如printf()函数,其函数原型为: int printf( const char* format, ...); 它除了有一 ...

  6. FastDFS的配置、部署与API使用解读(5)FastDFS配置详解之Tracker配置(转)

    本文是 tracker.conf 配置文件的详细介绍. 1 基本配置 disable #func:配置是否生效 #valu:true.false disable=false bind_addr #fu ...

  7. Java、C++、Python、Ruby、PHP、C#和JavaScript的理解

    Java.C++.Python.Ruby.PHP.C#和JavaScript和日本动漫里的那些大家熟悉的动漫人物结合起来.依据他们的身世.个人经历来生动的表达各编程语言的发展历程.原文内容例如以下:  ...

  8. unittest相关文档

    文档链接: http://blog.csdn.net/wangst4321/article/details/8454118

  9. linux上查看系统内核版本命令(转载)

    uname -a uname -r 查看发行版本信息: 在RedHat系统里,存在一个/etc/redhat-release文件,里面保存了发行版的版本信息 $cat /etc/redhat-rele ...

  10. CCBPM中的消息机制,CCIM服务端安装说明

    1.改动LeeIMService.exe.config服务端配置文件: 2.client的配置就比較简单了,仅仅须要在"SercerIP"节点上写上server的IP: 3.然后要 ...