架构设计70-质量管理02-性能优化03-规范

本文涉及的产品
性能测试 PTS,5000VUM额度
简介: 架构设计70-质量管理02-性能优化03-规范

架构设计系列文章,请参见连接。

背景

一个架构师在平时工作中的重点注意的工作内容,就指明架构师所设计的产品架构的各方面特性。重点是数据库的架构师会将认为所有的工作核心就是数据库。重点在运营模式的架构师会认为所有的工作都是业务模式,运营方法。

再加上公司整体规划与方向有着非常明显的弱化技术的要求,架构师为了KPI、OKR放弃对产品架构的关心。就会造成整个公司少了架构师还是正常运转的情况。但是做一个真实的比喻,就如同下图一样:

少了技术型架构师的驱动的公司,就像上图一样。在不做变更的时候会使用的很正常,很稳定。但是如果稍微做一点变更整个系统就会进入崩溃状态。

每一个上线的产品,最主要的问题就是稳定性。为了应用能够稳定的提供服务,需要考虑很多内容。其中性能优化就是很重要的一个考虑项。性能优化是事后解决性能问题的方法,也有很多事前解决性能问题的方法。下面整体介绍性能优化的各个方面。

前期规划

在做一件事情之前,需要对这件事情有深入的认识与理解。然后基于认识和理解之后,对事情进行分析。分析后做出整体做事的规划或方法,然后再着手进行实施。

根据上面做事方式的指导。先对性能优化这件事情进行整体的规划。因为性能优化是项目实施过程中的一个步骤,所以在这里将说明在项目实施过程与性能优化之间的关系:
项目实施规划

上图中浅蓝色部分是项目管理过程中要做的。深蓝色部分是性能优化设计到的步骤。蓝黑色部分是项目研发过程中的内容。在上产品环境后,肯定还需要各种各样的性能调优工作。例如:最近几年淘宝,京东都在做《全链路压测》的事情。所以这件事情需要一直做下去。

  • 调研

在整体项目实施规划中,非功能需求是一个很容易被忽略的部分。我们在做设计的一个基本依据就是非功能需求。有了它之后就可以估算出系统的整体性能要求大概范围。根据这个范围以及成本、时间约束就可以对系统中需要使用的技术,不使用的技术做出一个前期规划与设计。

针对产品型的性能数据评估。因为产品是已经上线的,所以,就可以根据现有的数据以及即将来到的运营策划数据进行性能数据的评估。这里就需要了解现有系统的使用情况数据,性能、稳定性表现情况之后。在作出相关的评估与设计。

  • 设计

设计阶段中根据前面收集的功能需求,非功能需求以及约束进行分析。分析出问题域中的核心问题,周边问题并将这些问题域的问题使用解决域提供的工具进行解决。解决域中的工具取决于架构师准备了那些工具。所以,在同一个问题域下,架构师的解决域确定了解决的方式。

因为性能是设计的依据,而性能有事从非功能需求来的。所以,对性能的交付也是需要有验收过程与验收方法的。在设计过程中需要将性能的验收方法,验收标准一并进行设计。

在产品型的性能设计过程中是有相对应的《性能验收软件架构》需要同时进行设计的。因为性能验收也是一套独立的软件系统。不过这套软件系统的目标就是帮助业务系统达到更高的性能指标而存在的。

  • 开发

开发过程中需要有规范的流程。从代码质量到交付方式,都需要一套标准出来。这样就可以有效的保证产品可以按时按点保质的方式进行交付。

  • 监控

在产品上线后运维比较关注的是APM,开发比较关注的是Tracing。监控的主要目的是为整个产品提供运行时数据。因为之前使用各种方法评估的内容,都是通过不准确手段获取到的数据。真实的数据就可以体现出之前评估节点所做的评估的偏差。可以利用这个偏差对系统进行调整。也可以利用这个偏差对评估数据进行校正,以使之后的评估中的数据会更加准确。

在提供产品的性能优化数据之外,还需要在系统中制定多维度的《度量指标》用来帮助之后进行各方面的评估。例如:用户转化率,产品销售率,热点页面等等。这些数据对之后的运维,运营都是有着非常大的帮助。

  • 调优

这个是前期调优,在项目制或者产品制第一次上线之前进行调优。还有后期调优,即产品上线之后根据使用情况对系统进行有针对性的调整。这两类调整都是以性能指标为输入,以达到性能指标要求为输出的。所以,在下面会对其中每一步再做详细讨论。

  • 上线

在调优过程中可能会对系统的局部架构,部署设计,数据库设计等作出调整。所以,在上线时需要需要考虑针对这些变化怎样才能将变化推到生产环境。基本上就考虑三种类型的升级:部署升级,数据升级,服务升级。

  • 部署升级:部署过程进行了升级,比如说之前直接部署在逻辑环境上,现在变成部署在K8S上。
  • 数据升级:数据结构发生了变更,需要有数据结构上的升级工作。
  • 服务升级:服务内部实现发生了变化,需要同时运行老版本,并验证新版本的要求。

实施过程

性能调优和压力测试有很多内容都是可以重复利用的。例如测试时需要编写测试方案,测试计划。都可以在性能调优时使用。下面是性能调优的实施步骤:
具体实施

  • 性能目标

不管做什么,第一步都是要明确需要做什么。性能目标在上面已经可以通过评估,实际数据等获取到性能目标。

  • 环境准备

现在的项目基本上都是用微服务的方式进行发布。所以环境准备阶段需要知道服务的具体部署情况。需要知道哪些开源组件需要部署,哪些服务需要配置。并且还需要设置性能环境和发送性能请求的测试环境之间的部署结构,使性能验证过程中受到的外界干扰最小化。

根据之前的目标对性能环境进行部署设计。在性能环境中的部署设计最终可以推到生产环境,但是需要针对性能指标进行相关的节点数评估,服务器上的硬件环境的评估。

需要根据并发量考虑性能环境和测试环境之间的带宽。以及测试环境的配置,以保证并发量可以达到性能要求的水平。

  • 工具准备

工具准备需要准备压测工具和监控工具。一些压测工具顺带就可以做监控的事情但是很多时候还是要进行独立准备。可以使用JMeter、Load Runner作为压测工具。也可以使用分布式性能测试工具控制多台主机进行测试。

监控工具要满足即可以检测到APM又可以检测到Tracing的内容。并且可以监控多项数据,监控主机性能,监控数据库性能,监控中间件性能等。

  • 测试方法

即需要验证的场景,以及验证这些场景所需要的脚本过程。在测试计划中会编写要测试的场景,并对场景中的请求内容进行设计。

  • 优化确认

已经有了工具,有了测试方法,并且有运行环境。就可以进行测试了,测试会形成测试结果。再针对测试结果有针对性的优化。例如某个方法执行时间过长,就可以想办法降低这个方法的执行时间。数据库查询时间过长就可以优化数据库查询。

在优化完之后,在对优化的内容进行一遍性能验证。如果验证通过则进行下一步。如果没有通过则,在此优化。往复循环这个过程指导性能验证通过,就可以进行进入到下一步。

  • 功能测试

在做完性能调优之后,还是需要再进行一遍功能验证的。因为在优化过程中可能对之前的功能产生了未知的影响。所以需要在性能调优完成之后再进行一遍功能验证。

总结

选用性能指标是非常重要的,这样一眼看过去就知道哪里有问题。在有目标的情况下进行,针对目标进行优化的效率在开发过程中猜测可能有性能问题的点并优化的效率要高的多。在实施这套方法时,也可以享受性能提升带来的成就感。

参考:

如何制定 Java 性能调优标准?

相关实践学习
通过性能测试PTS对云服务器ECS进行规格选择与性能压测
本文为您介绍如何利用性能测试PTS对云服务器ECS进行规格选择与性能压测。
目录
相关文章
|
9天前
|
监控 安全 API
使用PaliGemma2构建多模态目标检测系统:从架构设计到性能优化的技术实践指南
本文详细介绍了PaliGemma2模型的微调流程及其在目标检测任务中的应用。PaliGemma2通过整合SigLIP-So400m视觉编码器与Gemma 2系列语言模型,实现了多模态数据的高效处理。文章涵盖了开发环境构建、数据集预处理、模型初始化与配置、数据加载系统实现、模型微调、推理与评估系统以及性能分析与优化策略等内容。特别强调了计算资源优化、训练过程监控和自动化优化流程的重要性,为机器学习工程师和研究人员提供了系统化的技术方案。
130 77
使用PaliGemma2构建多模态目标检测系统:从架构设计到性能优化的技术实践指南
|
2月前
|
存储 前端开发 JavaScript
深入理解React Fiber架构及其性能优化
【10月更文挑战第5天】深入理解React Fiber架构及其性能优化
110 1
|
19天前
|
网络协议 Linux Android开发
深入探索Android系统架构与性能优化
本文旨在为读者提供一个全面的视角,以理解Android系统的架构及其关键组件。我们将探讨Android的发展历程、核心特性以及如何通过有效的策略来提升应用的性能和用户体验。本文不包含常规的技术细节,而是聚焦于系统架构层面的深入分析,以及针对开发者的实际优化建议。
34 1
|
26天前
|
设计模式 缓存 架构师
架构师必备10大接口性能优化秘技
【11月更文挑战第25天】在软件开发中,接口性能优化是架构师必须掌握的关键技能之一。一个高效的接口不仅能够提升用户体验,还能减少服务器资源消耗,提高系统稳定性。本文将介绍10大接口性能优化秘技,并通过Java示例代码展示这些技巧在实际业务场景中的应用。
39 3
|
1月前
|
消息中间件 缓存 Cloud Native
云原生架构下的性能优化实践与挑战####
随着企业数字化转型的加速,云原生架构以其高度解耦、弹性伸缩和快速迭代的特性,成为现代软件开发的首选模式。本文深入探讨了云原生环境下性能优化的关键策略与面临的主要挑战,通过案例分析,揭示了如何有效利用容器化、微服务、动态调度等技术手段提升应用性能,同时指出了在复杂云环境中确保系统稳定性和高效性的难题,为开发者和架构师提供了实战指南。 ####
38 3
|
1月前
|
缓存 负载均衡 监控
微服务架构下的接口性能优化策略####
在当今快速迭代的软件开发领域,微服务架构以其灵活性和可扩展性成为众多企业的首选。然而,随着系统复杂性的增加,接口性能问题日益凸显,成为制约用户体验与系统稳定性的关键因素。本文旨在探讨微服务架构下接口性能优化的有效策略,通过具体案例分析,揭示从代码层面到系统架构层面的全方位优化路径,为开发者提供实战指南。 ####
|
1月前
|
弹性计算 监控 Cloud Native
云原生架构下的性能优化实践与策略####
在数字化转型加速的今天,云原生技术以其弹性、敏捷和高效的特点成为企业IT架构转型的首选。本文深入探讨了云原生架构的核心理念,通过具体案例分析,揭示了性能优化的关键路径与策略,为开发者和企业提供了可操作的实践指南。 ####
|
1月前
|
监控 Cloud Native 测试技术
云原生架构下的性能优化与实践####
【10月更文挑战第21天】 本文深入探讨了在云原生环境下,如何通过一系列技术手段和最佳实践来提升应用性能。文章首先概述了云原生架构的基本原则与优势,随后详细分析了影响性能的关键因素,包括容器编排、微服务设计、持续集成/持续部署(CI/CD)流程以及监控与日志管理。针对这些因素,文中不仅介绍了具体的优化策略,如资源请求与限制的合理配置、服务间通信的高效实现、自动化测试与部署的优化,还结合案例分析,展示了如何在实际项目中有效实施这些策略以显著提升系统响应速度和处理能力。此外,文章还强调了性能测试的重要性,并提供了几种常用的性能测试工具和方法。最后,总结了云原生性能优化的未来趋势,为开发者和架构师
41 2
|
1月前
|
缓存 资源调度 Cloud Native
云原生架构下的性能优化实践与策略####
【10月更文挑战第26天】 本文深入探讨了云原生环境下性能优化的核心原则与实战技巧,旨在为开发者和企业提供一套系统性的方法,以应对日益复杂的微服务架构挑战。通过剖析真实案例,揭示在动态扩展、资源管理、以及服务间通信等方面的常见瓶颈,并提出针对性的优化策略,助力企业在云端环境中实现更高效、更稳定的应用部署。 ####
42 0
|
3月前
|
缓存 NoSQL 数据库
构建高效后端服务:从架构设计到性能优化的实践之路
本文旨在探讨如何通过合理的架构设计和性能优化策略,构建一个既稳定又高效的后端服务。文章首先概述了后端服务开发中常见的挑战和误区,随后详细介绍了微服务架构、缓存机制、数据库优化、服务器配置以及代码审查等关键技术和方法。通过深入浅出的案例分析和实用建议,本文将为后端开发者提供一套系统化的指导方案,助力其打造出高性能的后端服务体系。
125 9
下一篇
DataWorks