大型网站技术架构 读书笔记2 大型网站核心架构要素

通常情况下,一个网站的架构出来功能性需求外,还应该考量以下五个方面:

性能

可用性

伸缩性

扩展性

安全性

性能

性能的官方解释,我就不说了。对用户来说,就是系统的反应速度是否快。

对网站来说,性能问题是无处不在的,继而,我们优化性能的手段也有很多。

我们从前到后一个一个来说

在浏览器端,可以通过浏览器缓存,页面压缩,合理布局页面等方式

还可以使用cdn,让一些静态文件放在网络服务商的机房,这样离用户近一些。

也可以使用反向代理,把静态文件存在反向代理服务器上,例如apache

服务器端就是缓存了,有本地缓存,分布式缓存两种形式

再有就是异步,集群

以上为服务器级别的手段

在代码层次,可以使用多线程以充分发挥多核的优势

数据库层次,索引,缓存,sql优化等等已经又数据库服务商为我们做好了。

网站的性能指标包括

响应时间(这个好理解)

TPS(Transaction Per Second) 每秒钟系统能够处理的交易或事务的数量

就我个人的理解,对应性能的优化,应该先测试,要明白系统到底是哪里慢,哪里才是系统的瓶颈。优化的时候要有的放矢,不能事倍功半。

关于性能的分析与测试下一节我们再说

可用性

这个也比较好理解,可用就是说,系统作为一个整体可对外提供服务。

因为要维护代码,增加新的应用或者硬件问题,断电等等,没有哪一件网站能做到7x24小时可用。

但是,我们要尽力的做到高可用。

高可用的手段主要就是冗余。一个硬件能干的事,我用n(n>1)个。

应用服务器使用n个,采用负载均衡,一台坏了还有n-1台。当然负载均衡这个东西,也可以部署2套。

对应数据库而已,一般就是实时备份。

衡量一个系统的架构设计是否满足高可用的目标,就是假设系统中任何一台或者多台服务器宕机时,或者出现别的不可预期的问题时,系统整体是否依然可用。

伸缩性

我们已经知道,在当前的实践中,网站是使用多台服务器组成一个整体来对外提供服务(可用是应用服务,也可以是存储服务,当然还可以是计算服务等等)的。

衡量伸缩性的标准就是时候可以采用多台服务器构建集群,是否可以(容易)向系统里增加更多的服务器来提高系统的服务能力,集群中的总的服务器数量是否有限。

服务器主要有三种,应用服务器,缓存服务器,数据库服务器。

对于应用服务器来说,只有里面没有保存数据,那么所有的服务器都是对等的,只要有合适的负载均衡策略,我们就可以不断的增加应用服务器。

缓存服务器,(如果应用已经严重依赖缓存了)这里的主要矛盾是要改进缓存的路由算法(否则,会路由失效)

数据库要直接增加硬件来扩充服务比较麻烦,所以在这里我们主要的策略通过路由分区把多个部署有数据库的服务器组成集群。

NoSQL本身就是为大数据而产生的,伸缩性都比较好。

扩展性

伸缩性与扩展性就字面意义来说,似乎很接近

其实扩展性,就是指,对现有的系统增加一个新的模块,是否可以实现对现有模块的透明无影响,不需要或者很少改动现有的代码就能上线新模块,不同产品之间是否很少耦合,一个产品改动了对别的产品没影响。

要实现扩展性,主要由两个手段1 事件驱动  2 分布式服务(其实说白了,要解耦,就是这两个方式)

事件驱动就是指在系统中引入消息队列

分布式服务是将业务主体和可以复用的服务分开。新增的产品可以调用那些可复用的服务来实现自身的逻辑。

安全性

不受恶意访问和攻击,重要数据不被窃取。

思维导图

时间: 2025-02-01 10:36:12

大型网站技术架构 读书笔记2 大型网站核心架构要素的相关文章

Linux内核架构读书笔记 - 2.5.4 核心调度器

什么是核心调度器? 参考前面的博文http://www.cnblogs.com/songbingyu/p/3696414.html 1 周期性调度器 作用: 管理内核中与整个系统和各个进程的调度相关的统计量 负责当前调度类的周期性调度方法 kernel/sched.c 1 /* 2 * This function gets called by the timer code, with HZ frequency. 3 * We call it with interrupts disabled. 4

大型网站技术架构 读书笔记1 大型网站架构模式

架构,又名软件架构,是有关软件整体结构与组件的抽象描述,用于指导大型软件系统各个方面的设计. 关于什么是模式,这个来自建筑学的词汇是这样定义的:"每一个模式描述了一个在我们周围不断重复发生的问题及该问题解决方案的核心.这样,你就能一次又一次地使用该方案而不必做重复工作".模式的关键在于模式的可重复性,问题与场景的可重复性带来解决方案的可重复使用. 针对现在的高并发访问,海量数据处理,高可靠运行等一系列问题,众多大型互联网公司提出了各种系统解决方案.这些优秀可靠的方案又被别的网站重复使用

大型网站技术架构读书笔记目录

这是一本什么样的书籍 <大型网站技术架构:核心原理与案例分析>通过梳理大型网站技术发展历程,剖析大型网站技术架构模式,深入讲述大型互联网架构设计的核心原理,并通过一组典型网站技术架构设计案例,为读者呈现一幅包括技术选型.架构设计.性能优化.Web安全.系统发布.运维监控等在内的大型网站开发全景视图.虽然没有相关的细节内容,不妨碍一览众山小大型网站的各个方面. ? 为什么会读此书 为以后有机会做大型网站做技术储备,深入了解大型网站建设的各个方面.以此形成笔记,方便以后复习和查阅,必经书读一遍是远

读书笔记2大型网站的架构模式

? 一.分层 最常见的架构模式,将系统在横向维度上切分成几个部分,每个部分单一职责.网站一般分为三个层次:应用层.服务层和数据层,其具体结构如下图所示: 通过分层,一个庞大系统切分成不同部分,便于分工合作和维护. 但是,分层架构也有一些挑战:①必须合理规划层次边界和接口:②禁止跨层次的调用及逆向调用. 二.分割 分割是在纵向方面对软件进行切分->将不同的功能和服务分割开来,包装成高内聚低耦合的模块单元,有助于软件开发和维护,还便于不同模块的分布式部署,提高网站的并发处理能力和功能扩展能力. 三.

Linux内核架构读书笔记 - 2.5.3 处理优先级

1 优先级的内核表示 内核使用 0 - 139 表示内部优先级,值越低,优先级越高.0 -99 实时进程使用 nice 值 [-20,19]映射到范围100 - 139,如下图 内核定义了一系列宏来辅助优先级之间的转换 sched.h 1 /* 2 * Priority of a process goes from 0..MAX_PRIO-1, valid RT 3 * priority is 0..MAX_RT_PRIO-1, and SCHED_NORMAL/SCHED_BATCH 4 *

Linux内核架构读书笔记 - 2.5.2 数据结构

调度系统各个组建关系如下 激活调度器两种方法:进程睡眠或其他原因放弃CPU,周期性检测 上述两个组件统称为通用调度器或核心调度器. 调度器用于判断接下来运行那个进程,内核支持不同的调度策略( 完全公平调度 实时调度 无事可做的空闲调度进程) 调度器被调用时候 需要执行体系相关的进程上下文切换 每个进程属于某个调度器类,各个调度器负责管理所属进程,通用调度器不涉及进程管理,都由调度器来 下面分别讲述: task_struct 成员 sched.h 1 struct task_struct { 2

《软件测试方法和技术》 读书笔记

<软件测试方法和技术> 读书笔记 2014-07-17 第一章 引论  1.3 什么是软件测试  1.4 软件测试与软件开发的关系第二章 软件测试基本概念  2.1 软件缺陷  2.3 软件测试的分类  2.4 测试阶段  2.5 软件测试的工作范畴第三章 软件测试方法  黑盒测试    边界值测试    等价测试      报表日期      三角形    基于决策表的测试      NextDate函数  白盒测试    语句覆盖    判定覆盖    条件覆盖    判定条件覆盖   

大型网站技术架构 读书笔记4 高可用架构

说句掏心窝的话,高可用甚至比高性能更重要.为什么? 因为你把系统的性能优化10倍,你的老板可能会说:小董呀,干的不错. 可是,如果你负责的模块,三天两头就宕掉了,嘿嘿,你懂得. 可用性度量 99%-----网站年度不可用时间小于88个小时 99.9%---网站年度不可用时间小于9个小时 99.99%---网站年度不可用时间小于53分钟 高可用架构 一般的互联网公司大多采用pc级服务器,开源的数据库和操作系统,这样来说,当然节省成本,不过另一方面来说,服务器宕机就是一个大概率事件了. 所以,高可用

读书笔记1: 大型网站架构演化

大型网站系统的特点 高并发,大流量,PV巨大 高可用,7*24 海量数据,P级别 用户分布广泛,网络情况复杂,不同运营商 安全环境恶劣,黑客攻击 需求快速变更,发布频繁,快速跟进市场,需求变更快 渐进式发展,从小网站一步一步进化 ? 大型网站架构的演化历程 初始阶段网站架构,一台服务器, 一台Server就部署-应用程序.数据库.文件等所有资源都集中在一台Server上,典型案例:基于LAMP架构的PHP网站 应用服务和数据库服务分离, 三台Server平天下-业务发展,单台不再适应业务的发展,