典型的大型互联网应用系统的技术方案

用户头像
林昱榕
关注
发布于: 2020 年 07 月 01 日

从架构五大要素展开分析:性能、可用性、伸缩性、拓展性、安全,为解决这五大问题,系统会采用一系列的解决方案。

性能

了解性能:性能测试

性能测试是一个总称,具体可细分为:性能测试、负载测试、压力测试、稳定性测试。

  • 性能测试:以系统设计初期规划的性能指标为预期目标,对系统不断施加压力,验证系统在资源可接受范围内,是否能达到性能预期。

  • 负载测试:对系统不断地增加并发请求以增加系统压力,直到系统的某项或多项性能指标达到安全临界值,如某种资源已经呈饱和状态,这时继续对系统施加压力,系统的处理能力不但不能提高,反而会下降。

  • 压力测试:超过安全负载的情况下,对系统继续施加压力,直到系统崩溃或不能再处理任何请求,以此获得系统最大压力承受能力。

  • 稳定性测试:被测试系统在特定硬件、软件、网络环境条件下,给系统加载一定业务压力,使系统运行一段较长时间,以此检测系统是否稳定。



优化方案

web前端优化

浏览器访问优化
  1. 减少HTTP请求(合并CSS、合并JavaScript、合并图片);

  2. 使用浏览器缓存;

  3. 启用压缩;

  4. 减少cookie传输等

CDN加速

CDN能够缓存的一般是静态资源,如图片、文件、CSS、Script脚本、静态网页等,但是这些文件访问频度很高,将其缓存在CDN可极大改善网页的打开速度。

反向代理

当用户第一次访问静态内容的时候,静态内容就被缓存在反向代理服务器上,这样当其他用户访问该静态内容的时候,就可以直接从反向代理服务器返回,加速Web请求响应速度,减轻Web服务器负载压力。

常见的反向代理有:Nginx、HAProxy、iis等。

应用服务器优化

本地缓存

Google guava、Caffeine。

分布式缓存

缓存的本质是一个内存Hash表。



不适合使用缓存的情况:

  • 频繁修改的数据(缓存需读写比在2:1以上)

  • 没有热点的访问



使用缓存需注意的几个问题:数据不一致与脏读、缓存可用性、缓存预热、缓存穿透



分布式缓存指缓存部署在多个服务器组成的集群中,以集群方式提供缓存服务,其架构方式有两种,一种是以JBoss Cache为代表的需要更新同步的分布式缓存,一种是以Memcached为代表的不互相通信的分布式缓存

使用集群

集群会用到负载均衡技术,如Nginx等。

代码优化

包括:多线程、资源复用(单例、对象池)、数据结构、垃圾回收。

存储优化

  • 机械硬盘vs. 固态硬盘

  • B+树vs.LSM树

  • RAID vs.HDFS



高可用

  • 应用高可用:集群:负载均衡、session管理;

  • 服务高可用:分级管理、超时设置、异步调用、服务降级、幂等性设计;

  • 数据高可用:冗余备份、失效转移。



需要建立一套监控系统。

伸缩性

涉及技术有:容器化、云计算。

可拓展

消息队列

安全

加密、信息过滤和反垃圾、风险识别等。



发布于: 2020 年 07 月 01 日 阅读数: 50
用户头像

林昱榕

关注

开心生活,努力工作。 2018.02.13 加入

还未添加个人简介

评论

发布
暂无评论
典型的大型互联网应用系统的技术方案