互联网系统,存储与计算是极其重要两个方面。无论是服务端 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 的开源负责人黄挺聊分布式架构和开源
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
人类2.0
皮埃罗∙斯加鲁菲(Piero Scaruffi) / 闫景立、牛金霞 / 中信出版集团股份有限公司 / 2017-2-1 / CNY 68.00
《人类2.0:在硅谷探索科技未来》从在众多新技术中选择了他认为最有潜力塑造科技乃至人类未来的新技术进行详述,其中涉及大数据、物联网、人工智能、纳米科技、虚拟现实、生物技术、社交媒体、区块链、太空探索和3D打印。皮埃罗用一名硅谷工程师的严谨和一名历史文化学者的哲学视角,不仅在书中勾勒出这些新技术的未来演变方向和面貌,还对它们对社会和人性的影响进行了深入思考。 为了补充和佐证其观点,《人类2.0......一起来看看 《人类2.0》 这本书的介绍吧!