像淘宝、京东这样的大型电商网站服务器构架完全部署方案

news/2024/5/14 2:50:59/文章来源:https://blog.csdn.net/weixin_30328063/article/details/96110915

任何一个大型网站都是经历用户积累然后成长,从一台服务器到多台服务器才能构架支撑网站现有数据、用户、页面请求等。大型网站(如淘宝、京东等)的系统架构并不是开始设计就具备完整的高性能、高可用、安全等特性,它总是随着用户量的增加,业务功能的扩展逐渐演变完善的,在这个过程中,开发模式、技术架构、设计思想也发生了很大的变化,就连技术人员也从几个人发展到一个部门甚至一条产品线。所以成熟的系统架构是随业务扩展而完善出来的,并不是一蹴而就;不同业务特征的系统,会有各自的侧重点,例如淘宝,要解决海量的商品信息的搜索、下单、支付,例如腾讯,要解决数亿的用户实时消息传输,百度它要处理海量的搜索请求,他们都有各自的业务特性,系统架构也有所不同。尽管如此我们也可以从这些不同的网站背景下,找出其中共用的技术,这些技术和手段可以广泛运行在大型网站系统的架构中,下面就通过介绍大型网站系统的演化过程,来认识这些技术和手段。

一、最开始的网站架构 最初的架构,应用程序、数据库、文件都部署在一台服务器上,如图:

 

daxingwangzhan-001

  二、应用、数据、文件分离 随着业务的扩展,一台服务器已经不能满足性能需求,故将应用程序、数据库、文件各自部署在独立的服务器上,并且根据服务器的用途配置不同的硬件,达到最佳的性能效果。

 

 

daxingwangzhan-002

  三、利用缓存改善网站性能 在硬件优化性能的同时,同时也通过软件进行性能优化,在大部分的网站系统中,都会利用缓存技术改善系统的性能,使用缓存主要源于热点数据的存在,大部分网站访问都遵循28原则(即80%的访问请求,最终落在20%的数据上),所以我们可以对热点数据进行缓存,减少这些数据的访问路径,提高用户体验。

 

 

daxingwangzhan-003

  缓存实现常见的方式是本地缓存、分布式缓存。当然还有CDN、反向代理等,这个后面再讲。本地缓存,顾名思义是将数据缓存在应用服务器本地,可以存在内存中,也可以存在文件,OSCache就是常用的本地缓存组件。本地缓存的特点是速度快,但因为本地空间有限所以缓存数据量也有限。分布式缓存的特点是,可以缓存海量的数据,并且扩展非常容易,在门户类网站中常常被使用,速度按理没有本地缓存快,常用的分布式缓存是Memcached、Redis。

 

四、使用集群改善应用服务器性能 应用服务器作为网站的入口,会承担大量的请求,我们往往通过应用服务器集群来分担请求数。应用服务器前面部署负载均衡服务器调度用户请求,根据分发策略将请求分发到多个应用服务器节点。

 

daxingwangzhan-004

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

 

五、数据库读写分离和分库分表 随着用户量的增加,数据库成为最大的瓶颈,改善数据库性能常用的手段是进行读写分离以及分表,读写分离顾名思义就是将数据库分为读库和写库,通过主备功能实现数据同步。分库分表则分为水平切分和垂直切分,水平切换则是对一个数据库特大的表进行拆分,例如用户表。垂直切分则是根据业务不同来切换,如用户业务、商品业务相关的表放在不同的数据库中。

 

daxingwangzhan-005

  六、使用CDN和反向代理提高网站性能 假如我们的服务器都部署在成都的机房,对于四川的用户来说访问是较快的,而对于北京的用户访问是较慢的,这是由于四川和北京分别属于电信和联通的不同发达地区,北京用户访问需要通过互联路由器经过较长的路径才能访问到成都的服务器,返回路径也一样,所以数据传输时间比较长。对于这种情况,常常使用CDN解决,CDN将数据内容缓存到运营商的机房,用户访问时先从最近的运营商获取数据,这样大大减少了网络访问的路径。比较专业的CDN运营商有蓝汛、网宿。

 

daxingwangzhan-006

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

七、使用分布式文件系统 用户一天天增加,业务量越来越大,产生的文件越来越多,单台的文件服务器已经不能满足需求。需要分布式的文件系统支撑。常用的分布式文件系统有NFS。

 

daxingwangzhan-007

  八、使用NoSql和搜索引擎 对于海量数据的查询,我们使用nosql数据库加上搜索引擎可以达到更好的性能。并不是所有的数据都要放在关系型数据中。常用的NOSQL有mongodb和redis,搜索引擎有lucene。

 

 

daxingwangzhan-008

  九、将应用服务器进行业务拆分 随着业务进一步扩展,应用程序变得非常臃肿,这时我们需要将应用程序进行业务拆分,如百度分为新闻、网页、图片等业务。每个业务应用负责相对独立的业务运作。业务之间通过消息进行通信或者同享数据库来实现。

 

 

daxingwangzhan-009

  十、搭建分布式服务 这时我们发现各个业务应用都会使用到一些基本的业务服务,例如用户服务、订单服务、支付服务、安全服务,这些服务是支撑各业务应用的基本要素。我们将这些服务抽取出来利用分部式服务框架搭建分布式服务。淘宝的Dubbo是一个不错的选择。

 

 

daxingwangzhan-0091

  大型网站的架构是根据业务需求不断完善的,根据不同的业务特征会做特定的设计和考虑,本文只是讲述一个常规大型网站会涉及的一些技术和手段。

转载于:https://www.cnblogs.com/tangsen/p/5148415.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_826598.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

又闹事!伊拉克黑客Pro_Mast3r纂改了特朗普竞选网站的子域名

本文讲的是又闹事!伊拉克黑客Pro_Mast3r纂改了特朗普竞选网站的子域名,特朗普自从参与竞选以来,一直话题不断,尤其是有关网络安全的话题更是令人不安。近日又有报道称,一个来自伊拉克的黑客组织“Pro_Mast3r”于上周日…

基于Yahoo网站性能优化的34条军规及自己的见解

1、尽量减少HTTP请求次数 终端用户响应的时间中,有80%用于下载各项内容,这部分时间包括下载页面中的图像、样式表、脚本、Flash等。通过减少页面中的元素可以减少HTTP请求的次数,这是提高网页速度的关键步骤。 减少页面组件的方法其实就是简化…

【网站建设】搭建简单动态网站

2019独角兽企业重金招聘Python工程师标准>>> 课程介绍 通过前面Clouder课程的学习,或许你已经掌握了在云服务器上发布和部署静态网页的方法,那么如何搭建一个可以随时更新内容的动态网站?通过本课程的学习,你将掌握如何…

大型网站架构演变和知识体系

转载:http://www.blogjava.net/BlueDavy/archive/2008/09/03/226749.html 大型网站架构演变和知识体系 之前也有一些介绍大型网站架构演变的文章,例如LiveJournal的、ebay的,都是非常值得参考的,不过感觉他们讲的更多的是每次演变…

日志处理实战:一个外卖网站解决方案(持续更新中)

背景 “我要点外卖“是一个平台型电商网站,用户、餐厅、配送员等。用户可以在网页、App、微信、支付宝等进行下单点菜;商家拿到订单后开始加工,并自动通知周围的快递员;快递员将外卖送到用户手中。 在运营的过程中,发现…

深度学习驱动智能搜索引擎,RankBrain革了SEO的命

去年开始,谷歌使用以深度学习为基础的人工智能核心搜索算法RankBrain,用越来越“类人化”的算法个性定制每个搜索结果。 【编者按】本文由新智元编译,来源:techcrunch,作者:John Rampton,译者&…

C#ASP.NET打包安装部署文件一键安装网站,包括IIS站点创建、数据库附加。

最近在开发web网站安装部署,以前从来没有做过web的安装打包没有头绪就开始上网查资料。 查了两天资料发现网上的资料要么不全要么就有错误,我就总结了网上的资料重新整理的一番,经过本人测试可用无错误 一下为借鉴部分资料的原文地址 此链接为…

服务器的购买与网站的创建

服务器的购买、配置、以及网站的搭建本文提供全流程,中文翻译。 Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 —— 高分辨率用户请根据需求调整网页缩放比例) Chinar —— 心分享、心创新!…

网站攻防

1.创建实验后,打开实验网址:192.168.5.13,界面如下: 2.通过在网址后添加常用的后台指令来尝试是否能进入后台,如admin、admin.php等: 3.从上一步可以看出,无法通过admin等方式进入后台&#xff…

.net发布网站步骤

本文章分为三个部分: web网站发布、IIS6 安装方法、ASP.NET v4.0 安装方法 一、web网站发布 1.打开 Visual Studio 2013 编译环境 2.在其解决方案上右击弹出重新生成解决方案,以查看是否有错误 3.如果项目没有错误右击WebUI层发布 4.这样将会看到以下界面 5.在配置文件中新建配…

嵌入式学习路线怎么学?开发嵌入式培训网站推荐

在这个互联网的快速发展的时代,科技不断的创新嵌入式也开始逐渐的越来越火热,随着这一股风波也有越来越多的人投入到嵌入式开发的行列中来,那么想要学习嵌入式,该从哪里入手学习,嵌入式学习路线图怎么学?想…

html手机网页新闻模板,新浪手机新闻网站模板首页html源码

【实例简介】新浪手机html网页模板【实例截图】【核心代码】新浪手机新闻网站模板首页html源码├── css│ ├── add2home.min.css│ ├── blue1.css│ ├── channel.min.js│ ├── common.min.css│ ├── home.min.css│ └── style.min.css├── i…

国外最火的电商网站magento2:系列(一)虚拟机、centos7的安装

能了解什么: 本系列将会带你从0到1学会安装magento2! 1.虚拟机的安装,centos7.2镜像的下载安装 2.下载并且配置nginx 3.下载并且配置php 4.让nginx适配magento2 5.下载并且配置magento2 6.安装过程中遇到的报错,问题 其中的整个中…

Java 专业人士必备的书籍和网站列表

对于 Java™ 语言开发人员来说,信息过量是一个真正的问题。每个新入行的程序员都要面临一个令人畏缩的挑战:要进入的行业是一个具有海量知识的行业。要了解的东西简直太多了。对于有经验的老手来说,情况只有些微好转。知识量总在增大&#xf…

优化网站性能 提高网站速度访问速度的14条实践

相信互联网已经越来越成为人们生活中不可或缺的一部分。ajax,flex等等富客户端的应用使得人们越加“幸福”地体验着许多原先只能在C/S实现的功能。比如Google机会已经把最基本的office应用都搬到了互联网上。当然便利的同时毫无疑问的也使页面的速度越来越慢。自己是…

利用Velocity模板引擎制作网站

基于 Java 的网站开发,很多人都采用 JSP 作为前端网页制作的技术,尤其在是国内。这种技术通常有一些问题,我试想一下我们是怎样开发网站的,通常有几种方法1:功能确定后,由美工设计网页的UI(界面…

一个Hibernate的HQL转换成各种数据库SQL语句的在线网站很强

项目中经常使用Herbernate写HQL可能写的有问题,但是不知道,哪里错误,经过几番努力终于找到了,可以 一个Hibernate的HQL转换成各种数据库SQL语句的在线网站很强。可以在这个网站测试一下。哈哈a 确实很强,但是如果想拥有…

php 503服务无效,网站打开报错503 Service Unavailable 原因与解决办法

网站无故出现如下错误提示:Service UnavailableThe server is temporarily unable to service your request due to maintenance downtime or capacity problems. Please try again later.翻译过来就是:服务不可用由于维护停机或容量问题,服务…

【转】HTML5学习必备的15权威网站

给大家推荐一下学习研究HTML5必备的一些个网站,更加有利于大家对HTML5的学些和研究。如果各位童鞋还有更多的,欢迎投递资源给我们,也可以支持我们,让我们利用大家的力量收集更多的HTML5学习资料,让我们的开发者和HTML5…

【转】8 个移动产品设计必备网站

本文整理了8个移动设计资源丰富的网站,希望对你的开发设计工作有所帮助。 1. Patterns of Design Patterns是一个分享iOS应用UI的网站,专注于分享iOS应用UI的细节,按照设计元素和iOS常用功能进行分类。 2. iOS UI PatternsiOS UI Patterns…