专栏首页Linyb极客之路干货分享!设计一个系统架构时怎么去做性能优化?

干货分享!设计一个系统架构时怎么去做性能优化?

概述

设计系统架构中最核心的几个要素包括:性能,可用性,伸缩性,扩展性和安全性,而性能又是其中最为重要的,本篇简要说下网站性能优化方面所需做的一些事情;


1. 网站性能问题概要

2. 网站性能测试

站在开发、测试人员角度,性能测试的主要指标:响应时间、并发数、吞吐量、服务器各性能指标;


3. 性能优化

根据性能测试,定位产生性能问题的具体原因,找到瓶颈点,逐步优化;

一般性能优化分为Web前端性能优化、应用服务器性能优化、存储服务器性能优化(数据库优化的太多点了,后面再讲)

Web前端性能优化

1. 浏览器访问优化

2. CDN加速

上面说了,CDN的本质仍然是缓存,将数据缓存在离用户最近的机房,提升访问速度,降低中心机房服务器的压力;

CDN能够缓存的一般都是静态资源,如图片,文件,视频,CSS,JS等,将访问频度高的静态资源放到CDN中;

3. 反向代理

推荐用nginx来做缓存和负载,跟tomcat或其他中间件做动静分离。

应用服务器性能优化

1. 分布式缓存

网站性能优化第一定律:优先考虑使用缓存优化性能

缓存的本质是内存Hash表,数据以Key/Value的形式存储在Hash表中,时间复杂度O(1),Hash表存储如下图所示:

hash表存储

只要是缓存,就会涉及到缓存未命中与缓存失效问题,因此,缓存中的数据一般都是读取比例很高,很少变化的数据;

2. 异步操作

可使用消息队列将请求调用异步化,发送的请求发送给消息队列后立即返回,再由消息队列的消费者进程从消息队列中获取数据,异步写入数据库;

在高并发情况下,使用消息队列,能够有效降低数据库服务器压力,降低用户端响应延时;

消息队列可以消除高并发下的访问高峰,消峰效果如下图所示:

3. 使用集群

在高并发下,可使用负载均衡技术构建应用服务器集群,将请求分发到多台应用服务器来处理,降低单台服务器压力,提升响应速度;

4. 代码优化

存储服务器性能优化

在很多情况下,磁盘的访问速度成为整个系统的瓶颈,而且磁盘中的数据是网站最重要的资产,故磁盘的容错性和可用性都至关重要;

  • 适当使用SSD;
  • 合理使用RAID(RAID0,RAID1,RAID10,RAID5,RAID6等)
  • 合理使用HDFS等分布式文件系统

本文分享自微信公众号 - Linyb极客之路(gh_c420b2cf6b47),作者:波波说运维

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-08-05

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 面对海量请求,缓存设计还应该考虑哪些问题?

    从第一个缓存框架 Memcached 诞生以来,缓存就广泛地存在于互联网应用中。如果你的应用流量很小,那么使用缓存可能并不需要做多余的考虑。但如果你的应用流量达...

    lyb-geek
  • 分布式之数据库和缓存双写一致性方案解析

    首先,缓存由于其高并发和高性能的特性,已经在项目中被广泛使用。在读取缓存方面,大家没啥疑问,都是按照下图的流程来进行业务操作。

    lyb-geek
  • 数据库高并发解决方法总结

    一个项目刚开始的时候是为了实现基本功能,随着版本和功能的迭代,大数据和高并发成了软件设计必须考虑的问题!

    lyb-geek
  • 系统性能优化5000字干货

    作为一个程序员,性能优化是常有的事情,不管是桌面应用还是web应用,不管是前端还是后端,不管是单点应用还是分布式系统。本文从以下几个方面来思考这个问题:性能优化...

    用户1161110
  • 大数据并发问题

    http://blog.csdn.net/u014421556/article/details/50964505

    bear_fish
  • Hibernate学习---缓存机制

    前言:这些天学习效率比较慢,可能是手头的事情比较多,所以学习进度比较慢。 在之前的Hibernate学习中,我们无论是CURD,对单表查询还是检索优化,我们好像...

    MindMrWang
  • 架构高性能网站秘笈(四)——反向代理缓存

    什么是反向代理? 在介绍“反向代理”之前,首先要介绍一下“正向代理”的概念。 1.什么是正向代理? 在NAT技术(Network Address Transla...

    大闲人柴毛毛
  • BAT 大厂的大型网站页面静态化你了解吗?

    我们小伙伴们在访问淘宝、网易等大型网站时有没有考虑到,网站首页、商品详情页以及新闻详情页面是如何处理的?怎么能够支撑这么大流量的访问呢?

    业余草
  • 大型网站架构体系的演变

    文章出处来源 摘自 微信--IT搬运工 地址:http://mp.weixin.qq.com/s?__biz=MzAxNTI4NDAzNA==&mid=205...

    joshua317
  • Mybatis一级缓存,二级缓存的实现就是这么简单

    又到了一年面试季,所以打算写一点面试常问的东西,争取说的通俗易懂。面试高级岗,如果你说熟悉Mybatis,下面这些问题基本上都会问

    Java识堂

扫码关注云+社区

领取腾讯云代金券