大型网站服务器是什么架构?
发布时间:2021-01-04作者:小编阅读:0
任何大型网站都是经历用户积累,然后成长。从一台服务器到多台服务器才能支持网站的现有数据、用户和页面请求。大型网站(如淘宝、JD.COM等)的系统架构。)就具备高性能、高可用性、安全性等特征。它总是随着用户的增加和业务功能的拓展而不断演进和完善。在这个过程中,开发模式、技术架构、设计思路也发生了很大的变化,甚至技术人员也从几个人发展到一个部门甚至一条产品线。所以成熟的系统架构是随着业务的拓展而完善的,不是一蹴而就的;不同业务特性的系统会有各自的侧重点。比如淘宝就要解决海量商品信息的搜索、下单、支付等问题。比如腾讯要解决几亿用户的实时消息传递问题,百度要处理海量的搜索请求。他们都有自己的业务特点和不同的系统架构。然而,我们可以从这些不同的网站中找到可以广泛应用于大型网站系统架构中的常见技术。以下亿联云介绍大型网站系统的演进过程,了解这些技术和手段。
1、最开始的网站架构
初始架构、应用程序、数据库和文件都部署在一台服务器上。
2、应用程序、数据和文件的分离
随着业务的扩展,一台服务器已不能满足性能要求。因此,应用程序、数据库和文件部署在独立的服务器上,并根据服务器的目的配置不同的硬件,以实现最佳性能。
3、利用缓存提高网站性能
硬件优化性能的同时,也通过软件优化性能。在大多数网站系统中,缓存技术用于提高系统性能。缓存主要是因为热点数据的存在。大多数网站访问遵循28原则(即80%的访问请求落在20%的数据上),所以我们可以缓存热点数据,减少这些数据的访问路径,提高用户体验。
实现缓存的常见方式有本地缓存和分布式缓存。当然还有CDN,反向代理等等。本地缓存,顾名思义,在应用服务器上本地缓存数据,数据可以存在于内存或文件中。OSCache是一个常见的本地缓存组件。本地缓存的特点是速度快,但由于本地空间有限,缓存的数据量有限。分布式缓存的特点是可以缓存海量数据,易于扩展。常用于门户网站,速度不如本地缓存快。常用的分布式缓存有Memcached和Redis。
4、利用集群来提高应用服务器的性能
作为网站的入口,应用服务器会承载大量的请求,我们经常通过应用服务器集群来分担请求的数量。部署在应用服务器前面的负载均衡服务器调度用户请求,并根据分发策略将请求分发到多个应用服务器节点。
常用的负载均衡技术硬件是F5,比较贵,软件是LVS,Nginx,HAProxy。LVS是四层负载均衡系统,根据目标地址和端口选择内部服务器,Nginx是七层负载均衡系统。
HAProxy支持四层和七层负载均衡,可以根据消息内容选择内部服务器,所以LVS分发路径优于Nginx和HAProxy,性能更高,而Nginx和HAProxy更可配置,比如用于动态和静态分离(根据请求消息的特点选择静态资源服务器或应用服务器)。
5、数据库读写分离和分库分表
随着用户的增加,数据库成为最大的瓶颈。提高数据库性能的常用方法是读写分离和分表。读写分离顾名思义就是将数据库分为读写两部分,通过主备功能实现数据同步。分库分表则分为水平切分和垂直切分,水平切换则是对一个数据库特大的表进行拆分,例如用户表。垂直切分则是根据业务不同来切换,如用户业务、商品业务相关的表放在不同的数据库中。
6、利用CDN和反向代理提高网站性能?
如果我们的服务器部署在亿联云的佛山高防机房,广东用户访问更快,北京用户访问更慢。这是因为广东和北京分别属于中国电信和中国联通不同的发达地区,北京用户需要经过很长的路径才能通过互联路由器访问广东的服务器,返回路径是一样的,所以数据传输时间更长。在这种情况下,通常使用CDN来解决问题。CDN在运营商机房缓存数据内容,用户访问时先从最近的运营商获取数据,大大减少了网络访问路径。专业的CDN运营商有蓝讯、网托管等。
反向代理部署在网站的机房。当用户的请求到达时,反向代理服务器将首先访问反向代理服务器,反向代理服务器将向用户返回缓存的数据。如果没有缓存的数据,会继续去应用服务器获取,也降低了获取数据的成本。反向代理有Squid和Nginx。
7、使用分布式文件系统
用户日益增多,业务量不断增加,产生的文件越来越多,单一的文件服务器已经不能满足需求。它需要分布式文件系统支持。最常用的分布式文件系统是NFS。
8、使用NoSql和搜索引擎
对于海量数据查询,我们可以通过使用nosql数据库和搜索引擎来获得更好的性能。不是所有的数据都应该放在关系型数据中。常用的NOSQL是mongodb和redis,搜索引擎是lucene。
9、拆分应用服务器的业务
随着业务的进一步扩展,应用变得非常臃肿。此时,我们需要将应用程序分成新闻、网页、图片和其他服务。每个业务应用程序负责相对独立的业务操作。服务之间的通信是通过消息或共享数据库来实现的。
10、构建分布式服务
这时我们发现每个业务应用都会用到一些基本的业务服务,比如用户服务、订单服务、支付服务、安全服务,这些都是支撑每个业务应用的基本要素。我们提取这些服务,并通过使用部分服务框架来构建分布式服务。淘宝的Dubbo是个不错的选择。
大型网站的架构会根据业务需求不断完善,会根据不同的业务特点进行具体的设计和考虑。本文仅描述常规大型网站所涉及的一些常规技术和手段。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,请联系站长邮箱:shawn.lee@eliancloud.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。
标题:大型网站服务器是什么架构?
TAG标签:企业服务器
地址:https://www.elinkcloud.cn/article/20210104202332.html