《大型网站技术架构》-第一章随笔

1.高并发、大流量;

2.高可用;

3.海量数据;

4.用户分布广泛;

5.安全环境恶劣;

6.需求快速变更,发布版本快速;

7.渐进式发展,架构随着业务不停优化深入;

二. 大型互联网站架构演化发展历程:

1. 应用程序(PHP开发部署在Apache上)、数据库(MySQL)、文件都放在一台应用服务器(Linux操作系统)上,即LAMP;

2. 应用服务和数据服务分离----把应用、数据分离

随着业务的发展,一台服务器逐渐不能满足要求:越来越多的用户访问导致性能越来越差,越来越多的数据导致存储空间不足。这时就需要把应用和数据分离,分离后网站使用三台服务器:应用服务器、文件服务器、数据库服务器。应用服务器需要强大的CPU处理逻辑运算,数据库服务器需要更加的硬盘空间和内存,文件服务器需要更大的硬盘空间。

3. 使用缓存改善性能----改善访问数据库频次

这个不多说了,扛住一些经常访问数据的高并发流量冲击减轻访问数据库压力。

缓存分为:本地缓存(应用服务器缓存)和远程缓存(分布式缓存服务器上的缓存)。

本地缓存:速度更快,但是缓存大小有限,而且会和应用程序争用内存。

远程缓存:即分布式缓存,理论上可以做到无限扩容。

4.使用应用服务器集群改善网站的并发处理能力----改善服务器处理性能

通过集群增加网站处理请求的能力,并提高网站的高可用性。通过F5向应用服务器集群分发用户请求,通过水平扩容使应用服务器的负载压力不在成为网站瓶颈

5. 数据库读写分离----改善数据库处理性能

数据库分成主从库,主库负责写入数据及向从库同步数据,从库负责读取数据(没有命中缓存)。

6. 反向代理和CDN加速----本质上仍然是缓存,用来减轻后端服务器的负载压力。

CDN:部署在运营商的机房,用户在请求数据时,先到离自己最近的网络提供商机房获取数据;

反向代理:部署在网站中心机房,当用户请求到达中心机房后,首先访问反向代理服务器,如果反向代理服务器上缓存着用户的请求资源,直接返回给用户;

7. 使用分布式文件和数据库系统----提升文件和数据库可用性

8. 使用NOSQL和搜索引擎----提高搜索效率,解决一些关系型数据库先天性的效率问题

9. 业务拆分----垂直拆分

10. 分布式服务

时间: 2024-08-15 05:11:21

《大型网站技术架构》-第一章随笔的相关文章

第一章随笔&&思考题

<构建之法>已经到手了,但是还没开始看,只翻看了前几页,和传统的教材区别很大,没有大篇幅的理论,比教材看起来有意思.第一章中还提到了‘bug’的由来,第一次听说,感觉挺有意思. 第一周上课老师提问什么是软件,同学们认为软件就是程序,我也是这么想的.但是为什么他要叫软件,而不叫程序呢?对于程序,比较通用的定义是:程序=算法+数据结构.但是算法和数据结构组合起来能构成软件吗?答案是不够的.所以<软件工程概论>中,将软件定义为程序.数据及其相关文档的完整集合(软件=程序+数据+文档).程

《软件工程》-第一章随笔

本章主要是软件的概述.软件是计算机程序,规程以及运行计算机系统可能需要的相关文档和数据.软件主要分为两种,一种是面向市场公开的通用软件,另一种是在某个特定约束条件下开发的定制软件.软件是复杂的,不可见的,不断变化的,且在软件技术日趋成熟的今天,大多数软件仍然是定制的,而非已有构件组装而成.20世纪70年代开始,计算机应用从简单的数据计算到涉及到各种商务领域.20世纪90年代至今,网络的迅速发展使软件系统从封闭走向开放.而随着软件的迅速发展,软件的开发也随之遇到了一系列软件危机.软件日趋成熟,软件

第一章随笔

软件=程序+软件工程 软件企业=软件+商业模式 工程师的宗旨是:我构建,故我在 程序在这里指的是源程序,就是一行行的代码,它们是建立在数据结构上的一些算法.程序对数据进行操作,工程师把它们构建为机器能懂的可执行代码.构建不仅仅是cc和link命令,一个复杂的软件不但要有合理的软件架构.软件设计与实现,还要有各种文件和数据来描述各个程序文件之间的依赖关系.编译参数.链接参数,等等.这些都是软件构建的过程.      软件工程:和软件开发活动(构建管理.源代码管理.软件设计.软件测试.项目管理)相关

Android深度探索与HAL驱动开发(卷1)-- 第一章随笔

本文主要从 Android版本与对应的linux内核版本关系 和 Android系统架构 两部分来讨论. 1.Android版本与Linux内核的关系 (1)Android最初使用Linux2.6作为其内核,随着Android与Linux内核的发展,不同版本的Android使用的linux内核版本差异较大,所以不同Android版本驱动可能并不通用. 下表显示了目前所有Android版本与linux内核版本的联系. Code name Android Version number Linux K

《构建之法》第一章读后随笔

<构建之法>第一章首先提出了“软件=程序+软件工程”的观点,然后介绍了软件开发的不同阶段,最后阐述了软件工程是什么的问题.这让我对软件工程有了新的认识,也对构建之法的重要性有了更为深刻的理解. 其实很多工科的很多道理都是相通的.不光是在软件工程,几乎的所有工程中,当工程规模到达了一定的数量级,就不可能是由一个人的一己之力能够完成的,这就需要相互协作,每个人只能做自己的一部分工作.如何能够让别人理解自己的工作的作用,如何能让每个人的工作都能融入一个系统,这就需要模块化,需要集成,话句话说,就是需

大道至简 第一章 读后随笔

在读这本书的之前,我上网查了“大道至简”的含义.以下是搜索出来的结果:大道至简的含义就是最有价值的道理其实是最朴素的道理,很重要的道理其实是很平常的道理.大道至简应是一种境界,就像读一本书,初读,是从简单到复杂,再读是从复杂到简单,读熟了就只剩一个纲了,这就是简.大道至简也是一种哲学,无论是做人还是做事都会给人以指导.在当今这个层层叠叠的大千世界中,我们要学会把复杂变成简单,用智慧创造“简单”,在变迁中不断的升华. 在书的第一章中,首先,开篇由<愚公移山>引入展开,叙述了需求的产生,项目沟通基

邹欣老师的《构建之法》第一章“概论”学习笔记与自我随笔

刚读完了邹欣老师的<构建之法>第一章“概论”,四个字形容:酣畅淋漓. 概论将自己的一些模糊的认识清晰化,用准确的文字描述了出来,填补了脑海里的一些灰色地带. 总结一下:概论通俗地阐述了编程.软件.计算机科学.软件工程的联系与区别,简单说,编程是一项具体动作,软件是供人使用的产品,具体有很多种类型,而计算机科学是偏向理论研究,软件工程就像其他工程学一样,是在一定条件下合理配置资源达到生产软件的目的. 本人作为一名从小对编程.软件.计算机感兴趣的Nerd,虽然大学专业与此无关,但刚毕业时签了一份软

软件工程导论 第一、二、十六 章 随笔

第一章 通过阅读第一章,使我对软件工程有了更加深刻的认识,从软件的定义到发展,再到具体实现一个令大众满意的软件的流程和软件开发的各个阶段都有很详细的介绍,更是引用了航空产业的发展历程做了一个比较,使读者能够清晰的理解其含义.对于软件工程与计算机科学的关系和区别也通过现实中的例子给出了详尽的解读.   关于问题 1.我通过阅读第一章的1.2.4节,我对于何为一个"足够好"的软件产生了疑问,足够好是不是就是说明并不完美,没有达到预期,是不是就说明这个软件没有达到客户的要求,不能令客户满意,

第一章 计算机网络和因特网

前言 写这部分随笔是因为在上这个课,上课加上读了<计算机网络 自顶向下方法>之后的有所理解,又因为原书特别繁冗,感觉在复习的时候会压力很大,先记录下来以备后用. 1.1 什么是因特网 具体构成:主机(host)或端系统(end system)通过通信链路(communication link)与分组交换机(packet switch)链接到一起,从而组成因特网.其中电脑.手机等均属于主机或端系统.而分组交换机中经常用到的有路由器(router)和链路层交换机(link-layer switch