大型网站技术架构 读书笔记3 高性能架构

很明显,这一章是说性能优化的,那么在说性能之前,我们得先了解性能的具体定义,也就是说如何评定一个系统性能是好还是不好。

因此,我们就先说说性能测试,然后分别是前端性能,应用服务器的性能以及存储性能的优化。

性能测试

1 不同的人对性能的认识是不一样的

对用户来说,他们认为的性能就是网站反应的快慢,具体来说就是他们点击鼠标,然后看到效果所需要的时间。对于这部分的优化,可以参见后面的前端部分

对开发人员来说,那就简单了,包括系统延迟,系统吞吐量,并发处理能力,稳定性等等。当然,这部分的优化就主要在应用服务器这一层。

对运维来说,那就是基础设施的性能和资源利用率。包括服务器带宽利用率,cpu,内存利用率等等。

2 测试指标

响应时间:这个很好理解,从发出请求到获得响应数据所花费的时间

并发数:同时提交请求的用户数。对于一个网站来说,我们得区分三个概念,网站系统用户数,当前在线用户数,并发用户数。

吞吐量:单位时间内系统处理的请求数量。可是tps(每秒事务数)等指标衡量

性能计数器:包括系统负载,对象与线程数,内存使用等等。监控系统应该监控这些指标,一点到达某个阈值就报警。

这里咱们说说系统负载:正在被cpu执行和等待被cpu执行的进程数目之和。

如果系统负载小于cpu数量,表示系统资源在被浪费,反之,如果系统负载大于cpu数量,那么就是说资源不足

最好的情况就是系统负载等于cpu数量

在linux下,可以使用top命令查看系统负载

参见:linux怎样使用top命令查看系统状态

3 优化策略

第一步肯定就是性能分析喽,你得先确定用户说系统响应缓慢,到底是那个模块拖了后腿。然后再进行优化,大体的优化应该在三个层次:前端,应用,存储。

前端优化

浏览器优化

减少http请求:通过合并css,JavaScript,把多张图片合并成一张,使用的时候使用css偏移。

使用缓存:使用浏览器缓存

使用压缩

css放在上面,javascript放在下面

减少cookie传输

cdn加速

把静态资源放在离用户更近的地方

反向代理

把静态资源,放在应用服务器前面

应用服务器优化

缓存

缓存一般就是一个大的Hash表,可以在O(1)内获得数据

不过我们得合理使用缓存,得避免以下几个问题

1 频繁的修改数据(一般情况下读写比例在2:1以上,缓存才有意义)

2 没有热点的访问(也就是说对数据的访问,不遵循2-8定律)

4 数据不一致(如卖家已经改动了商品属性,但是买家并不是实时看到,如果要强制一致也会带来别的问题)

分布式缓存架构

一种是jboss cache代表的需要更新同步的方案,一种是以Memcached为代表的不互相通信的方案。

异步

主要就是使用消息队列,任何可以晚点做的事情都晚点做吧,使用消息队列可以削峰

集群

一匹马拉不动,就用三匹马。很简单的逻辑

代码优化

1 多线程(最好把对象设计为无状态或者使用局部对象,访问资源的时候使用锁)

2 资源复用(单例和对象池)

3 垃圾回收

存储优化

不懂

时间: 2024-10-10 05:03:49

大型网站技术架构 读书笔记3 高性能架构的相关文章

《大型网站技术架构》读书笔记四:瞬时响应之网站的高性能架构

一.网站性能测试 (1)性能测试指标:①响应时间:②并发数:③吞吐量:④性能计数器: (2)性能测试方法:①性能测试:②负载测试:③压力测试:④稳定性测试: (3)性能优化策略: ①性能分析:检查请求处理各个环节的日志,分析哪个环节响应时间不合理,检查监控数据分析影响性能的因素: ②性能优化:Web前端优化,应用服务器优化,存储服务器优化: 二.Web前端性能优化 (1)浏览器访问优化: ①减少http请求:因为http是无状态的,每次请求的开销都比较昂贵(需要建立通信链路.进行数据传输,而服务

《大型网站技术架构》读书笔记之六:永无止境之网站的伸缩性架构

此篇已收录至<大型网站技术架构>读书笔记系列目录贴,点击访问该目录可获取更多内容. 首先,所谓网站的伸缩性,指不需要改变网站的软硬件设计,仅仅通过改变部署的服务器数量就可以扩大或者缩小网站的服务处理能力.在整个互联网行业的发展渐进演化中,最重要的技术就是服务器集群,通过不断地向集群中添加服务器来增强整个集群的处理能力. 一.网站架构的伸缩性设计 1.1 不同功能进行物理分离实现伸缩 (1)纵向分离:将业务处理流程上得不同部分分离部署,实现系统的伸缩性: (2)横向分离:将不同的业务模块分离部署

《大型网站技术架构》读书笔记之八:固若金汤之网站的安全性架构

此篇已收录至<大型网站技术架构>读书笔记系列目录贴,点击访问该目录可获取更多内容. 一.网站应用攻击与防御 二.信息加密技术与密钥安全 三.信息过滤与反垃圾 四.电子商务风险控制 五.学习总结 转眼之间,<大型网站技术架构>的读书笔记到此就结束了.最近时间非常紧,因此本篇没有详细对笔记进行介绍(本篇涉及太多内容,而且都是安全相关的).通过本书的学习,我们从高性能.高可用.伸缩性.可扩展性.安全性五个方面的架构学习了每个方面经典的技术方案,虽然以理论偏多,但还是可以从中管中窥豹,一览

Web高级征程:《大型网站技术架构》读书笔记系列

一.此书到底何方神圣? <大型网站技术架构:核心原理与案例分析>通过梳理大型网站技术发展历程,剖析大型网站技术架构模式,深入讲述大型互联网架构设计的核心原理,并通过一组典型网站技术架构设计案例,为读者呈现一幅包括技术选型.架构设计.性能优化.Web安全.系统发布.运维监控等在内的大型网站开发全景视图. 本书不仅适用于指导网站工程师.架构师进行网站技术架构设计,也可用于指导产品经理.项目经理.测试运维人员等了解网站技术架构的基础概念:还可供包括企业系统开发人员在内的各类软件开发从业人员借鉴,了解

《大型网站技术架构》读书笔记之七:随需应变之网站的可扩展架构

此篇已收录至<大型网站技术架构>读书笔记系列目录贴,点击访问该目录可获取更多内容. 一.可伸缩与可扩展-傻傻分不清楚 上篇笔记我们学习了可伸缩架构,但在实际场合中,包括许多架构师也常常混淆可伸缩和可扩展,用可扩展表示伸缩性.那么在此,跟随作者我们来理清这两个概念,避免我们以后对其傻傻分不清楚. (1)扩展性(Extensibiltiy) 指对现有系统影响最小的情况下,系统功能可持续扩展或提升的能力.我们不禁想到了面向对象中一大原则:开闭原则,对扩展开放,对修改封闭.也就说,当系统新增一个功能时

《大型网站技术架构 -核心原理与安全分析》读书笔记

大型网站架构演化的价值观 网站的价值在于它能为用户提供什么价值,在于网站能做什么,而不在于它是怎么做的,所以在网站还很小的时候去追求网站的架构是舍本逐末,得不偿失的.小型网站最需要做的就是为用户提供好的服务来创造价值,得到用户的认可,活下去,野蛮生长. 网站架构设计误区 一味追求大公司的解决方案 大公司的经验和成功模式固然重要,值得学习借鉴,但如果因此而变得盲从,就失去了坚持自我的勇气,在架构演化的道路上迟早会迷路. 为了技术而技术 网站技术是为业务而存在的,除此毫无意义.在技术选型和架构设计中

《大型网站技术架构》读书笔记二:大型网站架构模式

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

《大型网站技术架构》读书笔记一:大型网站架构演化

一.大型网站系统特点 (1)高并发.大流量:PV量巨大 (2)高可用:7*24小时不间断服务 (3)海量数据:文件数目分分钟xxTB (4)用户分布广泛,网络情况复杂:网络运营商 (5)安全环境恶劣:黑客的攻击 (6)需求快速变更,发布频繁:快速适应市场,满足用户需求 (7)渐进式发展:慢慢地运营出大型网站 二.大型网站架构演化过程 (1)初始阶段网站架构:一台Server就刚需-应用程序.数据库.文件等所有资源都集中在一台Server上,典型案例:基于LAMP架构的PHP网站 (2)应用和数据

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

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