DotNET企业架构应用实践-系统架构与性能-理论依据及相关技术

简介:

性能优化介绍

      在企业应用开发领域,企业架构与性能将会是一个恒久的话题,如何提高性能、性能优化也将是一个长期和不断改进的过程,有人在硬件投入上下功夫、有人在数据库系统、数据库设计上下功能、有人在系统架构中下功夫、有人在程序下功能,总的来说,性能优化系是一个多方面的综合技术。

性能优化的理论依据

      在计算机领域,缓存技术应该是一个非常久远的技术,CPU设计中高速缓存技术和操作系统内存管理中的分页、分段技术应该是我们每一位开发人员都熟悉的技术,在计算机体系结构与操作系统中,这两个关键点的好坏影响着计算机的整体性能。

      在计算机软件应用中,性能优化的基准原则和最标准的参考案例就是这两个,其他一切的性能化为方案都基于这两个案例的基础理论而展开,这一切的理论依据,也那最经典的“局部性理论”,在计算机世界中是这样触释的:

      “是指程序在执行时呈现出局部性规律,即在一段时间内,整个程序的执行仅限于程序中的某一部分。相应地,执行所访问的存储空间也局限于某个内存区域。局部性原理又表现为:时间局部性和空间局部性。时间局部性是指如果程序中的某条指令一旦执行,则不久之后该指令可能再次被执行;如果某数据被访问,则不久之后该数据可能再次被访问。空间局部性是指一旦程序访问了某个存储单元,则不久之后。其附近的存储单元也将被访问

      如果我们把局部性原理再更放得具体化或者更简单一些,就是著名的“二八定律”了,我们可以这么简单的理解:程序中80%的程序运行时间都在执行着20%的程序代码,80%的时间都在频繁的使用着部数据中的20%的数据。

      其实局部性理论,也就是“二八定律”并不单单的存在于计算机世界,我们现实的这个世界也是广泛的遵守着这个规律,我打几个很简单的比喻,这个社会上20%的人持有全社会80%的财产,而剩余的20%的财富由80%的人来分配,再比如,一个企业中起中流砥柱的只有那20%的人,其他80%总是在平庸的渡过。

性能优化的过程

      我们简单的介绍完了性能优化的理论依据,那性能优化应该怎么样去做呢,有没有终极的解决方案和办法,我想告诉大家的是,性能优化没有终极的解决方案和办法,没有能解决所有性能问题的银弹,性能优化将是一个长期坚持并且不段改进的过程,你要优化一个系统,你必须得了解这个系统的运行机制,分析影响当前性能的各个关键点:计算机硬件、网络、数据库、系统架构、程序代码,通过不断的分析找出影响性能的问题点并修正、运行检测并不断的改进的一个过程。

image

 

性能优化的相关技术

      虽然说我们找不到性优化的终极解决方案,但也不是说我们说无从下手进行性能优化,软件系统的性能优化可以从以下几个方面进行考虑:

      A.计算机硬件,这里的计算机硬件是指在企业计算领域中的服务器硬件,如果服务器硬件的运行能力严重的不足,那么我们说性能优化也就是“巧妇难为无米之炊”了,从我的工作经历来看,影响服务器系统运行能力的主要是CPU、内存、IO这三快,在数据库服务器中IO尤为显得重要,这方面可能参考RAID技术,在应用程序服务器中,则是由CPU和内存制约着系统的运行性能。

      B.数据库设计,在抛除了服务器硬件和操作系统,那么数据库系统及数据库的结构将是影响系统性能的一个非常重要的因素,数据表结构设计的好坏将会对系统产生直接的影响,在这个领域的优化将涉及到数据结构、索引优化和数据分区,其目的是最大限度的发布服务器的IO和运算资源。

      C.应用程序,应用程序的设计将直接影响系统的性能,在性能优化上考虑周全的应用程序和没有考虑过性能优化的程序在这方面将会有天壤之别,在这个块的性能优化手段包含两部门内容,一部分在开发应用程序的时间的系统性能考虑、另一方面刚是运营之中的性能优化。

      C.系统架构,我们知道系统架构是系统的一个骨架,他将融合计算机硬件、系统软件、数据库系统、应用程序等各个方面,并基于一个系统工程的统一范畴考试上三方面的性能问题,就其前面三个方面的关键点就是一个有机的整体,相关关联而又相互制作,应用决定了应用程序与数据库设计结构,应用程序必须与数据结构配合以发挥最大性能,而数据库与服务器硬件必须配合以最大化的应用硬件的计算能力。并且,系统架构以整体和统一的思考数据库服务器、应用服务器的的集群与负载均衡。

      关于系统性能优化的这样一个话题我今天就讲到这里,在后续的文章中我会将从以上四个方面展开详细的论述性能优化的方方面面。

      文末我附上我相关系列文章的链接和QQ群,欢迎大家。

链接

DotNET企业架构应用实践-系列目录

一步一步教你使用AgileEAS.NET基础类库进行应用开发-系列目录

AgileEAS.NET平台开发指南-系列目录

AgileEAS.NET应用开发平台介绍-文章索引

QQ群:116773358


作者:魏琼东 
出处:http://www.cnblogs.com/eastjade
关于作者:有13年的软件从业经历,专注于中小软件企业软件开发过程研究,通过在技术与管理帮助中小软件企业实现技术层面开源节流的目的。熟悉需求分析、企业架构、项目管理。现主要从事基于AgileEAS.NET平台的技术咨询工作,主要服务于医疗卫生、铁路、电信、物流、物联网、制造、零售等行业。如有问题或建议,请多多赐教! 
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,如有问题,可以通过mail.james@qq.com 联系我,也可以加入QQ群:113723486、199463175、116773358、116773358、212867943、147168308、59827496、193486983、15118502和大家共同讨论,非常感谢。


    本文转自魏琼东博客园博客,原文链接:http://www.cnblogs.com/eastjade/archive/2010/10/20/1855496.html,如需转载请自行联系原作者

相关文章
|
1天前
|
消息中间件 Go API
Golang深入浅出之-Go语言中的微服务架构设计与实践
【5月更文挑战第4天】本文探讨了Go语言在微服务架构中的应用,强调了单一职责、标准化API、服务自治和容错设计等原则。同时,指出了过度拆分、服务通信复杂性、数据一致性和部署复杂性等常见问题,并提出了DDD拆分、使用成熟框架、事件驱动和配置管理与CI/CD的解决方案。文中还提供了使用Gin构建HTTP服务和gRPC进行服务间通信的示例。
11 0
|
2天前
|
负载均衡 API 数据库
构建高效微服务架构的五大关键技术
【5月更文挑战第4天】 随着云计算和容器化技术的成熟,微服务架构已成为软件开发的主流模式。本文将详细探讨实现高效微服务架构的五个关键技术点:服务拆分策略、API网关设计、服务发现与注册、熔断机制以及分布式事务管理。这些技术点是确保微服务系统可扩展性、灵活性及稳定性的基石,对于后端开发者而言,掌握它们至关重要。文章将提供具体的实施建议和最佳实践,帮助读者构建和维护高性能的微服务系统。
|
5天前
|
Cloud Native 安全 持续交付
构建未来:云原生架构在现代企业中的应用与挑战
【5月更文挑战第1天】 随着数字化转型的深入,云原生技术以其灵活性、可扩展性和敏捷性成为现代企业IT架构的核心。本文将探讨云原生架构的关键组件,包括容器化、微服务、持续集成/持续部署(CI/CD)以及DevOps实践,并分析它们如何共同塑造企业的运营模式。同时,文章还将讨论在采纳云原生过程中企业可能遇到的挑战,如安全性问题、技术复杂性以及组织文化的转变,并提出应对策略。
20 8
|
5天前
|
设计模式 Cloud Native 算法
拥抱变化:我的技术适应之旅构建未来:云原生架构在企业数字化转型中的关键角色
【4月更文挑战第30天】 在技术的浪潮中,我学会了不仅仅是编码,还有如何与时俱进。本文记录了我从一名初出茅庐的开发者成长为一个能够适应不断变化技术环境的工程师的心路历程。从最初的困惑与挑战到后来的接纳与创新,我意识到,技术能力的提升和心态的转变同样重要。
|
5天前
|
前端开发 JavaScript 安全
【TypeScript技术专栏】TypeScript在微前端架构中的应用
【4月更文挑战第30天】微前端架构通过拆分应用提升开发效率和降低维护成本,TypeScript作为静态类型语言,以其类型安全、代码智能提示和重构支持强化这一架构。在实践中,TypeScript定义公共接口确保跨微前端通信一致性,用于编写微前端以保证代码质量,且能无缝集成到构建流程中。在微前端架构中,TypeScript是保障正确性和可维护性的有力工具。
|
5天前
|
消息中间件 监控 JavaScript
Node.js中的微服务架构:构建与实践
【4月更文挑战第30天】本文探讨了在Node.js中构建微服务的实践,包括定义服务边界、选择框架(如Express、Koa或NestJS)、设计RESTful API、实现服务间通信(HTTP、gRPC、消息队列)、错误处理、服务发现与负载均衡,以及监控和日志记录。微服务架构能提升应用的可伸缩性、灵活性和可维护性。
|
5天前
|
消息中间件 测试技术 API
构建高效微服务架构:从理论到实践
【4月更文挑战第30天】 随着现代软件开发的演进,微服务架构成为了企业追求敏捷、可扩展和容错性的关键解决方案。本文将深入探讨构建高效微服务架构的核心原则和策略,并通过一个实际案例来展示如何将这些理论应用于生产环境。我们将重点讨论服务的划分、通信机制、数据一致性以及持续集成与部署的实践,旨在为开发者提供一个清晰、可行的技术蓝图,以支持快速迭代和系统的稳健运行。
|
21小时前
|
监控 负载均衡 持续交付
构建高效微服务架构:后端开发的新趋势
【5月更文挑战第5天】在数字化转型的浪潮中,微服务架构以其灵活性、可扩展性和容错性成为企业追求的技术典范。本文深入探讨了微服务的核心组件、设计原则和实施策略,旨在为后端开发者提供构建和维护高效微服务系统的实用指南。通过分析微服务的最佳实践和常见陷阱,我们揭示了如何优化系统性能、保证服务的高可用性以及如何处理分布式系统中的复杂性。
|
1天前
|
缓存 NoSQL Java
构建高性能微服务架构:Java后端的实践之路
【5月更文挑战第5天】在当今快速迭代和高并发需求的软件开发领域,微服务架构因其灵活性、可扩展性而受到青睐。本文将深入探讨如何在Java后端环境中构建一个高性能的微服务系统,涵盖关键的设计原则、常用的框架选择以及性能优化技巧。我们将重点讨论如何通过合理的服务划分、高效的数据存储策略、智能的缓存机制以及有效的负载均衡技术来提升整体系统的响应速度和处理能力。
|
1天前
|
监控 持续交付 数据库
构建高效可靠的微服务架构:策略与实践
【5月更文挑战第5天】 在当今快速发展的软件开发领域,微服务架构已成为构建可扩展、灵活且容错的系统的首选模式。本文将探讨如何通过一系列经过验证的策略和最佳实践来构建一个高效且可靠的微服务系统。我们将深入分析微服务设计的核心原则,包括服务的细粒度划分、通信机制、数据一致性以及容错处理,并讨论如何利用现代技术栈来实现这些目标。文章将提供一套综合指南,旨在帮助开发者和架构师在保证系统性能的同时,确保系统的稳健性。
11 4