分布式系统-----单机存储系统
来源:互联网 发布:植物名称查询软件 编辑:程序博客网 时间:2024/04/28 15:01
随着互联网用户量的增多,大用户数据,大数据流量已经远远超过单机服务器的处理能力,虽然摩尔定律给出在价格不变的情况下,硬件性能每隔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(分区容错性):这里是说好的分区方法,体现具体一点,简单地可理解为是节点的可扩展性。
定理:任何分布式系统只可同时满足二点,没法三者兼顾。
忠告:架构师不要将精力浪费在如何设计能满足三者的完美分布式系统,而是应该进行取舍。
- 分布式系统-----单机存储系统
- 分布式第二章 单机存储系统
- 单机存储系统
- 单机存储系统
- 分布式存储系统FastDFS系统服务器端目录结构
- 分布式存储系统
- 分布式存储系统
- 分布式存储系统
- 分布式存储系统
- 分布式存储系统
- 分布式存储系统
- 分布式存储系统
- 可维护性分布式存储系统和分离的分布式系统
- 第二章 单机存储系统
- 分布式存储系统FastDFS手册之一简介及系统结构
- 分布式存储系统设计(1)—— 系统架构
- Memcachedb 分布式持久存储系统
- 分布式存储系统Cassandra
- cbClsExtra GetClassInfo或GetClassInfoEx可以获取WNDCLASS或者WNDCLASSEX结构
- 运用UITextFieldDelegate完成,点击键盘的右下角的next,光标进入下一文本框,然后再点击Done,收回键盘
- 位模式
- java读入数据的几种方式
- Ubuntu12.04编译安装Boost1.55
- 分布式系统-----单机存储系统
- Oracle Hints
- javascript学习之类型检测
- 梅氏砝码问题
- 归并排序的实现
- 提取轮廓的原理和代码实例
- Oracle 11gR2 For Centos6.3
- 使用Adove illustrate 去背景
- C++之动态绑定和静态绑定