分布式系统浅谈
分布式的概念:
分布式这个词听起来很高大上, 实际上在我们以前经常构建分布式系统, 从最初的分离LAMP中的MySQL 到引入Varnish缓存页面, 再到使用LVS负载均衡Nginx|Apache, Nginx负载均衡Tomcat等等, 广义上都算是分布式系统.
简单来说分布式就是将一个系统的各个组件(MySQL、PHP、Apache …)分布在网络上的各台主机, 并且各组件之间仅通过消息传递来通信并协调工作。
分布式文件存储系统
分布式文件存储系统,是将数据分散存储在多台独立的设备上,是分布式+文件系统的集合。传统的网络存储系统采用集中的存储服务器存放所有数据,存储服务器成为系统性能的瓶颈,也是可靠性和安全性的焦点,不能满足大规模存储应用的需要。分布式网络存储系统采用可扩展的系统结构,利用多台存储服务器分担存储负荷,利用位置服务器定位存储信息,它不但提高了系统的可靠性、可用性和存取效率,还易于扩展。
它包含了2方面,从文件系统的客户端的角度来看,它就是一个标准的文件系统,提供了API,由此可以进行文件的创建、删除、读写等操作;从存储角度来看的话,它不在是本地的磁盘中,它的内容和目录都不是存储在本地磁盘中,而是通过网络传输到远程主机上,并且同一个文件存储在不只一台远程主机中,而是在一簇主机中进行分布式存储,协同提供服务。
分布式文件存储系统设计的目标:
访问透明,位置透明,并发透明,失效透明,硬件透明,可扩展性,可复制性,迁移透明
CAP定理
一致性(Consistency):数据在多个副本之间是否能够保持一致的特性。
可用性(Availability):系统提供的服务必须一直处于可用状态,对每一个操作的请求必须在有限时间内返回结果。
分区容错性(Partition Tolerance):分布式系统在遇到网络分区故障时,仍然需要保证对外提供一致性和可用性的服务,除非整个网络都发生故障.
存储一般分为两种:
集中式:
NAS: Network Attached Storage; 文件系统级别, 例如NFS, FTP, SAMBA…
SAN: Storage Aera Network; 块级别, 例如IP SAN, FC SAN…
分布式
中心节点存储: 每个集群中有节点专门用来存储元数据, 其他节点则存储部分数据
无中心节点存储: 每个集群各节点都存储元数据和部分数据
分布式存储和分布式文件系统:
文件系统:有文件系统接口
存储:无文件系统接口, 通过API访问
常见的分布式文件存储系统
1)GFS(Google File System):—–GFS擅长处理单个大文件
2)HDFS(Hadoop Distributed Filesystem):擅长处理单个大文件
3)ClusterFS:去中心化设计,擅长处理单个大文件,流媒体,云。
4)TFS(Taobao Filesystem):淘宝开源的文件系统,擅长处理海量小文件,适用于大规模场景。将元数据存储于关系型数据库或其他高性能存储中,从而能维护海量文件元数据。
5)MogileFS:擅长处理海量小文件,用于组建分布式文件集群)
6)Ceph是整合到linux内核实现的文件系统,已经被收录在内核,一个 Linux PB级别的分布式文件系统
7)MooseFS:通用简便,适用于研发能力不强的公司
8)Lustre:一种平行分布式文件系统,企业级应用,重量级,用于大规模集群计算
9)FastDFS:在内存中存储
总结
有需要再补充吧。