吉法师的博客

不知道能否追到喜欢的人呀,今年努力下吧~ 2022.1.4

分布式系统浅谈

分布式的概念:

分布式这个词听起来很高大上, 实际上在我们以前经常构建分布式系统, 从最初的分离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:在内存中存储

总结

有需要再补充吧。


Share