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

news/2024/5/20 3:09:35/文章来源:https://blog.csdn.net/weixin_34200628/article/details/86332092

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


最初的架构,应用程序、数据库、文件都部署在一台服务器上,如图:
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

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

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

相关文章

推荐 | 非常不错的编程学习网站

阅读文本大概需要 3.5 分钟。这周末真的精彩,前有科技圈闹得沸腾的差评,各种吃瓜群众。后有 NBA 历史绝无仅有,东西双抢 7 大战。骑士勒布朗詹姆斯,逆天改命,全场 46 分。勇士克雷-汤普森,佛祖保佑&#xf…

分享一个爬取网站的小技巧

阅读文本大概需要 2 分钟。有时候,我们很想爬取一个网站的数据。如果 PC 端的网页的反爬机制太强,我们可以换个思路。现在很多网站为了满足手机浏览器能正常访问的需求,都会推出手机版的网页。PC 端抓取数据有难度,我们可以从手机…

js通过iframe访问跨域网站,获取不到内部标签?

1.页面iframe访问跨域网站baidu html <iframe id"iframe" src"http://www.baidu.com" frameborder"0"></iframe>javascript let iframe document.getElementById(iframe)2.打印访问内容 1.查看是否可以访问document console.log…

爬虫给力技巧:robots.txt 快速抓取网站

阅读文本大概需要 5 分钟。在我抓取网站遇到瓶颈&#xff0c;想剑走偏锋去解决时&#xff0c;常常会先去看下该网站的robots.txt文件&#xff0c;有时会给你打开另一扇抓取之门。写爬虫有很多苦恼的事情&#xff0c;比如&#xff1a;1.访问频次太高被限制&#xff1b;2.如何大量…

我顺藤摸瓜端了色情网站的老窝,并劝他从良

感谢凌云给我的启发大家好&#xff0c;我是九歌前几天无意发现了一个色情网站&#xff0c;本着除暴安良的心态&#xff0c;直接开始对这个网站开始了调查这个网站的域名是.cn结尾的 【.cn是国内域名,无法隐藏注册人的信息】我去站长之家里面对这个网站进行Whois查询按照惯例这种…

hexo搭建个人博客_GitHubPage和Hexo搭建个人博客网站

title: GithubPage和Hexo搭建个人博客网站 date: 2020-02-09 12:24:45 tags: - github - Hexo categories: GithubPage前言github支持githubPage静态界面来搭建我们的个人博客&#xff0c;自己配置。创建github仓库创建http://username.github.io仓库&#xff0c;同时setting中…

vs打开sln加载失败_你的网站打开速度慢,罪魁祸首居然是它?

相信许多人都不知道&#xff0c;在营销型网站建设当中&#xff0c;著名的黄金8秒原则&#xff0c;意思就是用户点击网站后&#xff0c;大部分都只会愿意等待大约8秒的时间。如果网站不能在这个时间内打开&#xff0c;那么用户就会离开&#xff0c;故而这个时间就成为黄金8秒。而…

CentOS7基础建站指南(笔记)

由于前段时间腾讯云打折&#xff0c;所以买了一台小服务器&#xff0c;想着以后写几个小网站&#xff0c;博客什么的&#xff0c;但是一开始就遇到了难题&#xff0c;大概就是Linux服务器的配置问题&#xff0c;比如如何假设服务器&#xff0c;配置非root用户&#xff0c;配置服…

CentOS8 配置apache 搭建静态网站 踩坑向

apache服务器安装与配置apache简介apache安装挂载光盘设备系统镜像创建yum仓库配置文件安装apache服务下载使用阿里云CentOS-8.repo软件仓库修改 CentOS-Base.repo文件安装成功启动httpd同时设置为开机自启效果图踩坑经验配置服务文件参数虚拟主机功能基于IP地址部署多个网站创…

通过阿里镜像网站制作iso文件安装CentOS6.9

基于网络安装 创建kickstart文件的方式&#xff1a;   1.复制模板/root/anaconda-ks.cfg&#xff0c;而后使用vim编辑配置   2.使用system-config-kickstart来生成&#xff0c;建议使用/root/anaconda-ks.cfg 模板生成 ksvalidator&#xff1a;检查kiskstart文件的配置是否…

256模板官网站点SEO优化分析记录

一直在做SEO网站优化工作&#xff0c;网站搭建好后也没没有做过官网优化的记录&#xff0c;今天有空余时间查询一下记录网站现在的状况。通过站长工具进行分析&#xff0c;织梦模板的关键字一致很稳定&#xff0c;也没有上升的趋势&#xff0c;看来是要进行分析做一下该站点的排…

Linux下Web服务器应用之网站安全-https

Linux下Web服务器应用之网站安全(https)解决方案 HTTPS&#xff08;全称&#xff1a;Hypertext Transfer Protocol over Secure Socket Layer&#xff09;&#xff0c;是以安全为目标的HTTP通道&#xff0c;简单讲是HTTP的安全版。即HTTP下加入SSL层&#xff0c;HTTPS的安全基础…

php mysql首页下载_MySQL(PHP网站后台数据库)

MySQL是一款非常受欢迎的开源SQL数据库管理系统&#xff0c;它由MySQL AB开发、发布和支持&#xff0c;MySQL 的执行性能非常高&#xff0c;运行速度非常快&#xff0c;并非常容易使用。是一个非常捧的数据库&#xff0c;PHP 和MYSQL完美组合。非常好用。安装方法下面的是MySQL…

织梦网站php源码安装,织梦整站源码安装教程

织梦CMS整站源码通用安装教程&#xff1a;第一步&#xff1a;域名和主机的准备&#xff1b;织梦cms程序是php语言编写&#xff0c;在程序安装之前我们购买的主机(服务器)需要支持php语言&#xff01;主机购买好之后域名解析主机的IP地址&#xff0c;主机绑定域名&#xff0c;等…

实战检测北大青鸟某地方学校网站

本文写的是一次曲折的拿北大青鸟某地方学校网站shell的过程。 之前也曾拿过一个北大青鸟某网站的文章&#xff0c;我再次萌生了我个北大青鸟的网站练练手的想法。其实以前我也尝试过检测了几个北大青鸟地方学校的网站&#xff0c;简单看了下没有注入漏洞没有弱口令就放弃了。看…

如何用php制作博客网页,博客网页制作的网站

博客网页制作的网站1.制作一个自己的印章.2.EOOOL是QQ头像、MSN头像、论坛头像、论坛签名、博客广告、通讯工具(邮件、MSN、QQ、书签)等的标签快速生成工具&#xff0c;一个方便、实用的图片制作网站&#xff01;不需要学会任何制图软件&#xff0c;就可以做出漂亮的&#xff0…

ASP.NET MVC 实现页落网资源分享网站+充值管理+后台管理(9)之系统登录

前面我们已经做好了一个文章管理功能模块&#xff0c;接下来&#xff0c;我们回头来做登录窗口&#xff0c;登录不仅涉及到登录验证还涉及到登录日志还有缓存时长等。 对于缓存的相关设置&#xff0c;我们已经写好封装在Bobo.Utilities.dll程序集中&#xff0c;我们只需要引用就…

给新生的软件网站工具推荐

给新生的软件网站工具推荐目录前言Windows基本使用学习打字练习网站KeybrWindows10基本操作所用Windows版本&#xff1a; Windows10教育版 1909一、键盘键位基本按键及快捷键键盘按键快捷键基本快捷键常用快捷键二、常用功能截图&#xff08;必会&#xff09;1. PrtSc键&#x…

zip直链生成网站_如何利用python提取word文档内容并进行修改生成PDF

最近有个需求&#xff0c;需要在网站上增加一个功能&#xff0c;当管理员点击这个按钮时&#xff0c;程序会前往某个网站(以下简称A)以会员身份登录下载一份word(doc格式)的数据&#xff0c;当然&#xff0c;由于这是A网站提供的数据&#xff0c;肯定会有其水印&#xff0c;关键…

页面怎么把关键字保留下来_Shopify SEO指南:除关键字以外,你还可以从这6个方面做站内优化...

你在搜索引擎上的排名很大程度上决定了购物者能否找到你的商店。你在搜索引擎结果中的排名越高&#xff0c;你商店的流量也就越大&#xff0c;自然你的销量也会增加。Shopify的SEO功能如何&#xff1f;虽然Shopify自带一些对SEO友好的功能&#xff0c;但是你可以做更多的工作来…