全国旗舰校区

不同学习城市 同样授课品质

北京

深圳

上海

广州

郑州

大连

武汉

成都

西安

杭州

青岛

重庆

长沙

哈尔滨

南京

太原

沈阳

合肥

贵阳

济南

下一个校区
就在你家门口
+
当前位置:首页  >  技术干货

什么是分布式系统

发布时间:2023-12-01 17:37:21
发布人:xqq

什么是分布式系统?分布式系统主要分成存储模型和计算模型两类。其中计算模型的分布式系统原理与存储模型类似,只是会根据自身计算特点加一些特殊调度逻辑进去。任何一个分布式系统都需要考虑如下几个问题。

1.数据如何存储

就像把鸡蛋放进篮子里面。一般来说篮子大小是一样的,当然也有的系统支持不一样大小的篮子。鸡蛋大小也不一样,有很多系统就把鸡蛋给“切割”成一样大小然后再放。并且有的鸡蛋表示对篮子有要求,如对机房/机架位的要求。衡量一个数据分布算法好不好就看它是否分得足够均匀,使得所有机器的负载方差足够小。

2.数据如何容灾

分布式系统一个很重要的定位就是要让程序自动来管机器,尽量减少人工参与,否则一个分布式系统的运维成本将是不可接受的。系统中最容易出问题的硬盘的年故障率可能会达到10%。这样算下来,一个有1000台机器的集群,每一个星期就会有2台机器宕机。在机器数量大了之后,这是一个很正常的事情。一般一台机器出故障之后修复周期是24小时,这个过程中进行人工接入换设备或者重启机器。在机器恢复之后内存信息完全丢失,硬盘信息可能可以保存。一个分布式系统必须保证一台机器的宕机对服务不受影响,并且在修复好了之后再重新放到集群当中之后也能正常工作。

3.网络故障

网络故障是最常见的故障,就是该问题会大大增加分布式系统设计的难度,故障一般发生在网络拥塞、路由变动、设备异常等情况出现时。出现的问题可能是丢包,可能是延时,也可能是完全失去连接。有鉴于此,一般在设计分布式系统的时候,四层协议都采用TCP,很少采用UDP/UDT协议。而且由于TCP协议并不能完全保证数据传输到对面,如当再发送数据,只要数据写入本地缓冲区,操作系统就会返回应用层说发送成功,但是有可能根本没送到对面。所以一般还需要加上应用层的ACK,来保证网络层的行为是可预期的。

4.如何保证数据读写一致性

想获知数据是否具有一致性很简单,就是更新/删除请求返回之后,别人是否能读到新写的这个值。对于单机系统,这个一致性要达到很简单,大不了是损失一点写的效率。但是对于分布式系统就复杂了。为了容灾,一份数据肯定有多个副本,那么如何更新这多个副本以及控制读写协议就成了一个大问题。而且有的写操作可能会跨越多个分片,复制副本的时候甚至出现网络故障,造成保证数据一致性的难度成倍增加。

对于普通用户而言,常见的数据存储方式为集中式存储,例如,计算机中C盘,或者映射的网络硬盘等,一旦硬盘出现故障,系统将出现不可恢复的故障。与传统集中式存储不同,分布式存储技术并不是将数据存储在某个或多个特定的节点上,而是通过网络使用企业中的每台机器上的硬盘空间,并将这些分散的存储资源构成一个虚拟的存储设备,数据分散在企业的各个角落,每个分散的数据甚至复制多个副本进行分散存储在不同节点,一旦某个副本出现,如上面的网络故障或者丢失等,通过一致性检查,出现故障或丢失的副本即将被恢复出来。

常见的分布式文件系统有HDFS、GlusterFS、Lustre、MooseFS、Ceph等。各自适用于不同的领域。它们都不是系统级的分布式文件系统,而是应用级的分布式文件存储服务。

IT培训

相关文章

嵌入式培训课程:探索技术的无限可能

嵌入式培训课程:探索技术的无限可能

2023-12-12
web前端培训:vue实现双向数据绑定原理

web前端培训:vue实现双向数据绑定原理

2023-12-12
嵌入式开发:Linux系统编程的探索与实践

嵌入式开发:Linux系统编程的探索与实践

2023-12-12
Web前端:探索Web前端开发技术的新领域

Web前端:探索Web前端开发技术的新领域

2023-12-12

最新文章

python培训学校靠谱吗?为什么一定要选择千锋教育

python培训学校靠谱吗?为什么一定要选择千锋教育

2023-12-13
培训学校学java靠谱吗?为什么一定要选择千锋教育

培训学校学java靠谱吗?为什么一定要选择千锋教育

2023-12-13
网络安全哪个培训机构靠谱

网络安全哪个培训机构靠谱

2023-12-13
python培训机构可靠吗?为什么一定要选择千锋教育

python培训机构可靠吗?为什么一定要选择千锋教育

2023-12-13
在线咨询 免费试学 教程领取