欢迎进入武汉轻洽网络技术有限公司官方网站!
服务热线:027-51831034,13971151027
   6年前 (2017-06-24)  网站优化 |   抢沙发  211 
文章评分 0 次,平均分 0.0

1.web前端优化

减少http次数,比如合并css javascript文件

使用浏览器缓存,静态文件设置http头Cache-Control和Expires属性。
更新静态文件时,避免一次更新多个文件,应该一个文件一个文件间隔更新,避免用户浏览器的缓存大量失效,集中更新静态文件,造成服务器压力陡增

启用压缩,文本压缩率比较高,压缩省带宽耗CPU,选择平衡点

css先加载,js垫底。
让css文件尽早下载完开始渲染页面,避免js动作阻塞页面。
HTTP2可以使用Server Push 特性,尽早推送静态资源

减少cookie传输,比如静态资源使用独立域名,避免获取静态资源传输无用的cookie

CDN加速,花点钱,性价比高

反向代理:比如nginx,很多选择

2.应用服务器优化

分布式缓存:
不可过度依赖缓存,缓存总归是不可靠的。

读写比小于2:1,缓存无意义。

上线时注意缓存预热,必要时专门准备预热脚本。

避免缓存穿透:如果因为不恰当的业务或者恶意攻击,持续高并发访问某个不存在的数据,由于缓存中没有该数据,导致压力落到数据库,简单对策,将不存在的数据也缓存起来,只是value为null

分布式缓存架构简述
Jboss Cache为代表的需要同步更新的分布式缓存,每台缓存机器数据相同,缺点是缓存的体量小,受限于单机容量。
常用于企业系统,大型网站少用。

Memcached为代表的集中式缓存集群,使用一致性hash存取数据,每台机器存储一部分数据,合起来才是缓存总量
Memcache采用固定空间分配,将内存分为一组slab,每个slab里又分为一组chunk。
不同slab的chunk大小不同,每个slab内不chunk相同,然后根据数据的size大小,选择最小的适合的slab存储,实现按需存储。
所以,数据大小应该均匀分布,否则大量数据集中在个别slab,导致其他slab浪费。

3.存储性能优化

传统关系型数据库多使用两级索引的B树,NoSQL多使用LSM。
LSM写数据都会创建一个新记录(修改记录新数据,删除打上删除标记),这些数据在内存中仍然是一个排序树,当数据量超过预定的阀,将内存的数据与磁盘数据合并。
查找先内存后磁盘。

4. 应用服务器设计要点

服务无状态:应用服务器不保存任何状态,从而每台服务器绝对对等,请求给谁都能得到相同的处理结果,负载均衡器才能故障转移,不影响业务逻辑

集群环境下session管理:
session绑定。
利用负载均衡器的源地址hash算法,总是将同一个IP的请求分发给同一个应用服务器(也可以根据cookie,同一个用户的请求分发给同一个应用服务器,这个时候负载均衡器必须工作在HTTP协议层)。
适合小规模,存在单点故障,某台应用服务器故障,它负责的一部分用户无法完成业务。

利用cookie记录session,每次请求将session信息发送给服务器,服务器修改后返回session信息。
缺点是:浪费带宽,有损性能;重度依赖cookie,如果客户端关闭cookie,方案失败
推荐:独立部署session服务器集群,这种方案本质上是将有状态和无状态的应用服务器分离。
session服务器利用分布式缓存等技术包装一下,存储session信息。
更高级的,利用session服务器做SSO

异步队列对于削峰效果显著,但是受限于业务逻辑,不是所有业务都适合异步处理

设计降级机制:高峰期,关闭非核心应用或接口带来的访问,确保核心应用或接口可用。
比如淘宝双十一期间,关闭“收货”,评价等业务,腾出资源做秒杀。

幂等设计:请求某个服务成功,因为网络原因没有收到响应,会重复调用,这种重试不可避免。
设计成幂等接口,调用多次无副作用。
比如转账接口,必须强校验,避免重试,导致逻辑错误。

5.几种负载均衡介绍

HTTP重定向负载均衡:利用HTTP协议,均衡器302返回真实的一组服务器地址,重定向机器成为瓶颈

DNS域名解析负载均衡:DNS中配置多个记录,比如 my.com IN A 111.1.1.1 my.com IN A 111.1.1.2等等。
每次域名解析请求到来,就会根据负载均衡算法返回其中一个IP地址。
缺点是DNS是多级解析,每级都可能有缓存,所以配置有变动时生效时间长;而且DNS控制权在域名服务商手里,可操作的空间有限

反向代理:反向代理收到请求,根据均衡算法,将请求转发至后面真实服务器,然后将响应写回客户端。
反向代理可能会成为瓶颈。

IP负载均衡:请求到达均衡器,均衡器在系统内核进程获取数据包,根据均衡算法,修改数据包的目的地址,同时将源地址修改为自身。
从而真实服务器处理请求后,将响应写给均衡器,均衡器再返回给客户端。
如果不修改源地址,则该均衡器充当真实服务器集群的网关服务器,所有的数据自然也能流经均衡器。

数据链路层负载均衡:请求到达均衡器,均衡器修改数据包中的MAC地址,改为真实服务器的地址,请求转发到真实服务器,处理后,直接返回客户端。
此方式又称为三角传输,由于不修改IP,需配置真实服务器虚拟IP与均衡器IP一致,请求进来通过MAC地址分发,请求出去,直接写给客户端,均衡器压力小,又称为DR,直接路由。
LVS是Linux最好的数据链路层负载均衡器。

扩展性:在对现有系统影响最小的情况下,系统功能可以持续扩展或提升。
说的是功能层面的事。

伸缩性:通过增加或减少自身资源规模(比如机器数量)来增强或减少系统的处理事务的能力。
说的是系统吞吐能力层面的事。

 

除特别注明外,本站所有文章均为轻洽网络原创,转载请注明出处来自http://www.qingqia.net/316.html

关于

发表评论

暂无评论

切换注册

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录

切换登录

注册

扫一扫二维码分享