【干货】大型网站系统架构的演进

ShopSuite电商系统2021-01-12 10:50:11电商资讯

成熟的大型网站(如淘宝, 京东,等)的系统架构。)不具备高性能、高可用性、安全性等完整特征。它总是随着用户的增加和业务功能的拓展而不断演进和完善。在这个过程中,开发模式、技术架构、设计思路也发生了很大的变化,甚至技术人员从几个人发展到一个部门甚至一条产品线。所以成熟的系统架构是随着业务的拓展而完善的,不是一蹴而就的;不同业务特性的系统会有各自的侧重点。

例如,在淘宝,必须解决搜索、下单和支付海量商品信息的问题。例如,在腾讯,需要解决数亿用户的实时消息传输问题。在百度,它必须处理大量的搜索请求。他们都有自己的业务特点,他们的电子商务平台建设架构也不同。然而,我们可以从这些不同的网站中找到共同的技术,这些技术可以广泛应用于大型网站系统的框架中。在这里,我们将介绍大型网站系统的演进过程,以了解这些技术和手段。

首先,最初的网站架构

在原始体系结构中,应用程序、数据库和文件都部署在一台服务器上,如图所示:

二、应用、数据、文件分离

随着业务的扩展,一台服务器已经不能满足性能要求。因此,应用程序、数据库和文件部署在独立的服务器上,并根据服务器的目的配置不同的硬件,以实现最佳性能。

第三,使用缓存提高网站性能

硬件优化性能的同时,也通过软件优化性能。在大多数网站系统中,缓存技术用于提高系统性能。缓存主要是因为热数据的存在。大多数网站访问遵循28原则(即80%的访问请求落在20%的数据上),所以我们可以缓存热点数据,减少这些数据的访问路径,提高用户体验。

实现缓存的常见方式有本地缓存和分布式缓存。当然还有CDN,反向代理等等,后面会讲到。本地缓存,顾名思义,在应用服务器上本地缓存数据,数据可以存在于内存或文件中。Oscar是一个常见的本地缓存组件。本地缓存的特点是速度快,但由于本地空间有限,缓存的数据量有限。分布式缓存的特点是可以缓存海量数据,易于扩展。常用于门户网站,速度不如本地缓存快。常用的分布式缓存有Memcached和Redis。

第四,使用集群来提高应用服务器的性能

应用服务器作为网站的门户,会承担大量的请求,我们经常通过应用服务器集群来分享请求的数量。部署在应用服务器前面的负载均衡服务器调度用户请求,并根据分发策略将请求分发到多个应用服务器节点。

常用的负载均衡技术硬件是F5,比较贵,软件是LVS,Nginx,HAProxy。LVS是四层负载均衡系统,根据目标地址和端口选择内部服务器,Nginx是七层负载均衡系统,HAProxy支持四层和七层负载均衡,可以根据消息内容选择内部服务器。因此,LVS分发路径优于性能更高的Nginx和HAProxy,而Nginx和HAProxy则更具可配置性,例如可用于动态和静态分离(根据请求消息特征选择静态资源服务器或应用服务器)。

5.数据库、子数据库、子表读写分离

随着用户数量的增加,数据库成为最大的瓶颈。提高数据库性能的常用方法是读写分离和表分离。读写分离顾名思义就是将数据库分为读写库和写写库,通过主备功能实现数据同步。子数据库和子表分为水平分割和垂直分割,水平切换是对数据库非常大的表进行拆分,比如用户表。垂直细分根据不同的业务进行切换,比如不同数据库中的用户业务和商品业务相关表。

第六,使用CDN和反向代理来提高网站性能

如果我们的服务器部署在成都,的计算机房,四川用户的访问速度更快,北京用户的访问速度更慢,这是因为四川和北京分别属于电信和联通,的不同发达地区。北京的用户需要通过互联路由器经过很长的路径访问成都的服务器,返回路径也是一样,所以数据传输时间比较长。在这种情况下,通常使用CDN来解决问题。CDN在运营商机房缓存数据内容,用户访问时先从最近的运营商获取数据,大大减少了网络访问路径。比较专业的CDN运营商是蓝迅和NetHosting。

反向代理部署在网站的机房。当用户的请求到达时,反向代理服务器将首先访问反向代理服务器,反向代理服务器将向用户返回缓存的数据。如果没有缓存的数据,会继续去应用服务器获取,也降低了获取数据的成本。反向代理是Squid和Nginx。

七、分布式文件系统的使用

用户日益增多,业务量不断增加,产生的文件越来越多,单一的文件服务器已经不能满足需求。它需要分布式文件系统支持。最常用的分布式文件系统是NFS。

八、使用NoSql和搜索引擎

对于海量数据查询,我们可以通过使用nosql数据库和搜索引擎来获得更好的性能。不是所有的数据都应该放在关系数据中。常用的NOSQL是mongodb和redis,搜索引擎是lucene。

九、应用服务器业务拆分

随着业务的进一步扩展,应用变得非常臃肿。这时候就需要把应用拆分成业务,比如新闻、网页、图片等业务。每个业务应用程序负责相对独立的业务操作。服务之间的通信是通过消息或共享数据库来实现的。

X.构建分布式服务

这时我们发现每个业务应用都会用到一些基本的业务服务,比如用户服务、订单服务、支付服务、安全服务,这些都是支撑每个业务应用的基本要素。我们提取这些服务,并通过使用部分服务框架来构建分布式服务。淘宝的杜博是个不错的选择。

总结

大型网站的架构会根据业务需求不断完善,会根据不同的业务特点进行具体的设计和考虑。本文仅描述常规大型网站所涉及的一些技术和手段。


随商信息技术(上海)有限公司 b2b2c多用户商城系统是基于PHP技术的企业级电子商务平台系统,系统支持平台自营、招商加盟和多商家入驻、集成微信商城、移动端APP商城、微信小程序于一体。公司主营业务包含商城系统定制开发、新零售系统解决方案、电商平台系统定制开发、商城网站建设服务等等,ShopSuite为大、中、小企业提供一个安全、高效、强大的电子商务解决方案,协助企业快速构建、部署和管理其电子商务平台,拓展企业销售渠道,致力于推动PHP技术和电子商务行业的发展而不断努力。

文章关键词  
电商网站开发
电子商务网站制作
购物商城系统