大型网站系统架构演化之路

news/2024/5/20 11:31:36/文章来源:https://blog.csdn.net/weixin_30588907/article/details/99260543

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


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

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


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

三、利用缓存改善网站性能


在硬件优化性能的同时,同时也通过软件进行性能优化,在大部分的网站系统中,都会利用缓存技术改善系统的性能,使用缓存主要源于热点数据的存在,大部分网站访问都遵循28原则(即80%的访问请求,最终落在20%的数据上),所以我们可以对热点数据进行缓存,减少这些数据的访问路径,提高用户体验。
website_architecture_3
缓存常见的实现方式是本地缓存、分布式缓存。当然还有CDN、反向代理等,这个后面再讲。本地缓存,顾名思义是将数据缓存在应用服务器本地,可以存在内存中,也可以存在文件,OSCache就是常用的本地缓存组件。本地缓存的特点是速度快,但因为本地空间有限所以缓存数据量也有限。分布式缓存的特点是,可以缓存海量的数据,并且扩展非常容易,在门户类网站中常常被使用,速度按理没有本地缓存快,常用的分布式缓存是Memcached、Redis。

四、使用集群改善应用服务器性能


应用服务器作为网站的入口,会承担大量的请求,我们往往通过应用服务器集群来分担请求数。应用服务器前面部署负载均衡服务器调度用户请求,根据分发策略将请求分发到多个应用服务器节点。
website_architecture_4
常用的负载均衡技术硬件的有F5,价格比较贵,软件的有LVS、Nginx、HAProxy。LVS是四层负载均衡,根据目标地址和端口选择内部服务器,Nginx和HAProxy是七层负载均衡,可以根据报文内容选择内部服务器,因此LVS分发路径优于Nginx和HAProxy,性能要高些,而Nginx和HAProxy则更具配置性,如可以用来做动静分离(根据请求报文特征,选择静态资源服务器还是应用服务器)。

五、数据库读写分离和分库分表


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

六、使用CDN和反向代理提高网站性能


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

七、使用分布式文件系统


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

八、使用NoSql和搜索引擎


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

九、将应用服务器进行业务拆分


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

十、搭建分布式服务


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

转载于:https://www.cnblogs.com/linux130/p/5518728.html

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

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

相关文章

通过网站架构图吸取智慧

近段时间以来,通过接触有关海量数据处理和搜索引擎的诸多技术,常常见识到不少精妙绝伦的架构图。除了每每感叹于每幅图表面上的绘制的精细之外,更为架构图背后所隐藏的设计思想所叹服。个人这两天一直在搜集各大型网站的架构设计图&#xff0…

oracle优先站点的原理_青蓝互动:从SEO工作原理中找到搜索引擎背后的技术点

每天我们都要和搜索引擎打交道,搜索引擎就像是一个打分的老师,只有真正了解了搜索引擎,网站的分数才能得到最高。要想在搜索引擎上站稳脚跟,那么我们就需要知道它的四大工作原理——抓取、过滤、收录、排序。一、抓取:…

第5章 scrapy爬取知名问答网站

第五章感觉是第四章的练习项目,无非就是多了一个模拟登录。 不分小节记录了,直接上知识点,可能比较乱。 1.常见的httpcode: 2.怎么找post参数? 先找到登录的页面,打开firebug,输入错误的账号和密…

看完48秒动画,让你不敢再登录HTTP网站(附完整示例代码)

原文转至:http://www.cnblogs.com/baibaomen/p/http-session-hijack.html 在我的 单点登录SSO示例代码 一文中,强烈不建议部署HTTP的SSO服务站点。 在此写个基于网络包嗅探的HTTP会话劫持程序,给大家一个直观的危害性展示。 示例中&#xff0…

阿里云免费SSL数字证书,实现网站Https化

关于http和https不再赘述,参考: https://mp.weixin.qq.downloadcom/s/3NKOCOeIUF2SGJnY7II9hA 说在最前: 在阿里云购买的域名可以免费使用一年免费的SSL证书1. 获取阿里云免费证书方法 https://jingyan.baidu.com/article/6f2f55a17519f1b5b83e6c6b.html…

网站关键词布局设置,这样添加关键词排名很容易上来!

搜索引擎对你站点的识别、抓取、收录等流程都为机器操作,因此他们会识别本文或本站的目标关键词,咱们把这些关键词布局好,很容易会把网站排名给坐上来。为何这么说呢,今天咱们来谈谈网站关键词的布局设置。 拿着本站有排名的一篇文…

jenkins如何构建C#代码写的网站

纯粹是因为同事习惯了写C#代码,开发的网站用C#编译, 对于习惯了用Maven编译的测试人员,真是一头雾水。不用jenkins吧,效率特别低,每次收到开发发过来的版本,还要进行数据库相关配置,是非常累人的…

1080*1920 下看网站很爽

转载于:https://www.cnblogs.com/waynebaby/archive/2009/10/28/1591651.html

[导入]XmlHttp异步获取网站数据的例子

XmlHttp异步获取网站数据的例子文章来源:http://blog.csdn.net/net_lover/archive/2004/07/06/35220.aspx 转载于:https://www.cnblogs.com/zhaoxiaoyang2/archive/2004/07/06/816118.html

Block Site – Chrome™ 网站拦截程序

Block Site – Chrome™ 网站拦截程序 Block Site网站拦截程序的简介Block Site网站拦截程序的功能Block Site网站拦截程序的优点摘要:Block Site 是一款浏览器扩展程序,可让您根据定义的参数拦截特定网站。Block Site 维护和更新一个含有成人内容的已知…

一步步构建大型网站架构

之前我简单向大家介绍了各个知名大型网站的架构,MySpace的五个里程碑、Flickr的架构、YouTube的架构、PlentyOfFish的架构、WikiPedia的架构。这几个都很典型,我们可以从中获取很多有关网站架构方面的知识,看了之后你会发现你原来的想法很可能…

代码编程在线运行网站

目录 菜鸟工具 Dotcpp在线编译 代码测试 代码在线运行工具 在线工具 在线HTML/CSS/JavaScript代码运行工具 菜鸟工具 支持绝大部分语言的在线编译和运行 Dotcpp在线编译 支持的语言较少,有C,C,Java,Python以及PHP。 代码测试…

年度盛宴:2012年最佳25个响应式网站设计作品《上篇》

2012年,响应式网站设计成为主流,这个概念由著名网页设计师 Ethan Marcotte 在2010年5月份提出,其目标是要让设计的网站能够响应用户的行为,根据不同终端设备自动调整尺寸。 响应式设计不再只是一个概念,众多大公司也把…

Apache中如何设置网站默认首页

Apache中如何设置网站默认首页方法11111111111111111111111 步骤: 1)打开apache\conf\extra\httpd-vhosts.conf 2)在 VirturalHost标签对中输入DirectoryIndex index.php //index.php即为网站默认首页 <VirtualHost *:80>DocumentRoot D:\www\abcServerName www.abc.…

推荐有关git的一张图片和2个网站

来源&#xff1a;http://roclinux.cn [正文开始] 一张描述git数据迁移的示意图&#xff0c;很清晰&#xff0c;对于理解git的命令很有帮助&#xff0c;转发分享在这里&#xff1a; 另外&#xff0c;有2个git的网站&#xff0c;推荐给大家&#xff1a; 1 gitready&#xff1a;配…

VAST2.0视频广告投放解决方案改变视频网站未来技术格局

转载&#xff1a;http://www.ipinyou.com.cn/UI/technicalnews/201203/VAST2_0.html 日前&#xff0c;国内最领先的人群定向广告技术公司品友互动宣布&#xff0c;正式推出针对视频网站采用VAST 2.0 标准的视频广告投放解决方案。 这是中国第一家采用视频广告VAST 2.0标准的网络…

转:大型网站后台架构的演变

大型网站后台架构的演变 随着用户访问量的不断增加&#xff0c;网站的后台也会不断变化以应对需求。本文主要从一个小型网站到大型网站的过度与变化来陈述。 1.1 网站后台架构 主要指由web server 、应用服务器、数据库、存储、监控等组成的网站后台系统。 1.2 架构演变 个人站…

Python:抓取百度SERP搜索结果页的网站标题信息

比如&#xff0c;你想采集标题中包含“58同城”的SERP结果&#xff0c;并过滤包含有“北京”或“厦门”等结果数据。 该Python脚本主要是实现以上功能。 其中&#xff0c;使用BeautifulSoup来解析HTML&#xff0c;可以参考我的另外一篇文章&#xff1a;Windows8下安装Beautiful…

在IIS中某一个网站启用net.tcp

绑定 高级设置 http和net.tcp用逗号分隔 //擦擦擦&#xff0c;见鬼了&#xff0c;下面的是tcp.net导致我找了好久&#xff0c;都找不出这个错误 //一定要注意&#xff0c;不要写错了。 否则会收到提示&#xff1a;找不到具有绑定 NetTcpBinding 的终结点的与方案 net.tcp 匹配…

镇江php开发,myweb 我的家乡镇江,web技术开发的网站,三层架构,5大模块设计 WEB(ASP,PHP,...) 238万源代码下载- www.pudn.com...

文件名称: myweb下载收藏√ [5 4 3 2 1 ]开发工具: HTML文件大小: 8226 KB上传时间: 2015-04-11下载次数: 0提 供 者: min详细说明&#xff1a;我的家乡镇江&#xff0c;web技术开发的网站&#xff0c;三层架构&#xff0c;5大模块设计-My hometown of Zhenjiang, web tec…