大型网站系统架构的演化

news/2024/5/19 8:25:17/文章来源:https://blog.csdn.net/u013800446/article/details/84659288

http://www.cnblogs.com/leefreeman/p/3993449.html 

 

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

一、最开始的网站架构

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

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

小结

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

 

 

 

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

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

相关文章

使用Varnish代替Squid做网站缓存加速器的详细解决方案

from http://blog.s135.com/post/313 我曾经写过一篇文章──《初步试用Squid的替代产品──Varnish Cache网站加速器》,但当时仅仅是用着玩,没做深入研究。  今天写的这篇关于Varnish的文章,已经是一篇可以完全替代Squid做网站缓存加速器的…

html h5 页面 字体大小 fontsize 5px 不生效_必途必:如何通过网站页面布局优化提升seo关键词排名?...

大多数做SEO的人不会忽视网站的页面优化。很多人把注意力集中在网站主页的页面优化上。网站页面优化也是网站内部优化的第一步。通过页面内容的布局调整和设计,可以创建一个用户喜欢并有利于搜索引擎抓取和识别的页面,从而提高搜索引擎的排名。让网站获得…

php如何安装织梦cms,“织梦CMS”网站程序详细安装步骤?

我们之前把网站程序上传到了空间,并解压缩,现在我们只要把上传的程序安装成功,网站就搭建完成了,可以正常运营了,怎么安装那?其实每一套程序中都有“程序安装指南文档”按照指南就可以安装成功的,网站安装…

filezilla怎么上传HTML,filezilla如何上传网页网站,filezilla上传网页网站的方法

FileZilla是一个快速免费跨平台的FTP软件,实用多功能和界面直观的FTP客户端。那么FieZilla 怎么上传网页和网站呢?下面格子啦小编就给大家分享下filezilla上传网页网站的方法。 1、打开刚刚装好的FileZilla,点击菜单中的“文件” 2、点击站点管理器 3、…

怎样分析网站日志?

分析网站日志对于网站体验的优化、蜘蛛的友好度有着重要的意义,而网站日志分析应当主要包括以下维度。 一、网站日志的基本分析方向 1、蜘蛛日志 网站日志分析必不可少的环节就是分析蜘蛛日志,其蜘蛛类型应当囊括当前主流的蜘蛛分类、异常蜘蛛类型、蜘蛛…

自己开发网站日志分析工具,需要掌握何种技术?

对于网站运营而言,熟练掌握网站日志的分析是一门必会的技术。那么,如果要做网站日志分析,除了使用在线日志分析工具外,还有别的方法吗? 如果要自己开发网站日志分析工具,需要掌握何种技术呢? 分…

网站日志分析的维度与日志在线分析工具推荐

分析网站日志对于网站体验的优化、蜘蛛的友好度有着重要的意义,而网站日志分析应当主要包括以下维度。 蜘蛛类型 1、蜘蛛日志 网站日志分析必不可少的环节就是分析蜘蛛日志,其蜘蛛类型应当囊括当前主流的蜘蛛分类、异常蜘蛛类型、蜘蛛总数、蜘蛛抓取频次…

记录一个很有意思的事情(关于自己的网站自己不能访问,别人通过公网却可以访问)

问题描述: 首先是这样的,无意之中打开自己的网站www.ishells.cn发现竟然不能访问了,很纳闷怎么回事儿?就打开了云服务器检查了一下nginx,博客应用都在运行着,于是又通过 IP 端口的方式发现网站是可以正常访问的&#…

网站源码出现高危漏洞,请尽快修复,避免严重损失,的解决方法

源码出现这种情况的解决方法: 友价商城里的后台管理界面出现这个的 我按照上面的提示,将执行选框取消勾选后,它又出现这个的: 解决方法是 在宝塔里开启防火墙和网站防护设置即可解决

电脑版支付宝支付对接网站问题彻底解决方法总结

这几天一直在找解决电脑版网站支付宝支付问题,今天特意来好好做个总结, 首先进入支付宝开放平台:https://openhome.alipay.com/developmentAccess/developmentAccess.htm 第一次出现失败的原因:验签出错,这点我后来尝…

电脑网站出现支付宝支付时手机扫码出现系统有点忙....的解决方法总结

这个问题导致的原因是我用的是同一个支付宝账号,也就是收款支付宝和付款支付宝一样的,所以才导致此问题出现了,这是低级错误,解决方法:退出该支付宝账号,重新换另一个支付宝账号,再尝试扫一扫支…

网站中出现点击按钮跳出的还是当前页面的解决方法

这几天遇到这样的问题:点开我网站里的其中一个按钮,跳转的页面一直都是当前页面,此时则需要右键查看源代码里对应的链接是连接到哪个页面了,比如下图中,左边所示的是演示源码正确的链接页面地址,而右侧则是…

如何在腾讯云服务器上安装安全狗提高网站安全解决方法总结

如何在腾讯云服务器上架设安全狗提高网站安全解决方法总结 步骤方法:以下步骤是我自己在学习研究时一步步实操过来的,对于新手很有帮助意义。 1、先登录腾讯云服务器,https://cloud.tencent.com/login?s_urlhttps%3A%2F%2Fconsole.cloud.ten…

如何将一键部署下来的网站源码弄到第二个网站里去的解决方法

按照正常的安装网站的方法之后,还需要做的一步重要工作就是,改数据库,通常是在网站里搜索data相关的文件。如下图 此时,登录网址后,它会出现下图所示情况: 此时,再将站点这两处修改下&#xf…

网站设置微信支付时出现:appid和mch-id不匹配的解决方法

问题描述: 解决方法: 一定要准备一个已认证的服务号(我的情况就是如此),然后绑定该服务号; 参考官方文档: https://kf.qq.com/faq/1801116VJfua1801113QVNVz.html

网站微信支付时出现支付二维码不显示的解决方法

问题描述: 解决方法:通过快捷键F12查看源代码,逐级逐级的找到对应的位置源码,然后看到该二维码图片对应的链接:如下图: 然后在链接处右键 选择copy link dress,即可将该链接复制好了;然后直接…

关于网站域名备案流程

域名备案需要看在哪里买的空间服务器,比如我在腾讯云买的空间服务器,那么我就只能在腾讯云官网里备案域名了;

强烈推荐这几个程序员常逛的网站! 多希望你能早点知道!

作为一个每天都泡在电脑面前的程序员来说,选对一些学习的地方、和大家交流的地方就显得尤为重要。 当我们有问题的时候我们想第一时间解决,当我们想学习一门新技术的时候我们可以立马get教程,当我们学习了一门新的技术的时候我们抑制不住自己…

微生物文献调研网站与工具---持续更新(2022.09.16)

全文目录 1. 全文说明2. 文献查询网站2.1 常用期刊查询官网1) 高质量的期刊是值得细细品味,期刊官网可以进行长期订阅跟踪(排名不分先后)2)文献库检索网站3)科研工作的持续跟进与最新进展4 )基于…

基于MetaNetX网站的在线代谢敲除模拟与自动建模

0 前言说明 本系列内容说明: 本系列是针对生物研究中的模型种类进行分析介绍,作为**微生物群落相互建模系列的组成一部分。分阶段的介绍代谢网络模型从入门的环境的搭建,到指导湿实验过程全流程分享。探讨基于生物模型对群落中相互作用方式进…