扩展Web应用程序(上)

1.8 扩展Web应用程序

1.8.1 性能

对于开发者而言,他们主要关注程序的响应时间和延展性。

响应时间也是衡量一个应用程序的效率的指标之一。如果一个请求到响应时间超出了良好的感知范围,我们就可以认为这个程序的性能很糟糕。一般而言,最好能够在一两秒内得到想要的页面。

延展性,说了是添加了更多的硬件设备,应用程序能够线性地承受更多的请求。添加硬件的方式有两种:

l  向上扩展(垂直扩展)--增加CUPs数量或者在一个单一的盒子(指的是一台机器)里添加更快的CUP

l  横向扩展(水平扩展)--增加多个盒子(机器)。

通过添加更多的资源,应用程序能够处理更多的请求,并且不会影响程序的响应时间,我们就说这个应用程序表现得很好。然而,响应时间和延展性不是结合在一起的。应用程序可能得到一个满意的响应时间,但是不能够处理确定一定量的请求。反之,如果更够处理一定量请求数而响应性能很差。所以,在资源一定的情况下,我们不得不在响应时间和并发响应请求数上做一个很好的平衡。

产能计划。所谓产能计划就是,在生产环境下,解决所需要的硬件区处理希望的加载量的一种实践。通常情况下,它设法解决用几台机器提升整个应用程序的性能,并在一定并发量的测试中,达到预期的效果。

1.8.2 扩展架构

如果在多层架构的任意一层中是可扩展的,我们就说应用程序的架构是可扩展的。在下面图表中,它表示是线性扩展整个应用程序任意一个层次。

扩展负载均衡。负载均衡是能够横向扩展的,主要是通过指定DNS到多个IP地址,并且使用DNS Round Robin 负载算法实现IP地址查找。另外一种可选方式就是,在前端使用负载均衡并且将请求分发到下一级的负载均衡。多级的负载均衡很少会出现在单台运行着Nginx或者HAProxy负载均衡的机器上,这类型的软件负载均衡能够在每环境上每次处理2万次的并发请求量,比较于Web应用的容器中每次几千次而已,它的优势就比较明显。因此,一个单一负载均衡能够很好的管控几个web应用程序的服务器。

扩展数据库。扩展数据库是我们面对的一个很不通的问题。添加存储过程、函数会给数据持久层带来额外的管理经费和应用的复杂性。关系数据库(RDBMS)能够通过master-slave模式扩展,伴随着读写在master机器上,仅仅只有读在slave数据库节点上。但是,有些业务使用NoSQL可以明显提供整个系统的性能。我们知道,在并发的环境下,NoSQL无法实现数据的一致。因此,它通常用来提高程序的高可用性。比较流行的NoSQL有Redis,MongoDB等。

分离数据库。数据库可以被分离为垂直分区或者水平分片。

..................[待续]

扩展Web应用程序(上)

时间: 2024-12-11 11:24:58

扩展Web应用程序(上)的相关文章

对 Web 应用程序进行性能调优

动态的 Web 应用程序能够存储大量信息,让用户能够通过熟悉的界面立即访问这些信息.但是,随着应用程序越来越受欢迎,可能会发现对请求的响应速度没有以前那么快了.开发人员应该了解 Web 应用程序处理 Web 请求的方式,知道在 Web 应用程序开发中可以做什么,不能做什么,这有助于减少日后的麻烦. 静态的 Web 请求(比如图 1 所示的请求)很容易理解.客户机连接服务器(通常通过 TCP 端口 80),使用 HTTP 协议发出一个简单的请求. 图 1. 客户机通过 HTTP 请求静态的文件 服

(转)Web是如何工作的(2):客户端-服务器模型,以及Web应用程序的结构

在上一部分的文章中,我们深入了解了Web在基础层面是如何工作的,其中包括客户端(你的电脑)与服务器(另一台响应客户端请求网页的电脑)交互. 在这篇文章--四篇文章中的第二篇--我们一起来了解客户端,服务器以及基本Web应用程序的其它部分如何配置,才使得浏览网页的体验成为可能. 客户端-服务器模型 客户端与服务器跨越网络通信的概念被称为"客户端-服务器"模型,这使得浏览网站(如你查看该文章)和与Web应用程序(如GMail)交互成为可能. 客户端-服务器模型实际上只是描述客户端与Web应

您试图在此 Web 服务器上访问的 Web 应用程序当前不可用

错误提示: 服务器应用程序不可用 您试图在此 Web 服务器上访问的 Web 应用程序当前不可用.请点击 Web 浏览器中的“刷新”按钮重试您的请求. 管理员注意事项: 详述此特定请求失败原因的错误信息可在 Web 服务器的系统事件日志中找到.请检查此日志项以查明导致该错误发生的原因. 原因: 先装了.net,而后装了iis,用户的权限没加进去引起的 解决方案: 只要在.net下 Microsoft visual 2005->visual studio tools->visual studio

在Tomcat服务器上部署web应用程序常见的方法

一般在tomcat服务器上部署 java web应用程序有两种方式:静态和动态 一.静态部署 静态部署即在启动tomcat服务器之前部署好我们的web应用程序,只有当tomcat服务器启用后,我们的web应用程序才能被访问) 1.利用tomcat自动部署 将web应用程序拷贝到/usr/local/tomcat/webapps/下,然后重启tomcat服务器即可,此时由于配置文件配置了autoDeploy="true,tomcat启动此将自动加载该web应用 2.修改server.xml文件部署

ASP.NET MVC Web API 学习笔记---第一个Web API程序

http://www.cnblogs.com/qingyuan/archive/2012/10/12/2720824.html 1. Web API简单说明 近来很多大型的平台都公开了Web API.比如百度地图 Web API,做过地图相关的人都熟悉.公开服务这种方式可以使它易于与各种各样的设备和客户端平台集成功能,以及通过在浏览器中使用 JavaScript来创建更丰富的HTML体验.所以我相信Web API会越来越有它的用武之地. 说道Web API很多人都会想到Web服务,但是他们仍然有

Ninject之旅之十三:Ninject在ASP.NET MVC程序上的应用

摘要: 在Windows客户端程序(WPF和Windows Forms)中使用Ninject和在控制台应用程序中使用Ninject没什么不同.在这些应用程序里我们不需要某些配置用来安装Ninject,因为在Windows客户端应用程序里,开发者可以控制UI组件的实例化(Forms或Windows),可以很容易地委托这种控制到Ninject.然而在Web应用程序里,就不同了,因为框架负责了实例化UI元素.因此,我们需要知道怎样告诉框架委托这种控制责任给Ninject.幸运的是,让ASP.NET M

搭建基于LAMP的web应用程序平台

LAMP的介绍 Linux+Apache+Mysql/MariaDB+Perl/PHP/Python一组常用来搭建动态网站或者服务器的开源软件,本身都是各自独立的程序,但是因为常被放在一起使用,拥有了越来越高的兼容度,共同组成了一个强大的Web应用程序平台. LAMP的搭建过程  安装次序:httpd-->mysql-->php 因为php的编译安装依赖于httpd的开发环境,以及MySQL的开发环境,所以php最后安装     一.准备环境 首先安装开发工具和服务器 yum groupins

构建移动Web应用程序的技术堆栈

编写web应用程序时,有很多的技术决策.笔者最近回来编写现代Web应用程序,并希望总结一些曾经在开发周期过程中做了记录零散的想法.这篇文章是关于一套对笔者最近开发的项目有帮助的框架.笔者重温了一些最重要的框架类型,其中每一个可以展开来写一篇文章.这并不是一个广泛的现有产品相比,只是一个笔者最近使用的部分技术. 虽然笔者的重点是移动优先, 笔者认为,这套技术可以应用在一般的web应用程序. 笔者的决定和数据支持考虑了几个要求: 基于JavaScript(CoffeeScript,Dart,绝对值得

【转载】ASP.NET MVC Web API 学习笔记---第一个Web API程序

1. Web API简单说明 近来很多大型的平台都公开了Web API.比如百度地图 Web API,做过地图相关的人都熟悉.公开服务这种方式可以使它易于与各种各样的设备和客户端平台集成功能,以及通过在浏览器中使用 JavaScript来创建更丰富的HTML体验.所以我相信Web API会越来越有它的用武之地. 说道Web API很多人都会想到Web服务,但是他们仍然有一定的区别:Web API服务是通过一般的 HTTP公开了,而不是通过更正式的服务合同 (如SOAP)  2. ASP.NET