基于分布式的博客系统-Blogging文献综述

 2022-10-22 17:08:55
  1. 文献综述(或调研报告):
  2. 分布式系统

分布式系统(distributed system)是建立在网络之上的软件系统。正是因为软件的特性,所以分布式系统具有高度的内聚性和透明性。因此,网络和分布式系统之间的区别更多的在于高层软件(特别是操作系统),而不是硬件[1]

分布式系统是其组件分布在联网的计算机上,组件之间通过传递消息进行通信和动作协调的软件系统[2]

  1. 分布式特点

分布式系统最大的特点是可扩展性,它能够适应需求变化而扩展。企业级应用需求经常随时间而不断变化,这也对企业级应用平台提出了很高的要求。企业级应用平台必须要能适应需求的变化,即具有可扩展性。比如移动互联网 2C 应用,随着互联网企业的业务规模不断增大,业务变得越来越复杂,并发用户请求越来越多,要处理的数据也越来越多,这个时候企业级应用平台必须能够适应这些变化,支持高并发访问和海量数据处理。分布式系统有良好的可扩展性,可以通过增加服务器数量来增强分布式系统整体的处理能力,以应对企业的业务增长带来的计算需求。

分布式系统的核心理念是让多台服务器协同工作,完成单台服务器无法处理的任务,尤其是高并发或者大数据量的任务。分布式系统由独立的服务器通过网络松散耦合组成的。每个服务器都是一台独立的 PC 机,服务器之间通过内部网络连接,内部网络速度一般比较快。因为分布式集群里的服务器是通过内部网络松散耦合,各节点之间的通讯有一定的网络开销,因此分布式系统在设计上尽可能减少节点间通讯。此外,因为网络传输瓶颈,单个节点的性能高低对分布式系统整体性能影响不大。比如,对分布式应用来说,采用不同编程语言开发带来的单个应用服务的性能差异,跟网络开销比起来都可以忽略不计。因此,分布式系统每个节点一般不采用高性能的服务器,而是性能相对一般的普通 PC 服务器。提升分布式系统的整体性能是要通过横向扩展(增加更多的服务器),而不是纵向扩展(提升每个节点的服务器性能)。

分布式系统最大的特点是廉价高效:由成本低廉的 PC 服务器组成的集群,在性能方面能够达到或超越大型机的处理性能,在成本上远低于大型机。这也是分布式系统最吸引人之处。成本低廉的 PC 服务器在硬件可靠性方面比大型机相去甚远,于是分布式系统由软件来对硬件进行容错,通过软件来保证整体系统的高可靠性。

分布式系统最大的好处是实现企业应用服务层面的弹性扩展。应用服务层面的弹性扩展是相对计算资源层面的弹性扩展而言的。一般公有云服务(IaaS)厂商都会提供计算资源层面的弹性扩展,比如可以很方便地增加或删除虚拟主机、提升或降低虚拟主机的性能配置等等。但是企业客户真正需要的是应用服务层面的弹性扩展,即随着业务量的涨落,后台应用服务的实例能动态变化,这是 IaaS 厂商还做不到的。比如,某移动互联网短视频分享应用,在晚间 11 点到凌晨 1 点是访问高峰,同时在线人数高达几十万,这时后台应用服务要扩张到数千个实例才能应付这么高并发的访问请求;过了高峰时段,后台应用服务可以收缩到几十个实例。有了分布式系统,就可以很方便地调度应用服务实例,从几十个到几百个甚至上千个,真正实现应用服务的弹性扩展。

  1. 分布式设计理念.

① 分布式系统对服务器硬件要求很低 这一点主要现在如下两个方面: 对服务器硬件可靠性不做要求,允许服务器硬件发生故障,硬件的故障由软件来容错。所以分布式系统的高可靠性是由软件来保证。 对服务器的性能不做要求,不要求使用高频 CPU、大容量内存、高性能存储等等。因为分布式系统的性能瓶颈在于节点间通讯带来的网络开销,单台服务器硬件性能再好,也要等待网络 IO。 一般而言,互联网公司的大型数据中心都是选用大量廉价的 PC 服务器而不是用几台高性能服务器搭建分布式集群,以此来降低数据中心成本。比如,Google 对于数据中心的成本控制做到了极致:所有服务器一律不要机箱;主板完全定制,只要最基本的组件,早期的定制主板连电源开关和 USB 接口都不要;在主板上加装隔离带把 CPU 单独隔出来,让冷风只吹 CPU,不吹内存、硬盘等不需要降温的组件,最大限度降低冷却电力消耗。

② 分布式系统强调横向可扩展性 横向可扩展性(Scale Out)是指通过增加服务器数量来提升集群整体性能。纵向可扩展性(Scale Up)是指提升每台服务器性能进而提升集群整体性能。纵向可扩展性的上限非常明显,单台服务器的性能不可能无限提升,而且跟服务器性能相比,网络开销才是分布式系统最大的瓶颈。横向可扩展性的上限空间比较大,集群总能很方便地增加服务器。而且分布式系统会尽可能保证横向扩展带来集群整体性能的(准)线性提升。比如有 10 台服务器组成的集群,横向扩展为 100 台同样服务器的集群,那么整体分布式系统性能会提升为接近原来的 10 倍。 互联网公司的数据中心,一般一个分布式系统横向扩展的上限在万台服务器左右。Google 数据中心的基本单元,CELL,由两万台左右服务器组成,每个 CELL 由一套分布式管理系统,BORG,统一管理,每个数据中心都由多个 CELL 组成。

③ 分布式系统不允许单点失效(No Single Point Failure) 单点失效是指,某个应用服务只有一份实例运行在某一台服务器上,这台服务器一旦挂掉,那么这个应用服务必然也受影响而挂掉,导致整个服务不可用。例如,某网站后台如果只在某一台服务器上运行一份,那这台服务器一旦宕机,该网站服务必然受影响而不可用。再比如,如果所有数据都存在某一台服务器上,那一旦这台服务器坏了,所有数据都不可访问。 因为分布式系统的服务器都是廉价的 PC 服务器,硬件不能保证 100% 可靠,所以分布式系统默认每台服务器随时都可能发生故障挂掉。同时分布式系统必须要提供高可靠服务,不允许出现单点失效,因此分布式系统里运行的每个应用服务都有多个运行实例跑在多个节点上,每个数据点都有多个备份存在不同的节点上。这样一来,多个节点同时发生故障,导致某个应用服务的所有实例都挂掉、或某个数据点的多个备份都不可读的概率大大降低,进而有效防止单点失效。 通常情况,不要让服务器满负荷运行,服务器长时间满负荷运行的话,出故障的概率显著升高。所以分布式系统采用一大堆中低性能的 PC 服务器,尽可能把负载均摊到所有服务器上,让每台服务器的负载都不高,保证集群整体稳定性。

④ 分布式系统尽可能减少节点间通讯开销 如前所述,分布式系统的整体性能瓶颈在于内部网络开销。目前网络传输的速度还赶不上 CPU 读取内存或硬盘的速度,所以减少网络通讯开销,让 CPU 尽可能处理内存的数据或本地硬盘的数据,能显著提高分布式系统的性能。典型的例子就是 Hadoop MapReduce,把计算任务分配到要处理的数据所在的节点上运行,从而避免在网络上传输数据。

剩余内容已隐藏,您需要先支付 10元 才能查看该篇文章全部内容!立即支付

发小红书推广免费获取该资料资格。点击链接进入获取推广文案即可: Ai一键组稿 | 降AI率 | 降重复率 | 论文一键排版