zoukankan      html  css  js  c++  java
  • web数据存储

    数据的存储必然是任何网站必须经历的事,我们可以将数据存放在不同地方,数据库、文件、内存、程序本身、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

     

     

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

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

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

  • 相关阅读:
    数据结构-二叉搜索树
    多任务处理方式之一:多进程
    TCP并发服务器
    REST是什么?RESTFul又是什么?这二者的关系是怎样的?
    Python中的深浅拷贝的区别
    查找算法之 '二分法查找'
    排序算法之 '快速排序'
    CCS
    CCS
    CCS
  • 原文地址:https://www.cnblogs.com/bfmq/p/7596368.html
Copyright © 2011-2022 走看看