大型网站架构的演化

3 篇文章 0 订阅
订阅专栏

前言

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

一、最开始的网站架构

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

image

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

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

image

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

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

image

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

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

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

架构4

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

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

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

架构3

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

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

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

架构5 

七、使用分布式文件系统

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

架构5.5

八、使用NoSql和搜索引擎

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

架构6

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

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

架构7

十、搭建分布式服务

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

架构8

小结

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

转载自 点击打开链接

B/S架构的演进
yaotai8135的博客
07-25 474
上面这个架构是一个十分复杂的架构,含金量很高。 我们很难一开始就搭建出上面这个复杂的架构。都是一步一步演进来的。 1.最开始——All in one 2. 将数据服务和应用服务进行分离,给应用服务器配置更好的CPU,给数据服务配置更好的硬盘。 3。 继续,增加分布式缓存和本地缓存。80%的业务访问都集中在20%的数据上,将这20%的数据缓存下来,那么性能一下子就提升上来了。那么...
大型网站架构演化
bill的博客
03-31 972
大型网站技术架构
大型网站系统架构的演变
liqiangshuaixiaozia的专栏
09-26 929
解读大型网站系统架构演化 2014-09-26 09:53 李平 LEE的博客 字号:T | T 大型网站架构是根据业务需求不断完善的,根据不同的业务特征会做特定的设计和考虑,本文只是讲述一个常规大型网站会涉及的一些技术和手段。 AD:2014WOT全球软件技术峰会北京站 课程视频发布 11月21日-22日 与WOT技术大会相约深圳 现在抢票 前言 一个成
重视B/S架构系统的发展和开发设计理念
麦田专栏
09-11 2787
      随着网络技术的快速发展,b/s架构的系统也更加流行和突出。很多从c/s架构或者没有涉及B/S开发的程序员都普遍认为Web开发只是小菜一碟,而往往带着这种思想去开发B/S架构的系统会带来很多麻烦,造成系统框架不合理、系统界面丑陋无比、系统运行效率低下、系统安全性低下等一系列后遗症,对商业系统更是一种糟蹋……     因此Web系统的观念需要正确对待,他已经不是单纯
大型网站系统架构演化之路
weixin_33951761的博客
09-27 762
前言 一、最开始的网站架构 二、应用、数据、文件分离 三、利用缓存改善网站性能 四、使用集群改善应用服务器性能 五、数据库读写分离和分库分表 六、使用CDN和反向代理提高网站性能 七、使用分布式文件系统 八、使用NoSql和搜索引擎 九、将应用服务器进行业务拆分 十、搭建分布式服务 小结 前言 一个成熟的大型网站(如淘宝、天猫、腾讯等)的系统架构并不是...
java架构师需要掌握的技能
HappyProgrammer的博客
03-11 1447
1 能够熟练完成一整套成熟的测试,开发,正式环境。(如果连环境都弄不好,感觉真的很弱。。) 2 熟悉各种主流框架。并同时能够首先对新技术进行钻研(没有对新技术的接受能力,感觉很弱。。) 3 能够根据业务,熟练搭建框架,并有很高的扩展性,(架构一定要灵活变动。不然鬼知道产品经理会提出什么改变。。) 4 有很好的沟通能力,能够抗事。(不能扛事的架构师,我都会很鄙视。。。) 5 有较好的文档书写...
大型网站架构演化发展历程
02-26
前面已经描述了大型网站系统的特点,而对一个大型网站系统,其架构也是重要的一个环节。大型网站技术主要的挑战来自于庞大的用户、高并发以及海量的数据这三个方面。大型网站的形成就像一颗大树的成长,历尽长时间的...
大型网站技术路线架构演化
最新发布
06-25
### 大型网站技术路线架构演化 随着互联网的飞速发展,大型网站面临的挑战日益增多,这不仅体现在用户数量的增长上,还包括业务复杂度的提升和技术需求的变化。因此,为了应对这些挑战,大型网站的技术架构也随之...
Java架构师需要哪些知识?
java364100的博客
10-11 1802
Java各种集合对象的实现原理,了解这些可以让你在解决问题时选择合适的数据结构,高效的解决问题,比如hashmap的实现原理,好多五年以上经验的人都弄不清楚,还有为什扩容时有性能问题?架构师还要针对业务特点、系统的性能要求提出能解决问题成本最低的设计方案才合格,人家一个几百人用户的系统,访问量不大,数据量小,你给人家上集群、上分布式存储、上高端服务器,为了架构架构,这是最扯淡的,架构师的作用就是第一满足业务需求,第二最低的硬件网络成本和技术维护成本。Java反射技术,写框架必备的技术。
Java高级架构师需要掌握什么?
qq_36243386的博客
01-28 617
没有谁能够随随便便的就成功,也没有谁能够随随便便就成为一名高级Java架构师。在Java行业中,如果按照排序,Java架构师一定是排在最顶端的,所以成为高级Java架构师,也是得有高超的Java技能,并且还得有着一定的阅历,高级Java架构师需要掌握什么? 高级Java架构师需要掌握什么?需要掌握的东西有太多太多了,具体有哪些呢?有点难列举,就从一则高级Java架构师的招聘启事入手吧。如下: ...
说说大型网站架构演化历程
读万卷书,行万里路
09-14 1199
现今,全球有近一半的人口在使用互联网,人们的生活因互联网而发生了巨大的改变。在互联网跨越式的发展历程的背后是不堪重负的网站架构,某些 B2C 网站逢促销必宕机似乎成为一种必然的规律,最著名的例子就是早期的铁道部的电子客票售卖平台O(∩_∩)O~1 大型互联网应用的特点 高并发,大流量:面对的是高并发的用户以及大流量的访问。 高可用:系统 7 * 24 小时不间断服务。 海量数据:需要存储并管理海量的
大型网站架构进化阶段
JohnShu的专栏
01-10 995
1、 最开始,由于某些想法或者爱好,于是在互联网上搭建了一个网站,这个时候甚至有可能主机都是租借的,但由于我们先关注架构的演变历程,因此就假设这个时候已经是托管了一台主机,并且有一定的带宽了。 初始阶段网站架构:一台Server满足刚需,应用程序、数据库、文件等所有资源都集中在一台Server上,典型案例:基于LAMP架构的PHP网站。 2、 经过一段时间的运营后,由于网站具备一定
大型网站架构演变与变迁
微服务技术栈
07-24 209
大型网站都是从小型网站发展而来,架构也是一样。任何一个大型网站架构都不是从一开始都是一层不变的,而是随着用户量和数据量的不断增加不断演进的结果。比如腾讯最初是靠ICQ起家,而阿里最初则是使用LAMP架构模式。了解大型网站架构变迁更有助于我们了解微服务的由来。 单一应用架构网站建立之初,可能并没有特别多的用户,我们仅仅用一个服务器就可以满足需求了,这个时候我们将所有业务打成一个war包,与数据库一起部署在一台机器上。如下图为最初时期的单一应用架构: 应用于数据分离 随着用户的增多,业务量.
大型网站系统架构演化实例_7.使用NoSQL和搜索引擎
huaqianzkh的专栏
04-20 1185
随着网站业务越来越复杂,对数据存储和检索的需求也越来越复杂,网站需要采用一些非关系数据库技术如NoSQL和非数据库查询技术如搜索引擎。NoSQL和搜索引擎都是源自互联网的技术手段,对可伸缩的分布式特性具有更好的支持。应用服务器则通过一个统一数据访问模块访问各种数据,减轻应用程序管理诸多数据源的麻烦。
10张图带你看懂大型网站架构演变
huangshulang1234的博客
01-22 2466
10张图带你看懂大型网站架构演变 一个普通的网站发展成大型网站过程中的一种较为典型的架构演变历程。这一步涉及的知识体系非常的多,要求对通信、远程调用、消息机制等有深入的理解和掌握,要求的都是从理论、硬件级、操作系统级以及所采用的语言的实现都有清楚的理解。 架构演变第一步:物理分离webserver和数据库   架构演变第二步:增加页面
大型网站架构演进的五大阶段盘点
博文视点(北京)官方博客
08-14 745
一个创业公司起步时很可能就两台机器,一台Web 服务器、一台数据库服务器,在一个应用系统中集成了所有功能模块,但随着业务的发展、流量的增长,单应用远远不能满足业务需求。 下面我们一同来聊聊网站架构发展所经历的几次主要演进,包括:从PHP 到Java 的改造、分布式改造、无线化改造、中台的改造、国际化改造。   阶段一 从PHP 到Java 很多网站早期都是基于Linux+Apache+...
B/S架构及其运行原理
weixin_59272777的博客
03-14 4275
但 是,这个服务器硬件上安装了服务器软件,例如IIS服务器、Java服务器、.NET服务器,它们负责接收用户的访问请求,并根据请求经过计算将数据返回给用户的客户端(浏览器)。从Web服务器上下载程序到本地来执行,在下载过程中若遇到与数据库有关的指令,由Web服务器交给数据库服务器来解释执行,并返回给Web服务器,Web服务器又返回给用户。(1)、服务器是一种计算机硬件:服务器应该算是一种高性能的计算机,它作为网络的节点,存储、处理网络上的数据、信息,因此也被称为网络的灵魂。系统的扩展非常容易。
B/S和C/S的区别
baiseda
07-24 797
B/S和C/S的区别 一、什么是CS和BS结构? 1.C/S又称Client/Server或客户/服务器模式。服务器通常采用高性能的PC、工作站或小型机,并采用大型数据库系统,如Oracle、Sybase、Informix或SQLServer。客户端需要安装专用的客户端软件。 2.B/S是Brower/Server的缩写,客户机上只要安装一个浏览器(Browser),如Netscape Navi...
你知道C/S和B/S两种架构有什么区别吗?
淡忘~浅思
09-01 8651
2006_photo12 C/S和B/S,是再普通不过的两种软件架构方式,都可以进行同样的业务处理,甚至也可以用相同的方式实现共同的逻辑。既然如此,为何还要区分彼此呢?那我们就来看看二者的区别和联系。 一、C/S 架构 1、 概念 C/S 架构是一种典型的两层架构,其全程是Client/Server,即客户端服务器端架构,其客户端包含一个或多个在用户的电脑上运行的程序,而服务器端有两种,一种是数据库服务器端,客户端通过数据库连接访问服务器端的数据;另一种是
写文章

热门文章

  • 前端导出excel 14861
  • C++ DLL导出类 13776
  • Sqlplus查看Oracle版本 10361
  • Java Service Wrapper使用中的问题 8760
  • JCF之概述 8113

分类专栏

  • 看源码学Java 9篇
  • C++基础 11篇
  • Java相关 16篇
  • 感悟 3篇
  • 数据结构和算法 6篇
  • STL 1篇
  • OpenGL 1篇
  • 设计模式 1篇
  • 开源软件 3篇
  • Android开发 3篇
  • 前端开发 1篇
  • CPU缓存 数据结构和算法 1篇
  • Java JMM 2篇
  • C++ GCC 1篇
  • Linux/Unix 4篇

最新评论

  • JCF之概述

    swznxy 回复 jacktao219: 是啊。Collection 和Map应该是同级的吧

  • JNI快速入门

    isacf: 你好,向你请教一个问题,我在linux环境中用c调用java的裸class和加“马甲”的含package的class,是可以调用成功,可是我现在要调用一个jar包里面的含package的class,运行结果一直是找不到类,我在“-Djava.class.path=my.jar”,试了很多不同的路径,一直都是找不到类,现在我的jar包和c文件放在一个目录下的,前面的java、class文件也是和c文件放在同一个目录下的,这个问题困扰了我好久,我觉得还是路径设置的问题,请问该怎么解决?该怎么设置jar包的路径?万分感谢!

  • C++ 之cin与cout常见问题详解

    haseetxwd: 赞 收藏了

  • C++ DLL导出类

    绝不原创的飞龙: 其实也不用这么麻烦。把类中的所有public函数,以及new和delete做成全局函数导出,需要传类指针的地方全部改成void*,exe那边不用管类的结构。exe中再把函数封装成类的形式,也不用手动管理构造和析构。

  • 基于OpenGL的LS分形演示程序

    cxk1198: 大神,我试着跑了你的代码,发现都报了同一个错误 no matching function for call to 'GLUI_StaticText::GLUI_StaticText(GLUI*&, const char[])'之类的。请问这是什么原因啊

大家在看

  • Python轴承故障诊断 (四)基于EMD-CNN的故障分类
  • Python机器学习实战:使用机器学习预测股票市场走势 598
  • springboot框架VUE3心理健康服务管理系统开发mysql数据库网页设计java编程计算机网页源码maven项目 1039
  • 基于SSM+Android的校园考研论坛 218
  • OpenAI GPT4, GPT3.5, GPT3, Moderation 331

最新文章

  • *.pro、*.pri、*.prf、*.prl文件说明
  • 常见hash算法
  • 拔一拔Redis和Memcached
2014年22篇
2013年2篇
2012年19篇
2011年12篇
2010年2篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

深圳SEO优化公司网站排名优化询问q火18星嘉定区官方网站优化哪家好网站首页优化公司哪家专业潍坊网站收录优化松江区搜狗网站优化案例网站优化要怎么做天门网站推广优化公司淮安网站推广优化南开网站优化开发中山网站优化搜索大连整站网站优化英文网站如何优化排名关于优化内部网站的通知酒泉网站优化推广公司有哪些罗湖百科网站优化排名东莞安天网站优化效果如何怎样做好网站推广优化东莞公司高端网站优化静安区企业网站优化定制方案图片在网站中的优化随州品牌网站优化要多少钱网站优化营销推广价格家电网站seo优化费用东莞安天网站优化怎么样南头免费网站优化大型网站优化在线推广上海seo网站优化推广许昌网站优化推广联系方式哪里有网站seo优化哪家好嘉兴网站优化对策歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化