前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >为什么需要分布式系统?

为什么需要分布式系统?

原创
作者头像
存储小白
发布2022-10-27 16:42:43
6850
发布2022-10-27 16:42:43
举报
文章被收录于专栏:存储知识存储知识

大家普遍对分布式系统的印象是难设计,难理解,难操作,而集中式系统相对更加简洁易懂。那么,为什么我们需要分布式系统呢?

分布式系统提供更好的可用性。集中式系统的可用性受制于于运行它的硬件的可用性,尽管如今的高端硬件非常可靠,结合对机房的科学管理,服务器的年故障率 (AFR)会达到个位数,但是,依旧存在限制。第一,集中式系统中单机不可用会导致系统整体不可用;第二,系统吞吐量受限于单机的计算能力。分布式系统消除这两个限制的方法是用多机来存储数据的多个副本,负责更新的客户端会同时更新数据的多个副本。分布式系统可以避免任何一个服务器成为单点故障,修复系统的过程对于生产环境来说是无感知的。分布式系统也可以放置在更靠近需要它们的用户的位置,更方便客户端访问,提高了网络环境的可用性。尽管有CAP定理的限制,分布式系统的灵活性在很多场景仍然优于集中式系统。

分布式系统提供更好的持久性。持久性是指在一段时间内保持数据不丢失的能力。来自Backblaze的数据表明一个机房中一年大约1.6%的数据会丢失。对于某些场景来说,这个持久性就足够了。但对于大部分企业来说,事实并非如此。集中式系统有两种选择。第一是RAID,使用多个磁盘,并在它们发生故障时替换它们。RAID 只能防止一些驱动器故障,无法应对大规模故障。第二是备份。备份更可靠,但要求也更多。备份要求您选择两件事:运行备份的频率(频率越低恢复的数据越不可靠,频率越高消耗的资源越高)以及还原备份所需的时间。对于个人笔记本电脑上的东西,每日备份和数小时的还原就足够了。但对于业务关键型数据,显然不行。分布式存储系统将一段数据的多个副本分散在不同地方,从而在成本、恢复时间、持久性等方面提供了极大的灵活性。通过合理构建,可以对故障具有极高的容忍度。

分布式系统提供更好的可扩展性。可扩展性描述的是通过增减硬件来调节系统某些指标的能力。例如,通过增加磁盘来提高存储系统的容量,通过增加节点来增加存储系统的吞吐率。无状态系统相对容易扩展,像HTTP负载均衡器这样的基本技术非常适合很多用例。有状态系统更难扩展,因为需要决定如何传播状态,并且需要弄清楚如何将用户发送到正确的位置以获取状态。这两个问题是大部分分布式系统文献的核心,几乎每天都有新的解决方案。好消息是,许多解决方案确实很好。它们可作为服务(如在云中)提供,也可作为软件(开源和其他方式)提供。用户可以直接使用这些方案而不用重头去研究。

分布式系统提供更好的效率。工作负载经常是波动的。计算机喜欢按小时、每天或每分钟做事。但是人类的节奏不是这样的,如睡觉和放假,有些人只想在工作日的白天做事,有些人喜欢在晚上或深夜做事。这一切都意味着大多数系统上的负载会随机或周期性地变化。大型分布式系统,如云,可以自动分配负载,并按需付费。比较影响成本的所有因素时,会发现计算机保持忙碌与保持空闲相比,耗费的成本差不多,但产出却天差地别。这意味着,让计算机尽可能忙碌具有很大的经济意义,集中式系统很难做到这一点。

例如,内容存储网络CSN的核心就是一个横跨全国的分布式系统,它可以在任何地点提供高可用、强一致性的存储服务。CSN将数据存储的位置信息整合成了一张分布式网:全局元数据。逻辑上单一的一张表在物理上分布存在于不同的机房,从而可以就近提供访问服务,使所有的读写请求都会就近访问离用户最近的机房,数据在本地直接返还给用户,或者通过专网从其他地方拉过来给用户。究其根本,CSN高性能、低成本,就是通过良好的分布式系统设计来实现的。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
负载均衡
负载均衡(Cloud Load Balancer,CLB)提供安全快捷的流量分发服务,访问流量经由 CLB 可以自动分配到云中的多台后端服务器上,扩展系统的服务能力并消除单点故障。负载均衡支持亿级连接和千万级并发,可轻松应对大流量访问,满足业务需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档