当前位置: 首页 > 科技观察

大型分布式服务器架构原理解析

时间:2023-03-16 13:53:42 科技观察

作为技术人员的我们都知道,几乎所有的项目都是从简单到复杂,从单机到集群服务器的开发过程。但是有多少人知道这其中的技术原理呢?其实,这并没有那么深奥。那么码君就一一给大家介绍啦~第一阶段:初期的网站结构一般来说,大网站都是由小网站发展而来的。随着用户数量的激增,我们开始做很多架构上的改进。当它是一个小网站时,访问者并不多。一般来说,一台服务器就够了。这时候,应用程序、数据库、文件等所有资源都在一台服务器上。网站架构如下图所示:第二阶段:应用服务和数据服务分离随着网站业务的发展和用户数量的增加,一台服务器已经不能满足需求。大量的用户访问导致访问速度越来越慢,逐渐增加的数据也会导致存储空间不足。这时候就需要将应用和数据分离。应用和数据分离后,整个网站使用3台服务器:应用服务器、文件服务器和数据库服务器。这三种服务器对硬件资源的要求不同:1、应用服务器的业务逻辑需要强大的CPU;上传的文件需要更多的磁盘空间。此时网站系统架构如下图所示:第三阶段:使用缓存提升网站性能。随着用户的增多,网站将再次面临挑战:数据库压力过大导致整个网站的访问效率进一步降低,用户体验受到影响。对于一个网站来说,80%的业务访问往往集中在20%的数据上。比如点赞最多的微博,肯定是那些粉丝多的大V的微博,而且几乎没有人关注你的主页,除了你自己,想起来根本不会打开。由于大部分业务访问都集中在一小部分数据上,所以应该将这小部分数据提前缓存在内存中,而不是每次都去数据库读取,这样可以降低数据库的访问压力,提高整体表现。网站的访问速度。网站使用的缓存一般分为缓存到应用服务器或缓存到专用的分布式缓存服务器上。缓存到应用服务器本身的访问速度要快很多,但是由于自身内存的限制,往往不适合。远程分布式缓存采用集群专用于缓存服务,在内存不足时可以轻松动态扩展。第四阶段:利用应用服务器集群提高网站的并发处理能力。使用缓存后,数据访问压力得到缓解,但单个应用服务器能够处理的请求连接数有限。在网站访问高峰期,应用服务器成为整个网站的主人。效率瓶颈。使用分布式集群是网站解决高并发、海量数据问题的常用方法。当一台服务器的处理能力和存储空间不足时,不要试图更换更强大的服务器。对于大型网站来说,再强大的服务器也无法满足网站不断增长的业务需求。这种情况下,增加一台服务器来分担原服务器的访问和存储压力比较合适。就网站架构而言,只要能够通过增加服务器来改善负载压力,同样可以通过不断增加服务器来不断提升系统性能,从而实现系统的可扩展性。应用服务器集群是一种比较简单成熟的网站可扩展架构设计,如下图所示:通过负载均衡调度服务器,可以将用户浏览器的访问请求分发到应用服务器集群中的任意一台服务器上,如果有更多的服务器用户,在集群中加入更多的应用服务器,让应用服务器的压力不再成为整个网站的瓶颈。第五阶段:数据库读写分离网站使用缓存后,大部分数据读取操作无需经过数据库即可完成,但仍有部分读取操作(不保证缓存访问,缓存过期)和所有所有写操作都需要访问数据库。网站用户量达到一定规模后,数据库负载压力大,成为网站瓶颈。目前大多数主流数据库都提供主从热备份功能。通过配置两个数据库之间的主从关系,可以将一台数据库服务器的数据更新同步到另一台服务器。网站利用数据库的这个功能,实现数据库的读写分离,从而改善数据库的负载压力。如下图所示:应用服务器写入数据时访问主库,主库通过主从复制机制将数据更新同步到从库,这样应用服务器读取数据时,可以从slave数据库获取数据。为了方便应用程序访问读写分离的数据库,通常在应用服务器端使用专门的数据访问模块,使数据库的读写分离对应用程序透明。第六阶段:使用反向代理和CDN加速网站响应随着网站业务的不断发展,用户规模越来越大。由于中国网络环境复杂,不同地区的用户访问网站时,速度差异很大。研究表明,网站访问延迟与用户流失率呈正相关,网站访问速度越慢,用户越容易失去耐心而离开。为了提供更好的用户体验,留住用户,网站需要加快网站访问速度。主要手段是使用CDN和反向代理。如下图所示:第七阶段:使用分布式文件系统和分布式数据库系统任何强大的单一服务器都无法满足大型网站不断增长的业务需求。数据库读写分离后,由一台服务器拆分为两台服务器。但是,随着网站业务的发展,仍然不能满足需要。这时候就需要分布式数据库了。文件系统也是如此,需要使用分布式文件系统。如下图所示:分布式数据库是最好的网站数据库拆分方式,只有在单表数据规模非常大的情况下才会使用。在不到万不得已的情况下,网站分库比较常见的做法是业务分库,将不同业务的数据部署在不同的物理服务器上。第八阶段:使用NoSQL和搜索引擎随着网站业务越来越复杂,对数据存储和检索的要求也越来越复杂。网站需要采用一些非关系数据库技术如NoSQL和非数据库查询技术如搜索引擎。如下图所示:NoSQL和搜索引擎都是源于互联网的技术手段,对可扩展性和分布式特性有较好的支持。应用服务器通过统一的数据访问模块访问各种数据,减少了应用程序管理众多数据源的麻烦。第九阶段:业务拆分为了应对日益复杂的业务场景,通过分治的方式将整个网站业务拆分成不同的产品线。例如,大型购物交易网站会将首页、店铺、订单、买家、卖家等拆分成不同的产品线,分配给不同的业务团队。在技??术上,一个网站也会根据产品线分成很多不同的应用,每个应用都是独立部署的。可以通过超链接建立应用之间的关系(首页的导航链接分别指向不同的应用地址),也可以通过消息队列进行数据分发。当然,最常见的方式是接入同一个数据存储系统,形成一个关联的完整系统,如下图所示:Stage10:分布式服务越来越小随着业务的拆分,存储系统越来越小越来越大,应用系统的整体复杂度呈指数级增长,部署和维护也越来越复杂。困难。由于所有的应用程序都需要连接所有的数据库系统,在一个拥有数万台服务器规模的网站中,这些连接的数量是服务器规模的平方,导致数据库连接资源不足而导致拒绝服务。由于每个应用系统都需要进行很多相同的业务操作,比如用户管理、商品管理等,所以这些共享服务可以抽取出来独立部署。这些可重用的服务与数据库相连,提供通用的业务服务,而应用系统只需要管理用户界面,通过分布式服务调用通用的业务服务即可完成特定的业务操作。如下图所示:好了,大型网站的结构就钻到这里了,大部分技术问题都能解决~给个赞吧~

猜你喜欢