分布式系统-----单机存储系统
2014-04-13 15:30
190 查看
随着互联网用户量的增多,大用户数据,大数据流量已经远远超过单机服务器的处理能力,虽然摩尔定律给出在价格不变的情况下,硬件性能每隔18个月,性能都会提高提升1倍,即便如此,横向扩展比纵向扩展成本要低得多,分布式系统由此而产生。
最近一直在研究分布式系统,其中涉及很多知识点,结合自己的工作经验,写几篇博客,一来记录一下,二来和众多位网友一起分享一下,如果哪位有缘人读到这篇文章,但凡发现不对的地方,尽可指正,大家一起学习讨论。ok,废话不多说,下面开始。
硬件性能指标
内存访问:100ns
SATA磁盘寻道:10ms
SATA盘顺序读:100MB以上
服务器软件与硬件的交涉,无外乎cpu、内存、硬盘、网卡,这其中,cpu、内存、网卡相对性能都还好,最让人担心的就是磁盘读写,磁盘寻道是一个很大的开销10ms,所以当需要顺序读时,可以考虑用sata盘,对于随机读,并且性能要求高时,如db等,可以考虑用ssd盘或sas。
单机存储引擎
存储引擎相当于数据库的发动机
哈希存储引擎:key-value存储系统,如Bitcask,Bitcask是key value模型,append only,磁盘上记录的具体key value值,而在内存上进记录hash值,key value值位置(file id、pos、size),具体介绍可以参见:http://blog.nosqlfan.com/html/955.html
B-Tree存储引擎:关系型数据库,如mysql innoDB
LSM树存储引擎:如google bigtable、level DB,LSM(Log Structured Merge Tree),修改增量放到内存,达到一定大小限制后批量写入磁盘,读取时需要合并磁盘中历史数据和内存中最近修改操作。LSM优势在于规避磁盘随机写入问题,但读取时可能需要访问较多的磁盘文件,即写入效率高,读取效率一般。level db是google基于lsm算法实现的非常高效的k v数据库。
数据模型
数据模型相当于数据库的外壳
文件模型:类似于linux的文件系统
关系模型:这个是目前最成熟的模型,mysql oracle等等,但是随着应用在可扩展性、高并发以及性能上提出了愈来愈高的要求,大而全的关系型数据库有点力不从心,许多nosql数据库应运而生,键值模型,关系弱化的表格模型。关系型数据库有2个重要特性,索引和事务,索引减少扫描时的数据量提高读取性能,事务保证并发执行时的ACID特性(原子、一致、隔离、持久)
键值模型:大量的nosql数据库采用键值模型。
常用的nosql数据库
PostgreSQL(关系型)、Riak(键值型)、HBase(列型)、MongoDB(文档型)、CouchDB(文档型)、Noeo4j(图型)、Redis(键值型)。
CAP理论
Consistency(一致性):即数据一致性,简单的说,就是数据复制到了N台机器,如果有更新,要N机器的数据是一起更新的。
Availability(可用性):好的响应性能,此项意思主要就是速度。
Partition tolerance(分区容错性):这里是说好的分区方法,体现具体一点,简单地可理解为是节点的可扩展性。
定理:任何分布式系统只可同时满足二点,没法三者兼顾。
忠告:架构师不要将精力浪费在如何设计能满足三者的完美分布式系统,而是应该进行取舍。
最近一直在研究分布式系统,其中涉及很多知识点,结合自己的工作经验,写几篇博客,一来记录一下,二来和众多位网友一起分享一下,如果哪位有缘人读到这篇文章,但凡发现不对的地方,尽可指正,大家一起学习讨论。ok,废话不多说,下面开始。
硬件性能指标
内存访问:100ns
SATA磁盘寻道:10ms
SATA盘顺序读:100MB以上
服务器软件与硬件的交涉,无外乎cpu、内存、硬盘、网卡,这其中,cpu、内存、网卡相对性能都还好,最让人担心的就是磁盘读写,磁盘寻道是一个很大的开销10ms,所以当需要顺序读时,可以考虑用sata盘,对于随机读,并且性能要求高时,如db等,可以考虑用ssd盘或sas。
单机存储引擎
存储引擎相当于数据库的发动机
哈希存储引擎:key-value存储系统,如Bitcask,Bitcask是key value模型,append only,磁盘上记录的具体key value值,而在内存上进记录hash值,key value值位置(file id、pos、size),具体介绍可以参见:http://blog.nosqlfan.com/html/955.html
B-Tree存储引擎:关系型数据库,如mysql innoDB
LSM树存储引擎:如google bigtable、level DB,LSM(Log Structured Merge Tree),修改增量放到内存,达到一定大小限制后批量写入磁盘,读取时需要合并磁盘中历史数据和内存中最近修改操作。LSM优势在于规避磁盘随机写入问题,但读取时可能需要访问较多的磁盘文件,即写入效率高,读取效率一般。level db是google基于lsm算法实现的非常高效的k v数据库。
数据模型
数据模型相当于数据库的外壳
文件模型:类似于linux的文件系统
关系模型:这个是目前最成熟的模型,mysql oracle等等,但是随着应用在可扩展性、高并发以及性能上提出了愈来愈高的要求,大而全的关系型数据库有点力不从心,许多nosql数据库应运而生,键值模型,关系弱化的表格模型。关系型数据库有2个重要特性,索引和事务,索引减少扫描时的数据量提高读取性能,事务保证并发执行时的ACID特性(原子、一致、隔离、持久)
键值模型:大量的nosql数据库采用键值模型。
常用的nosql数据库
PostgreSQL(关系型)、Riak(键值型)、HBase(列型)、MongoDB(文档型)、CouchDB(文档型)、Noeo4j(图型)、Redis(键值型)。
CAP理论
Consistency(一致性):即数据一致性,简单的说,就是数据复制到了N台机器,如果有更新,要N机器的数据是一起更新的。
Availability(可用性):好的响应性能,此项意思主要就是速度。
Partition tolerance(分区容错性):这里是说好的分区方法,体现具体一点,简单地可理解为是节点的可扩展性。
定理:任何分布式系统只可同时满足二点,没法三者兼顾。
忠告:架构师不要将精力浪费在如何设计能满足三者的完美分布式系统,而是应该进行取舍。
相关文章推荐
- 分布式第二章 单机存储系统
- 《大规模分布式存储系统》笔记——单机存储系统、分布式系统
- Bigtable:一个分布式的结构化数据存储系统
- Facebook开源分布式日志存储系统LogDevice
- 分布式存储系统设计的若干原则
- 分布式 Key-Value 存储系统:Cassandra 入门
- Centos 搭建 FastFDS 分布式文件存储系统
- 阿里云高级总监谈超大规模超高性能分布式快存储系统
- 【问底】徐汉彬:亿级Web系统搭建——单机到分布式集群
- 亿级Web系统搭建:单机到分布式集群
- 分布式对象存储系统在openstack中的应用研究-----sheepdog
- MongoDB的分布式文件存储系统
- Hadoop分布式文件存储系统
- 亿级Web系统搭建:单机到分布式集群
- 170213、亿级Web系统搭建——单机到分布式集群
- Bigtable探秘 Google分布式数据存储系统
- 分布式 Key-Value 存储系统:Cassandra 入门
- Hadoop分布式文件存储系统HDFS高可用HA搭建(何志雄)
- 亿级Web系统搭建——单机到分布式集群
- 高性能分布式计算与存储系统设计概要——暨2012年工作3年半总结(上)