常用的存储架构有

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了常用的存储架构有相关的知识,希望对你有一定的参考价值。

参考技术A 顺序存储方法它是把逻辑上相邻的结点存储在物理位置相邻的存储单元里,结点间的逻辑关系由存储单元的邻接关系来体现,由此得到的存储表示称为顺序存储结构。顺序存储结构是一种最基本的存储表示方法,通常借助于程序设计语言中的数组来实现。
链接存储方法它不要求逻辑上相邻的结点在物理位置上亦相邻,结点间的逻辑关系是由附加的指针字段表示的。由此得到的存储表示称为链式存储结构,链式存储结构通常借助于程序设计语言中的指针类型来实现。
顺序存储和链接存储的基本原理
顺序存储和链接存储是数据的两种最基本的存储结构。
在顺序存储中,每个存储空间含有所存元素本身的信息,元素之间的逻辑关系是通过数组下标位置简单计算出来的线性表的顺序存储,若一个元素存储在对应数组中的下标位置为i,则它的前驱元素在对应数组中的下标位置为i-1,它的后继元素在对应数组中的下标位置为i+1。在链式存储结构中,存储结点不仅含有所存元素本身的信息,而且含有元素之间逻辑关系的信息。
数据的链式存储结构可用链接表来表示。
其中data表示值域,用来存储节点的数值部分。Pl,p2,…,Pill(1n≥1)均为指针域,每个指针域为其对应的后继元素或前驱元素所在结点(以后简称为后继结点或前驱结点)的存储位置。通过结点的指针域(又称为链域)可以访问到对应的后继结点或前驱结点,若一个结点中的某个指针域不需要指向其他结点,则令它的值为空(NULL)。
在数据的顺序存储中,由于每个元素的存储位置都可以通过简单计算得到,所以访问元素的时间都相同;而在数据的链接存储中,由于每个元素的存储位置保存在它的前驱或后继结点中,所以只有当访问到其前驱结点或后继结点后才能够按指针访问到,访问任一元素的时间与该元素结点在链式存储结构中的位置有关。
储存器方面的储存结构
储存系统的层次结构为了解决存储器速度与价格之间的矛盾,出现了存储器的层次结构。
程序的局部性原理
在某一段时间内,CPU频繁访问某一局部的存储器区域,而对此范围外的地址则较少访问的现象就是
程序的局部性原理。层次结构是基于程序的局部性原理的。对大量典型程序运行情况的统计分析得出的结论是:CPU对某些地址的访问在短时间间隔内出现集中分布的倾向。这有利于对存储器实现层次结构。
多级存储体系的组成
目前,大多采用三级存储结构。
即:Cache-主存-辅存,如下图:
3、多级存储系统的性能

考虑由Cache和主存构成的两级存储系统,其性能主要取决于Cache和贮存的存取周期以及访问它们的
次数。(存取周期为: Tc,Tm ;访问次数为: Nc,Nm)
(1)Cache的命中率 H= Nc / (Nc+Nm)

(2)CPU访存的平均时间 Ta= H * Tc+ (1-H) Tm
Cache-主存系统的效率
e= Tc / Ta
=1/H+(1-H)Tm/Tc
根据统计分析:Cache的命中率可以达到90%~98%
当Cache的容量为:32KB时,命中率为86%
64KB时,命中率为92%
128KB时,命中率为95%
256KB时,命中率为98%
参考技术B

常用的存储架构有:DAS、NAS、SAN

1、SAN是一个存储的区域网络。是由光纤 以及SAN交换机 SAN卡 存储组成。形成一个存储网络。作用于服务器集的作用。 他有自己的传输协议。无法工作在以外网中。成本很高。

2、NAS(Network Attached Storage:网络附属存储),就是一台小型的云端硬盘服务器,也是一台小电脑,在家里接上网络,就可以透过网络读写这台NAS服务器上的资料了,可提供跨平台文件共享功能。

NAS通常在一个LAN上占有自己的节点,无需应用服务器的干预,允许用户在网络上存取数据,在这种配置中,NAS集中管理和处理网络上的所有数据,将负载从应用或企业服务器上卸载下来,有效降低总拥有成本,保护用户投资。

3、DAS(Direct Attached Storage,直接外挂存储)是存储方式的一种方案。这种存储方式的服务器结构如同PC机架构,外部数据存储设备(如磁盘阵列、光盘机、磁带机等)都直接挂接在服务器内部总线上,数据存储设备是整个服务器结构的一部分,同样服务器也担负着整个网络的数据存储职责。DAS这种直连方式,能够解决单台服务器的存储空间扩展、高性能传输需求,并且单台外置存储系统的容量,已经从不到1TB,发展到了2TB,随着大容量硬盘的推出,单台外置存储系统容量还会上升。此外,DAS还可以构成基于磁盘阵列的双机高可用系统,满足数据存储方式对高可用的要求

MYSQL企业常用架构与调优经验分享

一、选择Percona Server、MariaDB还是MYSQL


1、Mysql三种存储引擎


MySQL提供了两种存储引擎:MyISAM和 InnoDB,MySQL4和5使用默认的MyISAM存储引擎。从MYSQL5.5开始,MySQL已将默认存储引擎从MyISAM更改为InnoDB。

MyISAM没有提供事务支持,而InnoDB提供了事务支持。


XtraDB是InnoDB存储引擎的增强版本,被设计用来更好的使用更新计算机硬件系统的性能,同时还包含有一些在高性能环境下的新特性。

2、Percona  Server分支


Percona Server由领先的MySQL咨询公司Percona发布。

Percona Server是一款独立的数据库产品,其可以完全与MySQL兼容,可以在不更改代码的情况了下将存储引擎更换成XtraDB。是最接近官方MySQL Enterprise发行版的版本。

Percona提供了高性能XtraDB引擎,还提供PXC高可用解决方案,并且附带了percona-toolkit等DBA管理工具箱,

3、MariaDB

MariaDB由MySQL的创始人开发,MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。

MariaDB提供了MySQL提供的标准存储引擎,即MyISAM和InnoDB,10.0.9版起使用XtraDB(名称代号为Aria)来代替MySQL的InnoDB。


4、如何选择


综合多年使用经验和性能对比,首选Percona分支,其次是MariaDB,如果你不想冒一点风险,那就选择MYSQL官方版本。


二、 常用的MYSQL调优策略


1、硬件层相关优化

修改服务器BIOS设置

选择Performance Per Watt Optimized(DAPC)模式,发挥CPU最大性能。

Memory Frequency(内存频率)选择Maximum Performance(最佳性能)

内存设置菜单中,启用Node Interleaving,避免NUMA问题

2、磁盘I/O相关

使用SSD硬盘

如果是磁盘阵列存储,建议阵列卡同时配备CACHE及BBU模块,可明显提升IOPS。

raid级别尽量选择raid10,而不是raid5.

3、文件系统层优化

使用deadline/noop这两种I/O调度器,千万别用cfq

使用xfs文件系统,千万别用ext3;ext4勉强可用,但业务量很大的话,则一定要用xfs;

文件系统mount参数中增加:noatime, nodiratime, nobarrier几个选项(nobarrier是xfs文件系统特有的);


4、内核参数优化

修改vm.swappiness参数,降低swap使用率。RHEL7/centos7以上则慎重设置为0,可能发生OOM

调整vm.dirty_background_ratio、vm.dirty_ratio内核参数,以确保能持续将脏数据刷新到磁盘,避免瞬间I/O写。产生等待。

调整net.ipv4.tcp_tw_recycle、net.ipv4.tcp_tw_reuse都设置为1,减少TIME_WAIT,提高TCP效率。

5、Mysql参数优化建议

建议设置default-storage-engine=InnoDB,强烈建议不要再使用MyISAM引擎。

调整innodb_buffer_pool_size的大小,如果是单实例且绝大多数是InnoDB引擎表的话,可考虑设置为物理内存的50% -70%左右。

设置innodb_file_per_table = 1,使用独立表空间。

调整innodb_data_file_path = ibdata1:1G:autoextend,不要用默认的10M,在高并发场景下,性能会有很大提升。

设置innodb_log_file_size=256M,设置innodb_log_files_in_group=2,基本可以满足大多数应用场景。

调整max_connection(最大连接数)、max_connection_error(最大错误数)设置,根据业务量大小进行设置。

另外,open_files_limit、innodb_open_files、table_open_cache、table_definition_cache可以设置大约为max_connection的10倍左右大小。

key_buffer_size建议调小,32M左右即可,另外建议关闭query cache。

mp_table_size和max_heap_table_size设置不要过大,另外sort_buffer_size、join_buffer_size、read_buffer_size、read_rnd_buffer_size等设置也不要过大。

三、   MYSQL常见的应用架构分享

1、主从复制解决方案

这是MySQL自身提供的一种高可用解决方案,数据同步方法采用的是MySQL replication技术。MySQL replication就是从服务器到主服务器拉取二进制日志文件,然后再将日志文件解析成相应的SQL在从服务器上重新执行一遍主服务器的操作,通过这种方式保证数据的一致性。

为了达到更高的可用性,在实际的应用环境中,一般都是采用MySQL replication技术配合高可用集群软件keepalived来实现自动failover,这种方式可以实现95.000%SLA

技术分享

2MMM/MHA高可用解决方案

MMM提供了MySQL主主复制配置的监控、故障转移和管理的一套可伸缩的脚本套件。在MMM高可用方案中,典型的应用是双主多从架构,通过MySQL replication技术可以实现两个服务器互为主从,且在任何时候只有一个节点可以被写入,避免了多点写入的数据冲突。同时,当可写的主节点故障时,MMM套件可以立刻监控到,然后将服务自动切换到另一个主节点,继续提供服务,从而实现MySQL的高可用。

技术分享

3Heartbeat/SAN高可用解决方案

在这个方案中,处理failover的方式是高可用集群软件Heartbeat,它监控和管理各个节点间连接的网络,并监控集群服务,当节点出现故障或者服务不可用时,自动在其他节点启动集群服务。在数据共享方面,通过SANStorage Area Network)存储来共享数据,这种方案可以实现99.990%SLA

技术分享

4Heartbeat/DRBD高可用解决方案

此方案处理failover的方式上依旧采用Heartbeat,不同的是,在数据共享方面,采用了基于块级别的数据同步软件DRBD来实现。

DRBD是一个用软件实现的、无共享的、服务器之间镜像块设备内容的存储复制解决方案。和SAN网络不同,它并不共享存储,而是通过服务器之间的网络复制数据。

 

技术分享

四、MYSQL经典应用架构

技术分享

 

其中:

         Dbm157mysql主,dbm158mysql主的备机,dbs159/160/161mysql从。

MySQL写操作一般采用基于heartbeat+DRBD+MySQL搭建高可用集群的方案。通过heartbeat实现对mysql主进行状态监测,而DRBD实现dbm157数据同步到dbm158

读操作普遍采用基于LVS+Keepalived搭建高可用高扩展集群的方案。前端AS应用通过提高的读VIP连接LVSLVSkeepliaved做成高可用模式,实现互备。

         最后,mysql主的从节点dbs159/160/161通过mysql主从复制功能同步mysql主的数据,通过lvs功能提供给前端AS应用进行读操作,并实现负载均衡。

本文出自 “爱维Linux” 博客,请务必保留此出处http://ixdba.blog.51cto.com/2895551/1751377

以上是关于常用的存储架构有的主要内容,如果未能解决你的问题,请参考以下文章

MYSQL企业常用架构与调优经验分享

微服务架构下的若干常用设计模式

架构设计:系统存储(29)——分布式文件系统Ceph(管理)

容器指南之容器架构及常用指令

软件架构演变+zookeeper--->安装配置+数据模型+常用命令+与java交互

软件架构演变+zookeeper--->安装配置+数据模型+常用命令+与java交互