web技术发展历程--读《大型网站技术架构_核心原理与案例分析》
1 早期的web服务

2 CGI程序的出现、发展、凋零到MVC的兴起
- CGI:通用网关接口技术。
- 随着CGI技术的出现,web服务端可以通过不同的用户请求产生动态页面内容。

- web服务器将请求数据交给CGI程序,CGI程序进行运算处理,生成HTML输出,通过web服务器返回给浏览器。早期的CGI编程语言是perl,高效便捷的开发特性使其成为当时许多网站开发的首选开发语言。
- CGI程序的缺点:web服务器通过启动独立进程的方式调用CGI程序,消耗许多不必要的系统资源。而目前流行的java Servlet则是以线程方式在java web容器中调用Servlet,和CGI方式相比,消耗的资源更少。这就是CGI技术开始消失的主要原因。
- 一般来说CGI技术(广义上讲Java Servlet)被称为脚本模式,CGI程序需要解析HTTP请求,处理业务逻辑,并在输出流中构造响应信息的HTML。这种技术的优点和缺点是同一个特性-- 可以在CGI程序中做任何事情。CGI程序在获得最大处理能力的同时,也给开发人员带来了麻烦:负责编写业务逻辑程序的程序员不擅长处理HTML,而负责页面构造的美工人员(现在是前端开发工程师)则对程序束手无策。同样,维护这样的程序就是个噩梦,业务逻辑和页面语言耦合在一起,让人无法下手。
- PHP及其后来的ASP、JSP的出现改善了这一局面,与CGI在程序中输出HTML流正好相反,开发人员可以在HTML中嵌入程序代码。这种模式被称为服务器页面模式。直到现在,PHP仍然是许多中小型网站建站的首先技术,和Apache、MySQL和Linux共同组成了一个强大的web开发平台,被称为LAMP。
- 既然CGI程序擅长处理请求信息,而服务器页面擅长构造响应的页面,那么能不能将两者结合起来?答案就是MVC模式。控制器接收处理所有的HTPP请求,根据请求信息将其分发给不同的模型对象处理,再根据模式处理结果选择构造视图,得到最终的响应信息。使用MVC模式可以很好的分离模型与视图,使得二者完全解耦,互相影响降到最低。

- 模型与视图分离为系统开发维护带来了诸多好处,为目前web开发流畅的分层架构模式奠定了基础。分层模式可以更进一步分离关注面和降低系统的耦合性,通过分层,隔离上层对下层的直接依赖,上层设计无需过多的考虑下层实现,各层之间较少耦合,只要保持接口规范不变,各层可以随意替换和复用。web开发中通常将服务端划分为三层:表现层、业务逻辑层和数据源层。表现层完成视图展现和用户交互;业务逻辑层实现系统的核心逻辑;数据源负责数据存储、交换和通信。这种层次划分是逻辑上的,物理部署上多个层会作为一个应用部署在一起。
- 上面简单的回顾了web开发的技术发展历程和一些早期主要架构模式,这些模式在企业web应用开发中也有许多实践。但是随着互联网应用的快速发展,需求场景和业务领域都有一些和传统企业应用不同的特点,对系统的可用性、扩展性、响应性能、伸缩性、安全性都提出了更高的要求,网站技术架构也和企业应用技术架构脱离,走上了一条更具创新性的发展之路。
web技术发展历程--读《大型网站技术架构_核心原理与案例分析》的更多相关文章
- 《大型网站技术架构:核心原理与案例分析》【PDF】下载
<大型网站技术架构:核心原理与案例分析>[PDF]下载链接: https://u253469.pipipan.com/fs/253469-230062557 内容简介 本书通过梳理大型网站 ...
- 阅读《大型网站技术架构:核心原理与案例分析》第五、六、七章,结合《XXX重大技术需求征集系统》,列举实例分析采用的可用性和可修改性战术,将上述内容撰写成一篇1500字左右的博客阐述你的观点。
这三章主要讲述的是网站的可用性.伸缩性和可扩展性. 首先,网站的可用性描述网站可有效访问的特性,相比于网站的其他非功能特性,网站的可用性更容易引起人们的注意,尤其是大型网站的可用性,如果大公司的网站出 ...
- 【转】分布式环境下5种session处理策略(大型网站技术架构:核心原理与案例分析 里面的方案)
前言 在搭建完集群环境后,不得不考虑的一个问题就是用户访问产生的session如何处理.如果不做任何处理的话,用户将出现频繁登录的现象,比如集群中存在A.B两台服务器,用户在第一次访问网站时,Ngin ...
- Web高级征程:《大型网站技术架构》读书笔记系列
一.此书到底何方神圣? <大型网站技术架构:核心原理与案例分析>通过梳理大型网站技术发展历程,剖析大型网站技术架构模式,深入讲述大型互联网架构设计的核心原理,并通过一组典型网站技术架构设计 ...
- 大型网站技术架构 核心原理与案例分析 pdf
需要的小伙伴拿去,哈哈.百度云链接:https://pan.baidu.com/s/1hsuiM3q
- 【大型网站技术实践】初级篇:搭建MySQL主从复制经典架构
一.业务发展驱动数据发展 随着网站业务的不断发展,用户量的不断增加,数据量成倍地增长,数据库的访问量也呈线性地增长.特别是在用户访问高峰期间,并发访问量突然增大,数据库的负载压力也会增大,如果架构方案 ...
- 阅读《大型网站技术架构》,并结合"重大需求征集系统"有感
今天阅读了<大型网站技术架构:核心原理与案例分析>的第五.六.七章.这三张主要是讲述了一个系统的可用性.伸缩性和可扩展性.而根据文中所讲述的,一个系统的可用性主要是体现在这个系统的系统服务 ...
- 大型网站技术架构(四)--核心架构要素 开启mac上印象笔记的代码块 大型网站技术架构(三)--架构模式 JDK8 stream toMap() java.lang.IllegalStateException: Duplicate key异常解决(key重复)
大型网站技术架构(四)--核心架构要素 作者:13GitHub:https://github.com/ZHENFENG13版权声明:本文为原创文章,未经允许不得转载.此篇已收录至<大型网站技 ...
- 动态 Web Server 技术发展历程
动态 Web Server 技术发展历程 开始接触 Java Web 方面的技术,此篇文章是以介绍 Web server 相关技术的演变为主来作为了解 Java servlet 的技术背景,目的是更好 ...
随机推荐
- DeepLearning.ai学习笔记(四)卷积神经网络 -- week2深度卷积神经网络 实例探究
一.为什么要进行实例探究? 通过他人的实例可以更好的理解如何构建卷积神经网络,本周课程主要会介绍如下网络 LeNet-5 AlexNet VGG ResNet (有152层) Inception 二. ...
- [转载]MySQL运行状态show status详解
要查看MySQL运行状态,要优化MySQL运行效率都少不了要运行show status查看各种状态,下面是参考官方文档及网上资料整理出来的中文详细解释,不管你是初学mysql还是你是mysql专业级的 ...
- 关于setTimeout的面试题
于地铁上看了一篇帖子,关于setTimeout的面试题,觉得见得多,记录,以学习之. 我们都知道,这样的一个例子: for ( var i = 0;i<5; i++) { console.log ...
- IdentityServer(11)- 使用Hybrid Flow并添加API访问控制
关于Hybrid Flow 和 implicit flow 我在前一篇文章使用OpenID Connect添加用户认证中提到了implicit flow,那么它们是什么呢,它和Hybrid Flow有 ...
- Python模块之信号学习(signal)
信号概述 在学习Python前应该学习下Linux下的信号,软中断信号(signal,又简称为信号)用来通知进程发生了异步事件.进程之间可以互相通过系统调用kill发送软中断信号.内核也可以因为内部事 ...
- deeplearning.ai 人工智能行业大师访谈 Andrej Karpathy 听课笔记
1. 本科的时候在多伦多大学上Geoffrey Hinton的课,在MNIST数字数据集上训练受限玻尔兹曼机,觉得很有趣.后来在UBC读硕士,上了另一门机器学习的课,那是他第一次深入了解神经网络的相关 ...
- Two 观察者 observer pattern
Two 观察者 定义 在对象之间定义一对多的依赖,当一个对象改变状态,依赖它的对象都会收到通知.并自动更新. 可以观察者自取,也可以主题去推送 其实就是设计两个接口. 相关原则 为交互对象之前的松耦合 ...
- bzoj:3397 [Usaco2009 Feb]Surround the Islands 环岛篱笆
Description 约翰在加勒比海买下地产,准备在这里的若干个岛屿上养奶牛.所以,他要给所有岛屿围上篱笆.每个岛屿都是多边形.他沿着岛屿的一条边界朝一个方向走,有时候坐船到另一个岛去.他可 ...
- 查找第k小的元素(O(n)递归解法)
今天分享一个小技巧,虽然是小技巧但是还是很有价值的,曾经是微软的面试题.题目是这样的,一个无序的数组让你找出第k小的元素,我当时看到这道题的时候也像很多人一样都是按普通的思维,先排序在去第K个,但是当 ...
- 关于int *a[常量]与int (*a)[常量]的分析与区分(详解)
前言: 小伙伴私信我说,int *a[常量]与int (*a)[常量]这个区分不开,C指针,确实是C中最难的部分,也是学C++,JAVA,包括你以后上岗用的非常频繁的东西,在这里我就简单论述一下吧,具 ...