服务器都有什么特性图(服务器的重要特性)「服务器的主要特性」

  

  互联网在变,架构也在变。架构的变迁亦是互联网的变迁。

  作甚架构?往大了说,宇宙有架构,社会有架构;往小了说,构筑要有架构,软件要有架构;说玄乎一点,它由分工而来,回归团体而去;往实际了说,架构的核心就是为了办理题目,包罗业务的题目、人的题目。

  驻足互联网行业,架构通常指的是技能架构,更具体一点的说是体系架构、软件架构,大概是最常见的网站架构。

  本文就来探究一下互联网期间,技能架构的演进过程及其优缺点。

  为了方便表述,我姑且把互联网的架构演进过程分为三个期间:单机期间、集群期间和分布式期间。三个期间并非按照时间发展次序分列,更多的是由团队或产物所处的时期来决定。

  单机期间

  互联网早期,比如某个产物团队初创之时,资源有限,人力不敷,为了快速开辟一个产物,或上线一个网站,单机每每是一个不错的选择。此时会将应用程序、文件服务、数据库服务等资源会合在一台Server上。此中应用程序通常团体打包和摆设,具体格式依靠于应用的语言和框架,比方Java的WAR文件、Rails的目次文件,此种架构通常称为单体架构。

  单体架构

  其体系架构图每每长这个样子:

  

  图-1:单机期间-ALLINONE

  长处:如上文所述,简单快速,易于开辟,易于测试,易于摆设

  缺点:也非常明显,只得当早期项目,变大后不易维护,且存在单点,升级必要停服

  分层架构

  明眼人会发现,此时的应用程序架构显得紊乱无章。在早期的Web开辟中大概存在,比如利用JSP+JDBC,ASP+ADO,这显然不是一个友爱的标准架构,于是分层架构应运而生。

  分层架构如下图所示,一样平常分为表现层(presentation)、业务层(business)、长期层(persistence)和数据库(database)。这着实也是最常见的MVC架构。

  

服务器都有什么特征图(服务器的主要特性) 服务器都有什么特性
图(服务器的重要
特性)「服务器的主要特性」 行业资讯

图-2:单机期间-软件架构-分层架构

  改造之后的体系架构图如下:

服务器都有什么特征图(服务器的主要特性) 服务器都有什么特性
图(服务器的重要
特性)「服务器的主要特性」 行业资讯

  

  图-3:单机期间-分层架构

  长处:布局简单,分工明白,分层测试,假如你不知道用什么软件架构时,保举用它

  缺点:扩展性差,迭代开辟服从低,偶然间条理过多导致流程复杂

  数据分离

  添加了分层架构,应用上悦目点了,团队的开辟服从有了肯定的提拔。此时业务量进一步增大,而且有了肯定的用户规模,渐渐发现一台主机上应用和数据资源夺取的非常锋利。由于每种服务对硬件资源的要求是差别的,应用服务器必要更快的CPU,文件服务器必要更大的硬盘,数据库服务器必要更大的内存和硬盘,于是决定把应用和数据服务分离,形成了如下架构:

  

  图-4:单机期间-数据分离

  长处:资源分散,进步差别服务对硬件的利用率,方便维护

  缺点:增长了资源斲丧和网络开销,同时还存在单点

  缓存登场

  产物有了肯定的口碑,用户量连续增长,访问开始频仍,想提拔访问速率,缓存必不可少,此时便闪亮登场。

  

  图-5:单机期间-缓存登场

  服务端缓存又可以分为本地缓存和长途缓存,各有优劣,本地缓存访问速率快,但数据量有限,而且后续集群化不方便共享;长途缓存可以共享,可以集群,容量不受限定,但要留意缓存更新的题目。

  长处:简单有效,镌汰对DB的查询

  缺点:增长逻辑判定,不得当存储大对象,此架构同样有单点

  读写分离

  市场反响不错,业务也在连续增长,但性能又有所降落,分析整个架构,发现数据库读写非常频仍,乃至有些业务,读大于写,单台数据库服务器又成了瓶颈,此时就可以实行做读写分离和主从复制了。

  

  图-6:单机期间-读写分离

  长处:低落数据库单台压力,从机的数量可以机动变动

  缺点:架构开始变得复杂,维护难度加大

  自此,单机期间的架构已然成型,“麻雀虽小五脏俱全”,初期已经能很好地支持业务的运转。

  但随着业务的增长,各个模块还是大概出现瓶颈。单机期间最大的题目,就是整个架构都存在单点,这个题目将在集群期间逐一办理。

  集群期间

  单机期间,做了不少步伐来缓解数据库层的压力,包罗服务器分离、引入缓存、数据分离等,但随着访问量的猛增,对高可用的要求越来越高,减轻应用层压力、办理单点题目成了当务之急,这就是集群期间必要做的事变。

  负载均衡

  代码是架构的底子,但前期改造代码的工作量较大,假如职员变动频仍,那风险就更高了,以是进步服务器性能,常用的本领还是先将应用集群化,做负载均衡。

  

  图-7:集群期间-负载均衡

  长处:去除应用层单点,可用性得到包管,性能有所进步

  缺点:这时要留意应用之间的同等性题目,比如对缓存的访问,对Session的存储

  动静分离

  盼望进一步低落应用服务器的压力,可以采取动静分离技能。

  动静分离是让动态网站里的动态网页,根据肯定规则把稳固的资源和常常变的资源区分开来,动静资源做好拆分以后,我们还可以根据静态资源的特点将其做缓存操纵,以加快相应速率。

  在网易杭研,常用做法还会将前后端分离,后端应用提供API,根据前端的哀求举行处理惩罚,并将处理惩罚结果通过JSON格式返回至前端。

  

  图-8:集群期间-动静分离

  长处:减轻应用服务器压力,缓存静态文件,加快相应速率,前后端分离,开辟可以并行。

  缺点:静态文件缓存更新失效题目,前后端沟通本钱进步

  CDN加快

  内容分发网络(ContentDeliveryNetwork),简称CDN),可以进一步加快网站相应。其原理是将源内容同步到天下各边沿节点,共同精准的调治体系,将用户哀求分配至最得当他的节点,利用户可以以最快的速率取得所需内容。

  

  图-9:集群期间-CDN加快

  长处:办理网络带宽小、用户访问量大、网点分布不均等题目,进步用户访问的相应速率,减轻应用负载压力。

  缺点:显然本钱上去了,CDN服务一样平常是按流量计费,同时也存在静态文件缓存更新失效题目。

  冗余集群

  以上一个中型网站架构根本成型。当中型网站继承向大型网站演进,终极的目标是要包管“三高”:高并发、高性能、高可用。

  以上架构根本可以满意性能需求,接下来更多地是关注“高可用”,确保“无单点”。

  此时,就要对关键的服务,做冗余集群负载。

  抱负环境下,我们将以下服务/应用都集群化:

  1.数据库服务集群

  2.文件服务集群

  3.缓存服务集群

  4.应用服务集群

  5.负载均衡调治器集群

  6.静态内容服务集群

  7.CDN服务器集群

  

  图-10:集群期间-冗余集群

  长处:去单点,高可用

  缺点:数据有状态题目、数据同等性题目,资源本钱、人力维护本钱都上去了

  到此为止,一个大型网站的架构也根本成型了。能“加呆板”的地方都加完了,是不是就闭幕了?固然不是!陪伴着DT/分布式期间的到来,大流量和大数据的场景的出现,对应用提出了更高的要求,接下来就必要对应用程序开刀了。

  分布式期间

  应用拆分

  在前面,我们只是把应用程序做了分层架构,在创业初期或产物前期还是一个不错的选择。固然应用也做了集群和负载均衡,但应用架构层面还是“会合式”的。随着业务越来越复杂,网站的功能越来越多,应用拆分势在必行了。

  长处:应用解耦,分拆团队负责,分而治之

  缺点:架构变复杂

  应用拆分之后,还陪伴着一个相互依靠、公共模块的题目,特别是依靠于雷同的逻辑或功能代码。这时就可以思量将这些共用的服务提取出来,独立摆设,同一管理,进步重用度,这就是面向服务的架构(service-orientedarchitecture,缩写SOA)了。

  消息队列

  应用拆分、服务独立摆设之后,还是会出现一些通讯或依靠题目,这时就可以引入消息队列,进步吞吐量。

  长处:异步、解耦,进步吞吐量

  缺点:消息斲丧耽误等题目

  数据分库

  应用拆分之后,DB分库理所固然,否则多个应用毗连在单个数据库上,毗连数、QPS、TPS、I/O处理惩罚本领都非常有限。

  长处:DB分压,低落耦合

  缺点:数据访问模块冗余、复杂

  提到分库,不少人会想到分表,这一块我并未实践过,不好下笔。但想来会引入更复杂的数据架构和数据同等性题目,而且市面上成熟开源的分库分表方案并没有,保禁绝又是一个深坑。拆或不拆,也是一个值得思考的题目。

  微服务架构

  微服务架构(microservicesarchitecture)一度成为热门,在文章、博客、大会演讲上常常被提及。

  微服务并不是凭空出现,有人说,它是面向服务架构(SOA)的升级,在此之前,尚有诸如会合式架构、分布式的架构等。这里借用一副抽象的图来形貌下常见的几种架构:

  

图-11:分布式期间-微服务架构-抽象对比

  微服务架构由多个微小服务构成,每个服务就是一个独立的可摆设单位或组件,它们是分布式的,相互解耦的,通过轻量级长途通讯协议(比如REST)来交互。每个服务可以利用差别的数据库,而且是语言无关性的。它的特性是相互独立、微小、轻量、松耦合,又能方便地组合和重构,如同《超能陆战队》中的微型呆板人,个体简单,但组合起来威力强大。

  

图-12:分布式期间-微服务架构

  长处:扩展性好,服务之间耦合性低,服务间相互独立,轻易摆设,易于开辟,方便测试每一个服务

  缺点:轻易太过关注服务的巨细,大概拆分地很细,导致体系依靠于大量的微服务,而服务之间的相互通讯也会变得复杂,体系集成复杂度增长,很难实现原子性操纵

  微服务之以是这么火,另一个缘故起因是由于Docker的出现,它让微服务有一个非常美满的运行环境。Docker的独立性和细粒度非常匹配微服务的理念,Docker的良好性能和丰富的管理工具,让各人对微服务有了肯定的信心,概括来说Docker有如下四点得当微服务:

独立性:一个容器就是一个完备的实行环境,不依靠外部的任何东西。

细粒度:一台物理呆板可以同时运行成百上千个容器,其盘算粒度充足小。

快速创建和烧毁:容器可以在秒级举行创建和烧毁,非常得当服务的快速构建和重组。

美满的管理工具:数量浩繁的容器编排管理工具,可以或许快速地实现服务的组合和调治。

  固然,好的架构和技能要应用于实践,必要用户承认才行,这就必要在微服务架构和Docker技能上有丰富的场景化应用。网易蜂巢也在积极探索微服务架构和容器云平台的场景化服务,欢迎一起来实践落地。

  至此,架构变迁的三个期间先容完成。总的来说架构不是一成稳固的,时间不绝,进步不止,人云云,架构依然。

  跋文

  对我来说,架构之路小有实践,但实属尚浅,想探究下这个话题,一下不知从何下笔,沉思很久,想到之前读过不少业界先辈对于架构的叙述,比如王概凯老师执笔的《架构漫谈》,比如O'Reilly免费出书的小册子《SoftwareArchitecturePatterns》,比如前人对架构的探索总结,受益匪浅,搜集成文。

  文章泉源:网易实践者社区

  原文作者:黄庆兵

  -END-

客户评论

我要评论