大型网站系统架构的演化

news/2024/5/15 1:54:58/文章来源:https://blog.csdn.net/weixin_30466039/article/details/99823689

说的挺不错,留下来

前言

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

一、最开始的网站架构

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

image

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

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

image

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

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

251844453265971

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

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

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

251844471702801

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

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

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

260851219209749

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

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

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

260851254513595

七、使用分布式文件系统

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

260851282647353

八、使用NoSql和搜索引擎

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

260851321075527

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

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

260851352481788

 

十、搭建分布式服务

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

260851397174320

小结

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

转载于:https://www.cnblogs.com/hwy425/p/4977489.html

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

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

相关文章

实现全站 HTTPS ,为什么国内网站总是那么slowlow呀!

1 https://konklone.com/post/switch-to-https-now-for-free# https://theintercept.com/2014/11/20/non-profit-plans-encrypt-entire-web-free/ https://www.youtube.com/watch?time_continue179&vGas_sSB-5SU Lets Encrypt Demo https://www.youtube.com/watch?v0Jio…

网页模板快速建站工具_科普:微商城建站怎么做好?

如何更好地利用互联网卖货,做电子商务呢?很多商家可能想当然地以为,入驻电商平台就好了。但实际上,这会需要花费高昂的入驻、推广、扣点费,新商家初期花费成本很高。这种情况下,你可以选择成本较低的做线上…

pb的webserver增加的方法发布后没有显示_如何增加网站外链

点击上面蓝字关注我们好久没有和大家分享一些专业技能知识了,今天要和大家说一说关于网站外链的小知识。内容来源:原创作者:无言SEO视频号:白悠玥101 什么是网站外链外链,区别于反链。反链的范围更广泛一些&#xff0c…

Struts2 网站上来多少人

strut.xml <?xml version"1.0" encoding"UTF-8" ?> <!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN""http://struts.apache.org/dtds/struts-2.3.dtd"><struts><c…

linux 网站用户,linux中用户的管理

一、创建用户我们知道&#xff0c;通过useradd和adduser来添加用户&#xff0c;在centos6中&#xff0c;adduser命令对应的文件/usr/sbin/adduser是一个软链接&#xff0c;指向/usr/sbin/useradd&#xff0c;如下&#xff1a;说明了&#xff0c;adduser命令&#xff0c;也就是u…

查看mq是否开启_「免费」宝塔面板开启waf网站防火墙

宝塔面板在8月份发生了一起严重的PMA数据库泄露事件&#xff0c;现在想起来&#xff0c;这个漏洞的严重性还是很大的&#xff0c;宝塔官方也在事件发生后&#xff0c;连夜紧急应急处理&#xff0c;紧接着对事件过程进行了全面的梳理和跟踪&#xff0c;并对外发布了一篇公开信&a…

服务器布置网站

一、vs 发布web网站 1.菜单栏中“生成”→“发布” 2.配置文件→填写配置文件名称&#xff08;自定义&#xff09; 3.连接→publish method:File System(系统文件) Target Location:发布到的文件目录 4.设置→Configuration:Debug-.NET 勾选precompile during publishi…

一文看懂如何在阿里云服务器Ubuntu18.04系统中配置wordpress网站!

阿里云服务器Ubuntu18.04系统中wordpress网站配置教程 以前一直使用静态博客&#xff08;Hexo&#xff09;然后托管到github上&#xff0c;其弊端就是需要在一台固定的主机上发表文章而且近日来github访问速度越来越慢&#xff0c;实在是难以忍受&#xff0c;因此购买一个便宜的…

IIS部署网站 Server Error in ‘/’ Application.

网站部署到服务器 访问的时候一直是这个错误 本地完全没有问题 感觉要把度娘上所有的解决办法都试了个遍 就是不行呀 心累 啦啦啦 重点来了 我在web.config添加节点 <configuration> <system.web> <customErrors mode"Off"/> </system.web&g…

手把手教你设计交友网站【4】

2019独角兽企业重金招聘Python工程师标准>>> 零零散散写了点任务&#xff0c;接下来讲到的任务设计会更实战一些。究其原因是它跟情感化设计更沾边一点。和游戏任务一定要满足玩家心理一样&#xff0c;交友网站你怎么能更容易的让玩家填资料呢&#xff0c;以及做一些…

微软云计算官方中文网站上线啦

公告 &#xff1a;本博客为微软云计算中文博客 的镜像博客。 部分文章因为博客兼容性问题 &#xff0c;会影响阅读体验 。如遇此情况&#xff0c;请访问 原博客 。 11月29日&#xff0c;微软云计算官方中文站http://www.microsoft.com/china/cloud 上线啦&#…

网站开发(周二):项目需求分析

前言&#xff1a;开发项目时&#xff0c;首先&#xff0c;了解项目的具体需求&#xff0c;由前端UI设计师根据网站需求设计网站页面。其次&#xff0c;根据需求划分网站功能&#xff0c;并详细了解需求的业务流程&#xff0c;由前端工程师根据设计好的页面进行切图&#xff0c;…

最新10款精美的免费PSD网站模板下载

这篇文章收集了10款免费的 PSD 网站模板分享给大家&#xff0c;您可以免费下载使用。这些高质量的免费 PSD 网站模板可以让您的工作得心应手&#xff0c;帮助您节省大量的时间和精力。感谢那些优秀的设计师分享他们的劳动成果&#xff0c;让更多的人可以使用他们的创意设计&…

《深入网站开发和运维》

《深入网站开发和运维》 基本信息 原书名&#xff1a;Pro website development and operations:Streamlining devOps for large-scale websites 原出版社&#xff1a; Apress 作者&#xff1a; (美)Matthew Sacks 译者&#xff1a; 曾少宁 丛书名&#xff1a; 图灵程序设计丛…

SEO艺术

SEO艺术 编辑推荐 在本书中&#xff0c;四位搜索引擎优化&#xff08;SEO&#xff09;领域最受瞩目的专家阐述了制订以及执行一个完善的SEO策略时应遵循的一些实用指南与最新技术。 基本信息 原书名&#xff1a; The Art of SEO原出版社&#xff1a; OReilly作者&#xff1a; (…

固定网站左边且不随网页滚动的DIV层

这篇代码贴是这个分类的第一篇文章&#xff0c;现在运营着鬼片电影这个站&#xff0c;所以&#xff0c;会经常想着如何去优化自己的站&#xff0c;所以少不了发现一些无技术含量的代码片&#xff0c;所以&#xff0c;这个分类也是起到收藏的作用&#xff0c;以后建站的时候&…

如何禁止直接用IP访问IIS中的网站

一、删除默认站点 1、打开IIS后将系统默认站点删除。&#xff08;以域名abc.com 和IP 203.171.238.223为例&#xff09; 二、设置现有站点 1、选择站点&#xff0c;右键“属性”–“网站”–“高级”–“选中空主机头”–“删除” 2、选择站点右键“属性”–“自定义错误”–…

大流量网站的底层系统架构

为什么80%的码农都做不了架构师&#xff1f;>>> 动态应用&#xff0c;是相对于网站静态内容而言&#xff0c; 是指以c/c、php、Java、perl、.net等 服务器端语言开发的网络应用软件&#xff0c;比如论坛、网络相册、交友、BLOG等常见应用。动态应用系统通 常与数据…

一次网站被挂恶意代码的查错经历

程序员职业的特点&#xff0c;难免会影响自己的业余爱好&#xff0c;比如空闲时间别人逛淘宝&#xff0c;程序员就逛博客园、刷微博的时候也会关注一些互联网技术方面的微博&#xff0c;还有一部分像我&#xff0c;做一名业余站长&#xff0c;利用下班时间维护更新下网站内容&a…

阿里云 ECS 服务器不能访问部署好的网站

今天在新买的阿里云服务器上部署了网站&#xff0c;但是不管是用ip地址还是用域名&#xff0c;都不能访问网站&#xff0c;但是ping的时候却是通的&#xff0c;多方查询之后&#xff0c;发现是因为安全组规则设置的问题&#xff0c;设置方法如下&#xff1a; 1、先进入实例的管…