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

性能优化介绍

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

性能优化的理论依据

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

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

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

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

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

性能优化的过程

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

性能优化的相关技术

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

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

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

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

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

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏云计算D1net

更快的网络+成本更低的消息=>微服务=>函数=>边缘计算

在德国柏林举办的microXchg 2017大会上,亚马逊公司技术专家Adrian Cockroft发表了一个前瞻性的演讲。Adrian Cockroft是Cl...

3694
来自专栏腾讯高校合作

小程序这13大新能力,将对你产生什么影响?

微信公开课“小程序专场”,微信团队带来两项全新能力——“第三方服务”和“附近的小程序”。 至此,小程序近期一共开放了13项新能力。对于用户来讲,会带来哪些影响呢...

3386
来自专栏Debian社区

Facebook 是如何进行大规模代码部署的

Facebook 高速发展的 2007 年到 2016 年,他们一天部署 3 次代码,cherry-pick 集齐成千上万个 commit;现在使用类似持续交付...

1362
来自专栏靠谱PM

PRD文档如何撰写

好久没有写文章了,一方面是因为最近的工作比较忙,另一方面还在不断的学习一些新知识,今天给大家聊一聊产品经理的基本功之一的需求文档,江湖俗称PRD,其实这类的文章...

4656
来自专栏BestSDK

智能存储能够聪明到什么地步?

今天的存储可能天生就知道哪个应用程序在创建、拥有和访问存储数据的每个数据块;这些数据需要什么级别的安全和保护;应如何实现应用程序I/O性能(通过缓存、分层规划等...

4383
来自专栏云计算D1net

如何集成云层与本地存储

云和本地存储正走向越来越紧密的整合,于是云成为了另一个存储管理员可用的层级。 ? 组织不大可能把100%的数据都移到云服务上,但大多数企业都会至少想让一部分数据...

3156
来自专栏数据和云

加速Oracle RAC性能 软件定义存储的数据库云化实践

简介: 刘振宇 云和恩墨基础架构软件研发负责人。 拥有10年以上电信、金融、保险、政府机关以及制造业等多个行业的架构和管理经验。现在负责云和恩墨软件定义存储zD...

3874
来自专栏我是攻城师

10+年程序员总结的20+条经验教训

3557
来自专栏哲学驱动设计

微服务(Microservices)——Martin Flower【翻译】

原文是 Martin Flower 于 2014 年 3 月 25 日写的《Microservices》。 本文内容 微服务 微服务风格的特性 组...

2238
来自专栏程序猿DD

微服务(Microservices)【翻译】

前言 今天跟同事们讨论了很久关于微服务实施过程中涉及的服务拆分、团队边界、技术选型等问题。期间提出的不少问题,也引发了很多新的思考。虽然在Martin Fowl...

2229

扫码关注云+社区

领取腾讯云代金券