软件性能测试(连载20)

本文涉及的产品
性能测试 PTS,5000VUM额度
网络型负载均衡 NLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月750个小时 15LCU
简介: 软件性能测试(连载20)

3.6结构优化


      随着云计算的大力发展。通过结构优化来提高软件性能,在软件研发中受到越来越大的重视。


1. 互联网架构演化

      在谈论结构优化之前,先来看看互联网架构发展的历史。


      最原始的互联网架构图如图3-40所示,这个时候后端仅仅存在Web服务器和数据库服务器,而且这两个服务器是处于同一条机器上的。


      第二代互联网架构是Web服务器和数据库服务器处于一个单独的服务器中,如图3-41所示。

     

image.png

                               3-40  最原始的互联网络结构


image.png

3-41  Web服务器和数据库服务器分离

      第三代互联网架构引入本地缓存和分布式缓存的模块,性能得到了提升,如图3-42所示。

      第四代互联网架构引入了Nginx反向代理实现负载均衡,如图3-43所示。

 

image.png

       3-42  本地缓存和分布式缓存


image.png

3-43  Nginx反向代理实现负载均衡

第五代互联网架构将数据库读写进行了分离,如图3-44所示。


第六代互联网架构数据库按业务分库,在这里分离了课件业务、购买业务以及其他业务,如图3-45所示。


image.png

 3-44  数据库读写分离 


image.png

3-45  数据库按业务分库

第七代互联网架构把数据库中的大表拆分成小表,如图3-46所示。

第八代互联网架构使用LVSF5来使多个Nginx负载均衡,如图3-47所示。

image.png

3-46  把大表拆分成小表


image.png

 3-47  使用LVSF5来使多个Nginx负载均衡

第九代互联网架构通过DNS轮询实现机房间的负载均衡,如图3-48所示。

第十代互联网架构引入NoSQL数据库和搜索引擎等技术,如图3-49所示。


image.png

3-48  通过DNS轮询实现机房间的负载均衡


image.png

3-49 引入NoSQL数据库和搜索引擎等技术

第十一代互联网架构把大应用拆分为小应用,如图3-50所示。

第十二代互联网架构复用的功能抽离成微服务,如图3-51所示。


image.png

 3-50  把大应用拆分为小应用


image.png

3-51  Nginx反向代理实现负载均衡

第十三代互联网架构把应用建立到云上。


互联网架构的改进使得产品的性能越来越好,但是千万不能认为只要加机器就可以解决性能问题的观念,有些问题,比如内存溢出,不是简单地通过加机器就可以解决的。


2. 虚拟节点

      接下来看一下虚拟节点。分布式结构是由多台机器集成的,但是每台机器的性能往往是不相同的,如果不引入虚拟节点,每个机器承载的负载是相同的,如图3-52所示,任务通过m=rand(232)%4+1分配到1号机、2号机、3号机和4号机这四个节点上。这里1号机与2号机硬件性能比较好,3号机其次,4号机最差。所以可以这样建立虚拟节点,如图3-53所示。


image.png

3-52  不带虚拟节点的分布式结构图

image.png

3-53  带虚拟节点的分布式结构

1号机、2号机性能好,分配3个虚拟节点;3号机其次,分配2个虚拟节点;4号机最差,分配1个虚拟节点。这样分配公式变为m=rand(232)%9+1。性能好的机器分配到的任务概率比性能差的机器要高。


在看一种情况,随着业务需求的增长,要向虚拟节点中插入一台5号机器,如图3-54所示。

image.png

3-54 在分布式结构中加入节点


image.png

3-55 带虚拟节点的分布式结构


image.png

3-56 在带虚拟节点的分布式结构中加入节点

      由于存在“会话黏连效应”,以前分配给1号机、2号机、3号机、4号机上的任务不会由于加入新的物理机器而进行重新分配,比如,添加新节点前服务A1以前在1号机上运行,添加后服务A1仍旧会滞留在1号机上上。据说前几年京东发生的“缓存雪崩”事故就是这样造成的,加入了新的物理节点,但是没有引入虚拟节点,结果新节点没有被有效地利用,缓存溢出,从而造成事故。如果采取虚拟节点,当5号机器加入之前,服务在每个虚拟节点上分配如图3-55所示。当5号机器加入后,虚拟节点号是可以进行的重新分配的,而服务又仅仅与虚拟节点号绑定,所以加入新机器后,服务发生了重组,新加入的节点起到了分担服务的作用,如图3-56所示。。


3. MapReduce

      MapReduce是一种大数据技术,其实分为MapReduce两个方法,它也是通过分布式提高性能的一种手段。假设现在有一套《大英百科全书》,要统计每个单词出现的次数,如果这个工作让单机来完场,显然是十分困难的。如果采用分布式架构,把《大英百科全书》的第1册第1章分配给1号机器处理、第1册第2章分配给2号机器处理、、第2册第1章分配给m号机器处理。所有的机器计算完毕汇总给另外一台机器进行总结,如图3-57所示。


image.png


3-57 MapReduce

      分发的过程使用了Map方法,汇总使用了Reduce方法。这样就大大提高了单机作业的速度。


顾翔老师与云测学院联合推出:软件测试分析与设计,请点击https://v.youku.com/v_show/id_XNDQ3MzkyNjk3Ng==.html?spm=a2hzp.8244740.0.0,收看。有不同观念欢迎与顾翔老师交流!


投票已过期

1.以下你用过哪些集中配置管理系统?(多选)

  • puppet
  • Chef
  • ansible
  • saltstack
  • Cfengine
  • Capistrano
  • Resque
  • Rundeck
  • Rundeck
  • 其他

2.以下你用哪些过虚拟机或容器?(多选)

  • VMware
  • Vagrant
  • Amazon EC2
  • AMI(亚马逊云机器镜像)
  • Vagrant
  • Docker
  • Rkt
  • 裸金属服务器
  • 其他

3.以下你用哪些操作系统自动化配置工具?(多选)

  • Solaris10 JumpStart
  • Kickstart
  • Debian-Preseed
  • 其他

4.以下你用哪些云平台?(多选)

  • Amazon Web Services
  • Google App Engine
  • Windows Azure
  • OpenShift
  • Cloud Foundry
  • AWS CloudFormation
  • Microsoft Azure Stack
  • OpenStack Heat
  • 百度云
  • 阿里云
  • 腾讯云
  • 其他

5.以下你用哪些CI/CD工具?(多选)

  • Jenkins
  • ThoughtWorks GoCD
  • Atlassian Bamboo
  • Microsoft Team Foundation Server
  • TeamCity
  • GitLab CI
  • Travis CI
  • SNAP CI
  • Pivotal的Concourse
  • Etsy的Morgue
  • 其他

6.以下你用哪些管理工具?(多选)

  • JIRA
  • LeanKit
  • Mingle
  • 禅道
  • 其他

7.以下你用哪些安全工具?(多选)

  • Vault
  • Keywhiz
  • credstash
  • Red October
  • Metasploit
  • OSSEC
  • Tripwire
  • Unhide
  • OWASP ZAP Zed Attack Proxy Project
  • Lynis
  • The Browser Exploitation Framework
  • OWASP Xenotix XSS Exploit Framework
  • OWASP Offensive Testing Framework
  • Brakeman
  • WPScan
  • nmap
  • Burp Suite
  • AWVS
  • AppScan
  • CSRFTester
  • SQL Map
  • Pangolin
  • DirBuster
  • 其他

8.以下你用哪些静态扫描工具?(多选)

  • Sonar
  • Brakeman
  • Codeclimate
  • CheckStyle
  • 其他
相关实践学习
通过性能测试PTS对云服务器ECS进行规格选择与性能压测
本文为您介绍如何利用性能测试PTS对云服务器ECS进行规格选择与性能压测。
目录
相关文章
|
2月前
|
测试技术 开发者 Python
自动化测试之美:从零构建你的软件质量防线
【10月更文挑战第34天】在数字化时代的浪潮中,软件成为我们生活和工作不可或缺的一部分。然而,随着软件复杂性的增加,如何保证其质量和稳定性成为开发者面临的一大挑战。自动化测试,作为现代软件开发过程中的关键实践,不仅提高了测试效率,还确保了软件产品的质量。本文将深入浅出地介绍自动化测试的概念、重要性以及实施步骤,带领读者从零基础开始,一步步构建起属于自己的软件质量防线。通过具体实例,我们将探索如何有效地设计和执行自动化测试脚本,最终实现软件开发流程的优化和产品质量的提升。无论你是软件开发新手,还是希望提高项目质量的资深开发者,这篇文章都将为你提供宝贵的指导和启示。
|
3月前
|
机器学习/深度学习 人工智能 监控
提升软件质量的关键路径:高效测试策略与实践在软件开发的宇宙中,每一行代码都如同星辰般璀璨,而将这些星辰编织成星系的过程,则依赖于严谨而高效的测试策略。本文将引领读者探索软件测试的奥秘,揭示如何通过精心设计的测试方案,不仅提升软件的性能与稳定性,还能加速产品上市的步伐,最终实现质量与效率的双重飞跃。
在软件工程的浩瀚星海中,测试不仅是发现缺陷的放大镜,更是保障软件质量的坚固防线。本文旨在探讨一种高效且创新的软件测试策略框架,它融合了传统方法的精髓与现代技术的突破,旨在为软件开发团队提供一套系统化、可执行性强的测试指引。我们将从测试规划的起点出发,沿着测试设计、执行、反馈再到持续优化的轨迹,逐步展开论述。每一步都强调实用性与前瞻性相结合,确保测试活动能够紧跟软件开发的步伐,及时适应变化,有效应对各种挑战。
|
2月前
|
jenkins 测试技术 持续交付
自动化测试框架的构建与优化:提升软件交付效率的关键####
本文深入探讨了自动化测试框架的核心价值,通过对比传统手工测试方法的局限性,揭示了自动化测试在现代软件开发生命周期中的重要性。不同于常规摘要仅概述内容,本部分强调了自动化测试如何显著提高测试覆盖率、缩短测试周期、降低人力成本,并促进持续集成/持续部署(CI/CD)流程的实施,最终实现软件质量和开发效率的双重飞跃。通过具体案例分析,展示了从零开始构建自动化测试框架的策略与最佳实践,包括选择合适的工具、设计高效的测试用例结构、以及如何进行性能调优等关键步骤。此外,还讨论了在实施过程中可能遇到的挑战及应对策略,为读者提供了一套可操作的优化指南。 ####
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
自动化测试的新篇章:利用AI提升软件质量
【10月更文挑战第35天】在软件开发的海洋中,自动化测试犹如一艘救生艇,它帮助团队确保产品质量,同时减少人为错误。本文将探索如何通过集成人工智能(AI)技术,使自动化测试更加智能化,从而提升软件测试的效率和准确性。我们将从AI在测试用例生成、测试执行和结果分析中的应用出发,深入讨论AI如何重塑软件测试领域,并配以实际代码示例来说明这些概念。
73 3
|
3月前
|
敏捷开发 监控 jenkins
自动化测试之美:打造高效的软件质量保障体系
【10月更文挑战第20天】在软件开发的海洋中,自动化测试如同一艘精准的导航船,引领项目避开错误的礁石,驶向质量的彼岸。本文将扬帆起航,探索如何构建和实施一个高效的自动化测试体系,确保软件产品的稳定性和可靠性。我们将从测试策略的制定、工具的选择、脚本的编写,到持续集成的实施,一步步描绘出自动化测试的蓝图,让读者能够掌握这一技术的关键要素,并在自己的项目中加以应用。
40 5
|
3月前
|
测试技术
软件质量保护与测试(第2版)学习总结第十三章 集成测试
本文是《软件质量保护与测试》(第2版)第十三章的学习总结,介绍了集成测试的概念、主要任务、测试层次与原则,以及集成测试的不同策略,包括非渐增式集成和渐增式集成(自顶向下和自底向上),并通过图示详细解释了集成测试的过程。
90 1
软件质量保护与测试(第2版)学习总结第十三章 集成测试
|
3月前
|
测试技术
软件质量保护与测试(第2版)学习总结第十章 黑盒测试
本文是《软件质量保护与测试》(第2版)第十章的学习总结,介绍了黑盒测试的基本概念和方法,包括等价类划分、边界值分析和因果图法,并通过具体例子展示了如何设计测试用例来验证软件的功能性需求。
82 1
软件质量保护与测试(第2版)学习总结第十章 黑盒测试
|
3月前
|
人工智能 人机交互 数据库
软件质量保护与测试(第2版)学习总结第一章
本文是《软件质量保护与测试》(第2版)第一章的学习总结,概述了软件的特征、分类、软件工程的层次化技术、现代软件开发的变化,以及软件质量的概念和评价体系,包括黑盒、白盒和灰盒测试方法。
43 1
软件质量保护与测试(第2版)学习总结第一章
|
3月前
|
Java 测试技术 持续交付
探索自动化测试的奥秘:提升软件质量的关键
【10月更文挑战第20天】 在当今快速发展的软件行业中,自动化测试已成为确保产品质量和加速开发周期的重要工具。本文将深入探讨自动化测试的核心概念、实施策略及其对软件开发生命周期的影响,旨在为读者提供一种全面理解自动化测试的视角,并展示如何有效地将其应用于实际项目中以提高软件质量和效率。
35 2
|
3月前
|
测试技术
软件质量保护与测试(第2版)学习总结第十一章 白盒测试
本文是《软件质量保护与测试》(第2版)第十一章的学习总结,详细讲解了白盒测试中的控制流测试技术,包括语句覆盖、判断覆盖、条件覆盖、判定-条件覆盖和路径覆盖等方法,并通过具体代码示例展示了如何设计测试用例来验证程序中的不同执行路径。
81 2