大型网站业务和架构的发展

虽然说大型网站的内部非常复杂,理解大型网站架构也是一件非常困难的事情,但是技术终究是问题驱动的,某个特定的技术在一开始就是为了解决某个特定的问题或实现某个特定的想法而生的。

也就是说,大型网站的复杂性在于它本身已经解决了很多问题,所以看起来是复杂的。

如果我们从头回顾大型网站的业务和架构发展,并且理解当时遇到的问题,那么在宏观上了解大型网站架构则会变得很简单。

作为整本文的开端,笔者在尽量忽略复杂的细节和一些技术点的前提下,先从大型网站系统的发展历史了解大型网站架构。

大型网站的业务演变

业务指的是需要处理的事务。笔者对于业务的理解,就是某个特定场景需要处理的需求,比如电商网站系统有电商的业务(如订单管理、商品管理、商家和用户管理等),直播网站系统有直播的业务(如直播间管理、直播审核流程等)。这里不讨论具体某个行业的大型网站业务,只是介绍网站系统发展演变中的业务需求变化,以及网站技术大致的工作原理。

注意:对于下面介绍的发展演变节点,后说明的节点并没有取代先说明的节点,先说明的节点也没有被淘汰的意思。随着互联网使用深度的增加和边界的不断扩展,网站系统应对的业务场景也不断增加,因此网站系统的演变节点也会增加。

静态网站的出现

静态网站是网站最简单的一种形态。最早期的网站通常是为了公开某些信息而搭建的,其作用跟现实中的公示栏类似。与公示栏不同的是,要想获取静态网站信息的话,用户需要在浏览器的地址栏中输入网址,浏览器才会显示该网站的信息。

1.应对的业务场景

静态网站的作用是公开某些资源信息,如某个公司的基本信息或者一些产品的介绍。静态网站展示的信息不限于文字,也包括图片、音频和视频等信息。

2.工作原理

静态网站的工作原理可以简单地理解为:浏览器向服务器发送获得网页资源文件(HTML超文本文件、JavaScript脚本文件、CSS样式文件、图片文件和视频文件等)的请求,在取得网页资源文件后在浏览器的视窗中显示这些内容。

服务器只负责存储这些网页资源文件,等某个客户端请求这些网页资源文件的时候就给该客户端发送这些文件。

静态网站的工作原理如图1.1所示。

图1.1 静态网站的工作原理

3.使用场景

静态网站没有完全被淘汰,由于其结构十分简单,对于公开一些相对固定的信息而言(如产品介绍、公司基本信息等),反而是一个不错的选择。加上现在有很多Word转HTML和PDF转HTML的工具,做几个静态网页就相当于写几页Word文档一样简单。

不过,单纯的静态网站目前已经很少了,现在的静态网站往往是嵌入一个网站系统,从而作为网站系统的门户网站或者帮助文档。

动态网站的出现

从静态网站的工作原理可知,静态网站只是浏览器向服务器请求一些事先写好的文件。如果网站用于记录考试成绩,那么每次更新成绩,就需要人工修改或添加这些网页文件。这样做有几个问题:第一,对使用者不友好,使用者需要具备一定的网页编程知识,否则操作起来很容易出错;第二,数据增多后会出现很多问题,例如网页文件不断增大导致浏览器加载速度变慢或者文件个数过多导致维护起来非常麻烦等问题;第三,维护数据成本太高,更新或删除数据时会变得非常烦琐。

静态网站在面对上述需求,即实现交互(如管理数据、用户注册、订单管理等功能)时是乏力的。为了应对这样的场景,网站需要有根据不同情况动态变更的能力,于是动态网站出现了。

1.应对的业务场景

动态网站可以应对一些需要实现交互的场景,如管理数据、用户注册和订单管理等。一般情况下,动态网站是围绕数据库进行构造的。相对于静态网站,动态网站更有利于网站内容的管理和更新。

2.工作原理

动态网站和静态网站的区别是,动态网站有一部分应用程序代码运行在服务器端,而静态网站的服务器端只是单纯地存储文件。

动态网站增加了数据库,作为存储网站数据的仓库。服务器接到浏览器的请求后,不再是单纯地返回文件,而是运行一些应用程序后(如数据操作、检验账号和密码等),再返文件。动态网站的工作原理如图1.2所示。

图1.2 动态网站的工作原理

3.使用场景

动态网站的技术点相对较少,成型比较快,适用于中小型网站系统(如学校里的实验室预约网站、公司里的绩效管理网站等)或者一些开发周期要求比较短的网站系统。

大型网站系统的出现

随着互联网应用的深化,以电商平台(淘宝和京东等)、论坛社区(天涯和人人网等)、内容发布平台(优酷和网易新闻等)为代表的大型网站系统迅速崛起。

大型网站系统就主功能而言和动态网站需要处理的业务场景是类似的。以大型电商平台为例,其主要功能其实就是订单管理、商品管理及用户管理。这些功能简单地说,无非就是对数据进行管理而已。但是,与动态网站应对的业务场景不同的是,大型网站系统的业务功能是非常复杂的。

当然,大型网站需要面临的问题除了业务功能的挑战外,更关键的是如何承受每天数百万、数千万甚至数亿用户的使用。为了应付大量用户的使用,单台服务器是不够的,而需要增加服务器个数。

1.应对的业务场景

大型网站系统除了要应对复杂的交互场景(如管理数据、用户注册、订单管理)外,还需要应对大量用户的使用。

大型网站系统与动态网站不一定是两个东西,在服务器足够多的情况下,单纯的动态网站也可以是大型网站系统。现在,大部分的大型网站系统是由多种架构的网站混合而成的,即大型网站的内部可能同时存在静态网站、动态网站和B/S架构网站(伪静态)等。

说明:B/S架构网站在本节中没有单独介绍。关于B/S架构的详细内容,可以参考1.2.2小节中关于B/S架构网站的介绍。

2.工作原理

大型网站系统的内部是复杂的,一般是由多种架构的网站混合而成的(包括静态网站、动态网站及B/S架构网站等)。服务器的应用程序也不仅仅用于处理网页文件,不过这里先认为与单纯的动态网站类似,即应用程序仅处理网页文件。

在忽略大型网站复杂的内部结构的情况下,大型网站系统的工作原理其实很简单,就是存在多个服务器,以降低单台服务器的压力。至于怎么协调这些服务器,这里暂不讲解,后文会详细说明。当然,除了增加服务器的数量外,还有很多机制(如缓存、数据库读写分离等)可以应对大量用户的使用。这里可以简单地认为,大型网站只是拥有多个服务器即可。大型网站系统的工作原理如图1.3所示。

图1.3 大型网站系统的工作原理

3.使用场景

大型网站系统适用于有大量用户访问的网站。有这么一个定义,大型网站的量级界定为服务器规模大于百台,每日网页的浏览量大于千万次。

实际上,访问量的多少其实是网站运营的结果,与“考虑是否按大型网站设计”是不相关的。大型网站架构的最终目的是可以通过简单地增加服务器来应对可能日益膨胀的用户规模。在成本允许的情况下,选用大型网站架构会大大减少网站后期维护的成本。但是如果用户数量最多就几万,而且用户群体扩大的可能性不大,那么选用制作成本较高的大型网站架构确实就有点大材小用。

大型云计算网站系统的出现

随着互联网的进一步发展,网站只是应对一些交互场景是远远不够的,于是云计算的概念也出现在了网站系统之中。以直播平台(虎牙直播、斗鱼直播等)、在线视频编辑网站(WeVideo等)和大型新闻发布平台(新闻爬虫发布系统等)等为代表的大型云计算网站系统也出现了。

说明:云计算是一种基于互联网的计算方式,借助这种计算方式,共享的软硬件资源可以按需提供给计算机等终端和设备。浅显地说,云计算服务就好比是自来水厂,提供集中化的自来水处理,人们需要自来水的时候,只需要打开水龙头即可。

1.应对的业务场景

相对于大型网站系统,大型云计算网站系统除了要应对大量的用户和复杂的交互场景外,还需要应对一些复杂的任务(如电话语音通知、音视频合成和自动爬虫等),因此大型云计算网站需要额外的云计算程序来完成这些任务。

以在线视频编辑网站为例,在这些网站中,用户编辑视频文件时,视频文件的处理程序不再运行在用户的计算机上,而是运行在网站的云计算服务器上。

2.工作原理

大型云计算网站系统在大型网站系统的基础上加上了云计算服务。云计算服务可能是视频转码服务,也可能是数据挖掘的相关服务,不同的网站可能会有不一样的云计算服务。当然,为了应对大量用户的访问,云计算服务也是部署在多个服务器上的。大型云计算网站系统的工作原理如图1.4所示。

注意:云计算服务不一定完全由网站本身提供,现在有很多提供云计算服务的第三方平台(如百度API平台、科大讯飞的在线语音识别服务等),网站的应用程序通过简单地调用第三方平台的服务就可以实现复杂的功能。

3.使用场景

云计算网站的出现扩大了网站的边界。网页已经不仅仅是为了展示信息或操作数据而存在,往往是作为用户与集中化云计算的桥梁而存在。

在很多情况下,用户不再需要下载软件,而只需要在浏览器中打开相应的网站即可完成工作。由此,网络应用的概念也开始流行起来,我们可以在网站上做更多的事情,如直接编辑视频等。

注意:现在的大型网站一般都是大型云计算网站,因此后续提到的大型网站默认就是大型云计算网站。

图1.4 大型云计算网站系统的工作原理

大型网站的未来

2009年,谷歌发布了一款网络笔记本计算机Chromebook,这款笔记本计算机号称“完全在线”(可以认为笔记本中只有一个浏览器),用户所需的计算和存储都由网络服务提供。近几年,任天堂和索尼都推出了云游戏服务,游戏的画面渲染交给云计算服务器完成,而游戏机只负责显示画面。诸如此类,还有很多应用场景正在被云计算改变。

目前,上述网络应用产品都不算特别完善,这主要是网络的原因造成的。随着5G网络的建设和发展,网络问题会得到解决,到时候一定会有更多的云计算场景出现,也会有更多的网络应用出现。

但是,即使出现了足够多的网络应用,以现在各自运营、各自宣传的现状来说,离实现完全云计算化的未来还是有距离的,这需要一个网络应用市场来做统一的管理。网络应用市场除了可以整合零散的网络应用外,还可以提供权威的安全认证,消除用户对陌生网络应用私隐安全方面的顾虑。

综上,笔者认为,大型网站的未来应该是网络应用市场。到时候,出现更规范化约束的同时,也一定会有更成熟和更统一的技术出现。

本文给大家讲解的内容是大型网站的业务演变

  1. 下篇文章给大家讲解的内容是大型网站架构的发展
  2. 觉得文章不错的朋友可以转发此文关注小编;
  3. 感谢大家的支持!

互联网高级架构师用4000字带你把大型网站的业务演变过程给讲明白相关推荐

  1. 【Mca架构】java互联网高级架构师

    本人也是coding很多年,虽然很失败,但也总算有点失败的心得,不过我在中国,大多数程序员都是像我一样,在一直走着弯路.如果想成为一个架构师,就必须走正确的路,否则离目标越来越远,正在辛苦工作的程序员 ...

  2. 蚂蚁3期JAVA互联网高级架构师视频教程

    目录 ├─0001-3期-开班仪式.rar ├─0002-3期-并发编程专题之多线程基础.rar ├─0003-3期-并发编程专题之Java内存模型.rar ├─0004-3期-并发编程专题-多线程之 ...

  3. 2018最新蚂蚁3期JAVA互联网高级架构师视频教程

    目录 ├─0001-3期-开班仪式.rar* V' I9 a7 r1 W* n ├─0002-3期-并发编程专题之多线程基础.rar ├─0003-3期-并发编程专题之Java内存模型.rar ├─0 ...

  4. 阿里P8高级架构师:面试没你想象中的难,拿Offer也可以很轻松

    阿里P8高级架构师:面试没你想象中的难,拿Offer也可以很轻松 一.概述 面试,难还是不难?取决于面试者的底蕴(技能).心态和认知及沟通技巧.面试其实可以理解为一场聊天和谈判,在这过程中有心理.思想 ...

  5. 高级架构师,精通JAVA/高并发/微服务/分布式/中间件

    JAVA高级架构师专栏 大纲介绍 Java基础复习 单点系统 Springboot框架应用 页面开发模版引擎 Java核心基础 JVM调优 高并发优化 Spring.Mybatis.Springboo ...

  6. 如何成长为一名Java高级架构师

    推荐架构师:大鱼 曾任用友网络高级架构师.自由坊科技技术总监. (文末有惊喜) 作为一名Java程序员,你可能经历过: 随着工作时间的增长,发现自己除了对公司业务变得更加熟悉外,技术水平几乎没有提高. ...

  7. 高级架构师_Docker_第2章_ Docker核心原理_ 第2节_Docker网络

    高级架构师_Docker_第2章_ Docker核心原理_ 第2节_Docker网络 文章目录 高级架构师_Docker_第2章_ Docker核心原理_ 第2节_Docker网络 Docker网络 ...

  8. 1 张图,拆解阿里 P8高级架构师必会技术栈!

    大家都知道,阿里P8高级技术专家,基本上是一线技术人能达到的最高职级,也是很多程序员追求的目标.达到年入百万的P8 Java高级架构师级别,不仅要具备优秀的编程能力和系统设计能力,在技术视野和业务洞察 ...

  9. 程序员职业发展路径图:从菜鸟工程师到高级架构师

    http://www.sohu.com/a/249729952_355140 踽踽独行上下求索总是痛苦,如果有良师益友陪伴点拨必能事半功倍.从新手码农到高级架构师,要经过几步?要多努力,才能成为为人倚 ...

最新文章

  1. [SDOI2015]权值
  2. Linux下基于官方源代码RPM包构建自定义MySQL RPM包
  3. tomcat and server configuration for loadrunner test
  4. android url webview,android - webview获取到当前页面的url
  5. Linux的Nginx二:代理
  6. Python快速学习07:文本文件的操作
  7. Jq获取同一名称单选框(radio)被选中的值
  8. 【图像处理基础知识】python+opencv显示中文
  9. 给ubuntu换内核
  10. [pthon]模块 time
  11. 样本不平衡 pytorch_CVPR2019 | 面对高度不均衡数据如何提高精度?这篇文章有妙招...
  12. 成为一名初级游戏策划
  13. DB2数据库错误代码大全
  14. 管壁式换热器cad图纸_各种换热器结构原理动态图,让你大开眼界!
  15. [渝粤教育] 西南科技大学 液压与气压传动 在线考试复习资料(1)
  16. 使用geohash实现查找附近的人
  17. 本地html网页载入很慢,网页打开很慢是什么原因?怎么解决
  18. ***没有规则可以创建“XXX”需要的目标“XXX”问题的解决方案
  19. API 接口大全之 1688
  20. SQLZOO 答案—完整版

热门文章

  1. 产生纠缠态的三种方式(已过时)
  2. 2021年净水器发展环境(PEST)分析:随着居民生活品质提升,净水器的需求也将稳步增长 [图]
  3. upp(企业统一流程平台)阶段性汇报20220909
  4. [日推荐]『梦想旅行』出国旅行全攻略!
  5. 怎么看项目服务器的mac,查看服务器的mac地址
  6. WhatsApp消息群发对跨境电商有什么样的价值?
  7. Nacos配置中心yml做配置文件Could not resolve placeholder ‘xxx’ in value ‘${xxx}’问题解决
  8. 和 Nature 封面论文一作,聊了聊天机芯的科研故事
  9. 【数据库】MySQL速成教程
  10. CAD学习笔记(一)