互联网系统,存储与计算是极其重要两个方面。无论是服务端 mysql 数据库、 redis 缓存以及计算应用框架spring、dubbo等,还是大数据hdfs、hbase以及mapreduce、spark等计算框架。都体现了存储计算是互联网应用系统两个核心方面。
存储三种类型基于hash数据结构比如redis以及小图片系统TFS,hash数据结构能够支持读写qps很高是做存储非常好数据结构,redis类存储结构缺点是成本高;以及基于B+树MySQL,MySQL类数据库支持完整 sql 语法使用方面,对于事务支持好,但B+树这种数据结构对于大量随机写,当数量大之后性能会变差;再有是基于LSM bigtable、hbase等,LSM将写入变随机为顺序写入,极大增加存储写入速度,基于LSM存储利用BoomFilter过滤器、table缓存等技术加快读取速度,但是读取qps依然会小于redis很多。
根据以上特点存储要根据实际业务需求结合使用,而不能了解一种就抓住一种不放,认为找到银弹。业务特点最近的数据写多,读少要缓存在内存,历史数据写少读少存储在磁盘。
分布式存储设计不仅要考虑一致性、可用性、分区容忍性,还要在设计实现时就要考虑整体架构可运维性,以及可监控性,这样能够方便集群管理成本,方便集群进行各种各样操作。
1、故障发现快,并且能够进行多节点恢复。设计监控能够快速发现故障节点,并且能沟通过扩容服务,将故障节点快速将数据复制,并将节点上到集群。
2、独立分区,将容器独立一块区域,避免一个存储集群服务过载影响其他集群。从而影响线上多个业务。
3、跨机房热备,通过数据同步服务一般基于Raft协议,将数据同步到同城机房或者异地机房进行灾备,灾备机房也可直接提供读服务。
4、持久化,redis类缓存能够通过快照或者append方式将数据持久化。基于磁盘类型天然支持持久化。
5、读策略,多种读策略。支持根据配置读取相应机房,可以实现同机房服务优先读取同机房存储,以及随机主从读取等多种策略,根据业务需求进行灵活配置。
6、自动化运维,通过扩容服务管理备用资源池,当线上存储节点存在问题,则通过扩容服务获取备用资源池节点,拷贝数据以及设置节点到集群,并将信息注册到Meta信息,完成故障节点处理。
7、复制,实现基于主从复制,能够实现基于最终一致性的主从复制。并且能够监控所有分片主从同步情况以及主从连接情况,主从断开后能够进行报警以便运维人员能够及时处理。
8、监控,对于节点分片ops量、读写量监控以及配置报警阀值,对于集群整体磁盘内存使用量进行监控,当磁盘或内存超过设置阀值比如75%时进行报警,以便进行扩容操作。对于慢查询进行监控,并进行持久化存储以支持后续分析。对于连接数监控,存储所在物理机连接数是重要资源,连接数过多会导致有客户端取不到连接从而导致取不到数据,连接数也要进行严格监控。
9、流控,对于存储服务也要提供过载保护机制,避免读写流量过大,影响集群稳定性,当超过集群请求后,返回异常信息给客户端,避免存储服务过载。
10、其他,分布式存储支持多种数据结构,方便业务使用;对于基本数据类型int、char、string等数据存储格式支持;对于传统sql语句支持;对于分布式事务支持;分布式双写支持等等,是分布式系统不断演进以及研发方向。
存储是架构设计一部分,要根据实际架构需要来使用存储,你在实际中用过哪些存储?
两个架构相关优秀专栏,推荐订阅学习,均有返现
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 『互联网架构』软件架构-分布式架构(14)
- 『互联网架构』软件架构-分布式系列并发编程(29)
- 『互联网架构』软件架构-解密电商系统-分布式session(77)
- 『互联网架构』软件架构-分布式之大型网站的演变过程(28)
- 分布式架构知识体系
- 掘金 AMA:听分布式架构 SOFA 的开源负责人黄挺聊分布式架构和开源
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
赢在设计
[美] 洛芙迪 (Lance Loveday)、[美] 尼豪斯 (Sandra Niehaus) / 刘淼、枊靖、王卓昊 / 人民邮电出版社 / 2010-8 / 55.00
企业总是面临在网站设计和改进方面进行投资的抉择。怎样才能让有限的资金发挥出最大的效益呢?网站设计不应只是把网站做得赏心悦目,它更应该是提高经济收益和获得竞争优势的战略利器。是时候让网站发挥其潜能,以业务指标为导向来做设计决策,为提升网站收益而设计了。 作者凭借多年为众多网站做咨询工作的经验,为我们揭示了赢在设计的奥秘。它针对目前网站设计中存在的典型问题,先从宏观上探讨解决问题的战略手段,围绕......一起来看看 《赢在设计》 这本书的介绍吧!