数据密集型的应用程序应该从哪些方面提高性能

数据密集型的应用程序应该从哪些方面提高性能

ID:14099760

大小:25.77 KB

页数:4页

时间:2018-07-26

数据密集型的应用程序应该从哪些方面提高性能_第1页
数据密集型的应用程序应该从哪些方面提高性能_第2页
数据密集型的应用程序应该从哪些方面提高性能_第3页
数据密集型的应用程序应该从哪些方面提高性能_第4页
资源描述:

《数据密集型的应用程序应该从哪些方面提高性能》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、数据密集型的应用程序应该从哪些方面提高性能文章整理:http://www.wailian100.com/Article/33.shtml开发者论坛中对数据处理的讨论通常都围绕applet和servlet展开,而讨论焦点往往是一些显而易见的性能问题,例如观感、安全性和加载时间。但从一台机器传输到另一台机器的实际数据量(通常称为数据流)的问题却很少被讨论到。实际上,数据流是一个非常重要的课题,但却很少被提起,其重要性也没有得到充分的认识;对于大规模的数据密集型应用程序来说更是如此。本文将介绍数据流在具有多个服务器的n层应用程序中是如何对性能产生影响的。我们将使用一个数据流模

2、型来展示一些数据可能延缓或阻塞应用程序处理的接合点,并解释如何解决常见的验证、安全性和数据访问问题。您还会看到一些更高级的设计和架构决策,它们可以在很大程度上提高应用程序的性能。另外,我们将对数据的集中存储和分散存储进行评测,这在当前的n层系统环境中是一个关系重大、但尚未得到充分考虑的因素。常见的数据流瓶颈数据流在任何阶段都可能会延缓甚至破坏应用程序的运行,因此技巧就是预见问题,在问题出现前就将其解决掉。我将使用一个数据流模型来描述最常见的数据流瓶颈,以及避免此类瓶颈的一些技巧。图1展示了通过一个具有多个服务器的典型大规模n层应用程序的数据流。图1.大规模应用程序中的数

3、据流下面让我们来看一下数据在哪些地方容易造成程序的延缓,以及您可采取的对策。1.从客户机到Web服务器对于数据流来说,这是一个必不可少的步骤;但是在有些情况下,很多通过这个点的数据流都是不必要的。例如,在服务器端(而不是在客户端)进行大量简单验证的应用就会造成系统速度变慢。理想情况下,我们希望只有在数据由客户机成功进行验证之后才移动到服务器上。尽管在某些情况中验证实际上并不是在客户端发生的,但是如果我们对应用程序进行重组,即可解决这个问题。例如,数据验证通常都被视为业务逻辑,因此也会作为服务器端的一项功能来考虑。实际上,数据验证通常是特定于数据的,因此应在客户端执行。2

4、.Web服务器到应用服务器如果您希望为客户机处理数据的呈现规则,请在服务器上进行。通常,Web服务器的用途只是将数据传递到应用层;为扫清大量性能障碍,我们可以改为在Web服务器上处理数据。在呈现数据的情况中,无论如何都要为应用层来处理这些数据。尽管在应用层上处理数据从代码的角度来看要更加简单,但这也会造成传递的数据远远超过您的需要。多传输10个字节看起来不是什么大问题,但是一旦经过一百万次传输(在大型应用程序中很常见),所传输的不必要的数据就会多达10MB。这还没有考虑数据所使用的报头和报尾呢!3.应用服务器到数据库服务器请在数据到达数据库服务器之前完成所有数据的处理。

5、这可确保数据库服务器只需为快速简单地访问数据而对数据进行重组即可。它还能确保只有必要的数据会到达数据库服务器。我们应根据这些考虑事项来确定用于在应用层进行处理的服务器个数。应用层中每增加一台服务器,不仅会增加硬件成本,而且还会增加数据传输的负载。4.从数据库服务器检索的数据按照检索过程中需要连接数最少的方法来存储数据,这意味着数据必须在适当的地方进行规范化(normalization)和反规范化(denormalization)。稍后我们将更详细讨论数据的规范化和反规范化问题。5.从应用层返回Web服务器在检索过程中,只有一个应用服务器应在利用之前接触数据流,即使整个系

6、统超过3层或应用层有多种类型的服务器也是如此。注意存储和处理数据所使用的路径都不需要与检索数据的路径相同。根据正在编写的应用程序考虑一下要检索的数据类型,这也是非常值得的。例如,在一个基于Web的交易站点上,我们很可能在客户下订单之后就立即检索这些订单(比如用户希望修改或取消的订单)。另一方面,如果从下订单到发货之间经过了很长时间,我们也可能需要访问很多数据来检查订单的状态。这些考虑事项都可以引导您以一些原本不会采取的方式优化代码。6.在客户机上显示检索到的数据所有为数据存储而进行的处理也必须应用于数据检索。因此,我们有必要同时编写编码和解码例程,从而尽可能有效地使数据

7、检索与处理相结合。设计和架构考虑事项一旦您理解了数据流有可能在哪些特定点造成性能的大幅度降低,能够针对此类瓶颈编码,那么也就有了一个很好的开端。接下来,我们需要运用一种更高级的方法,从而避免出现可能导致系统性能下降的设计和架构错误。考虑一下大规模应用程序中可能对性能造成影响的一些功能,以及如何设计才能获得更好的性能。数据验证如前所述,仅为了进行数据验证就将数据从客户机移动到服务器上是一个巨大的错误。将数据从客户机发送到服务器上,然后由于验证失败就拒绝用户请求,这只会增加所传输的不必要数据的总量。最好的选择是重组应用程序,使所有的验证都在客

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。