互联网架构_2

网站架构设计
在测试过程中,你可能会经常遇到诸如负载均衡器、缓存集群、数据库读写分离、消息队列、CDN、反向代理服务器和分布式数据库等概念。而测试只有对这些组件有一定了解,才能更好的设计测试用例,尤其是性能测试。否则就有种无从下手的感觉。

基于消息队列的分布式系统架构

分布式系统架构中,为减少各个应用系统之间的直接耦合,往往会引入消息队列来实现解耦。

如下图示例,B系统调用A系统,通过消息队列进行解耦
在这里插入图片描述

作为软件测试人员,你需要知道消息队列的基本原理以及在被测系统中的部署情况,同时应该知道如何访问消息队列或者队列中消息的情况。在需要模拟消息进行解耦测试的场合,你还需要知道如何添加测试消息以满足测试的目的。

缓存

在计算机的世界中,凡是想要提高性能的场合都会使用到缓存的思想。缓存是指将数据存储在访问速度相对较快的存储介质中,所以从缓存中读取数据的速度更快。

后端性能测试中,刚开始运行业务时,响应时间比较长,运行一段实践后响应变快。

原因是服务器端会对“热点”数据进行缓存,而不是每次访问都直接从数据库中获取数据。那么,系统刚开始运行时,由于没有任何之前的访问记录,所有数据都需要访问数据库,所以前期的事务响应时间都会比较长。但是,随着缓存的建立,后续的访问就会比较快了。这个前期对系统的“预热”过程其实是在“预热”缓存。

前端性能测试中,第一次打开往往比多次打开后的打开耗费时间长,主要原因是采用缓存技术。

浏览器端也会缓存从服务器端拿到各种静态资源,在第一次访问时这些资源都需要从服务器端获取,而后面再访问时,这些静态资源已经在浏览器的缓存中了,所以访问速度会大大加快。

在互联网环境下,缓存本身也是分层的,浏览器端有本地缓存、网络端有 CDN 缓存、数据中心前端有反向代理的缓存、应用服务器端有本地缓存,对于大规模互联网应用更有大规模的专用缓存服务器集群。所以,要有针对性的设计缓存相关的测试场景,就需要理解这些缓存的架构。

  • 浏览器级别的缓存,会用来存储之前在网络上下载过的静态资源;
  • CDN 本质也是缓存,属于部署在网络服务供应商机房中的缓存;
  • 反向代理服务器本质上同样也是缓存,属于用户数据中心最前端的缓存;
  • 数据库中的“热点”数据,在应用服务器集群中有一级缓存,在缓存服务集群中有二级缓存;
  • 甚至是用于 URL 和服务器 IP 地址转换 DNS 服务器,为了减少重复查询的次数也采用了缓存。

启用了缓存后,当应用程序需要读取数据时,会先试图从缓存中读取:

如果读取成功,我们称为缓存命中,此时就可以在很大程度上降低访问数据库的时间开销。

如果没有读取到数据或者缓存中的数据已经过期失效,那么应用程序就会访问数据库去获取相应的数据。获取到数据后,在把数据返回给应用程序的同时,还会把该数据写入到缓存中,以备下次使用。

缓存主要用来存储那些相对变化较少,并且遵从“二八原则”的数据。这里的“二八原则”指的是 80% 的数据访问会集中在 20% 的数据上。缓存不适用那些需要频繁修改的数据。

缓存数据丢失或者不可用不影响系统使用,因为系统可以从数据库读取,但是缓存系统崩溃会导致大量数据库访问,可能无法承受压力而宕机。

为了解决这个问题,有些网站会使用缓存热备等技术手段来提供缓存的高可用性,即:当某台缓存服务器宕机的时候,会将缓存访问切换到热备的缓存服务器上。另外,如果你采用了分布式缓存服务器集群的话,那么缓存的数据将被分布到集群中的多台服务器上,当其中一台服务器宕机的时候,也只会丢失一部分缓存数据,此时通过访问数据库来重建这些缓存数据的开销并不算太大。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值