??xml version="1.0" encoding="utf-8" standalone="yes"?>
]]>
你想一个能承受500万PV/每天的网站吗Q?500万PV是什么概念?服务器每U要处理多少个请求才能应对?如果计算呢?
PV是什么:
PV是page view的简写。PV是指面的访问次敎ͼ?/span>打开或刷?/span>一ơ页面,q做一个pv?nbsp;
计算模型Q?nbsp;
每台服务器每U处理请求的数量=((80%*总PV?/(24时*60?60U?40%)) / 服务器数??br />其中关键的参数是80%?0%。表CZ天中?0%的请求发生在一天的40%的时间内?4时?0%?.6时Q有80%的请求发生一天的9.6个小时当中(很适合互联|的应用Q白天请求多Q晚上请求少Q?nbsp;
单计的l果Q?/strong>
((80%*500?/(24时*60?60U?40%))/1 = 115.7个请?U?nbsp;
((80%*100?/(24时*60?60U?40%))/1 = 23.1个请?U?nbsp;
初步l论Q?/strong>
现在我们在做压力试Ӟ有了标准,如果你的服务器一U能处理115.7个请求,可以承?00万PV/每天。如果你的服务器一U能处理23.1个请求,可以承?00万PV/每天?/span>
留余量Q?/strong>
以上h数量?/span>均匀的分布在白天?.6个小时中Q但实际情况q不会这么均匀的分布,会有高峰有低谗ؓ了应寚w峰时D,应该留一些余圎ͼ最也要x2倍,x3倍也不ؓq?/span>
115.7个请?U?nbsp;*2?231.4个请?U?/span>
115.7个请?U?nbsp;*3?/span>=347.1个请?U?/span>
23.1个请?U?nbsp;*2?/span>=46.2个请?U?/span>
23.1个请?U?nbsp;*3?/span>=69.3个请?U?/span>
最l结论:
如果你的服务器一U能处理231.4--347.1个请?U?/span>Q就可以应对q_500万PV/每天?/span>
如果你的服务器一U能处理46.2--69.3个请求,可?/span>应对q_100万PV/每天?/span>
说明Q?/strong>
q里说明每秒N个请求,是QPS。因为我兛_的是应用E序处理业务的能力?nbsp;
实际l验Q?/strong>
1、根据实际经验,采用两台常规配置的机架式服务器,配置是很常见的配|,例如一?核CPU+4G内存+服务器SAS盘?/span>
2、个人武断的认ؓ在服务器CPU领域Intel的CPU要优于AMD的CPUQ有反对的就反对吧,我都说我武断了(LCPU性能比较Q,不要太相信AMD的广告,比较CPU性能单办法就是比hQ不要比频率与核心数Qh格相差不多的性能也相差不多?/span>
3、硬盘的性能很重要,由其是数据库服务器。一般的服务器都?/span>1.5万{的SAS盘Q高U一点的可以配SSD固态硬盘,性能会更好。最最最最重要的指标是“随机d性能”而不?#8220;序d性能”。(本例q是配置最常见?/span>1.5万{的SAS盘?/span>Q?/span>
4、一台服务器跑Tomcatq行j2eeE序,一台服务器跑MySql数据?E序写的中等水^(q个真的不好量化)Q是论坛cd的应?L回帖,不太Ҏ做缓?也无法静态化)?/span>
5、以上Yg情况下,是可以承?00万PV/每天的?已留有余量应对突然的讉K高峰)
注意机房的网l带宽:
有h说以上条件我都满了Q但实际性能q是达不到目标。这时请注意你对外的|络的带宽,在国内服务器便宜但带宽很贵,很可能你在机房是与大家共享一?00M的光U,实际每个人可分到2M左右带宽。再好一?M,再好一点双U机?0M独nQ这已经很贵了(北京hQ?/span>
一天L量:每个面20k字节*100万个面/1024=19531M字节=19G字节Q?/span>
19531M/9.6时=2034M/时=578K字节/s 如果h是均匀分布的,需?MQ?/span>640K字节Q?/span>带宽Q?Mb=640KB 注意大小写,b是位QB是字节,差了8倍)Q但所有请求不可能是均匀分布的,当有高峰?M带宽一定不够,X2倍就?0M带宽?/span>10M带宽基本可以满要求?/span>
以上是假设每个页?0k字节Q基本不包含囄Q要?/span>包含囄更大了Q?0M带宽也不能满求了。你自已计算吧?/span>
Q全文完Q?/span>
附:性能试基本概念
---------------------------------------------------------------------------------------
基本概念Q?/strong>
ThroughputQ吞吐量Q:按照常规理解|络吞吐量表C在单位旉内通过|卡数据量之和,其中卛_括本机网卡发送出ȝ数据量也包括本机|卡接收到的数据量?一?00Mb(?的双工网卡,最大发送数据的速度?2.5M字节/s Q?/span> 最大接收数据的速度?2.5M字节/sQ?/span> 可以 同时 收发 数据?nbsp;
q发用户敎ͼ是同时执行操作的用户(U程??nbsp;
响应旉Q从h发出到收到响应花费的旉 ?/span>
QPS - Queries Per Second 每秒处理的查询数Q如果是数据库,q当于dQ?br />TPS - Transactions Per Second 每秒处理的事务数(如果是数据库Q就相当于写入、修?
IOPSQ每U磁盘进行的I/O操作ơ数
例如Ҏ个数据库试Q分开两次QPS与TPS?br />QPSQ读取)值L高于TPS(写、改)Qƈ且有倍率关系Q因为:
1、数据库Ҏ询可能有~存?br />2、机械硬盘或SSD盘的读是比写快?/span>
---------------------------------------------------------------------------------------
JMeter试参数说明Q?/strong>
LabelQ每一个测试单元的名字?nbsp;
#SamplesQ表CZ个测试单元一共发Z多少个请求?nbsp;
AverageQ^均响应时?#8212;—默认情况下是单个 Request 的^均响应时_当用了 Transaction Controller Ӟ也可以以Transaction 为单位显C^均响应时间。,不重要?nbsp;
MedianQ中位数Q也是 50Q?用户的响应时_如果把响应时间从到大顺序排序,那么50Q的h的响应时间在q个范围之内。重要?nbsp;
90% LineQ?0Q?用户的响应时_如果把响应时间从到大顺序排序,那么90Q的h的响应时间在q个范围之内?span style="color: #ff0000;">重要 ?nbsp;
MinQ最响应时_不重要?nbsp;
MaxQ最大响应时_出现几率只不q是千分之一甚至万分之一Q不重要?nbsp;
Error%Q本ơ测试中出现错误的请求的数量
ThroughputQ吞吐量——默认情况下表C每U完成的h敎ͼRequest per SecondQ,当用了 Transaction Controller Ӟ也可以表C类?LoadRunner ?Transaction per Second ?nbsp;
KB/SecQ每U从服务器端接收 到的数据?只是接收)Q相当于LoadRunner中的Throughput/Sec
---------------------------------------------------------------------------------------
loadrunner试参数说明Q?/strong>
响应旉Q?/strong> ?0%|如果把响应时间从到大顺序排序,那么90Q的h的响应时间在q个范围之内。重要?nbsp;
每秒点击?/strong> Qhits per Second,每秒钟向服务器提交请求的数量?nbsp;
TPSQ?/strong> Transaction per Second Q每U事务数Q一个事务是指一个客h向服务器发送请求然后服务器做出反应的过E?nbsp;
ThroughputQ吞吐量Q: Loadrunner记录的Throughput是接收到服务器返回的所有字节数之和Q与本地发出的字节数无关?nbsp;
Throughput/SecQ?/strong> 每秒的吞吐量?nbsp;
对于BS架构的一般分?响应旉、点ȝ、吞吐量、TPSQ每U事务数Q?nbsp;
对于CS架构的一般分?TPSQ每U事务数Q?nbsp;
For example, the DAL might return a reference to an object (in terms of object-oriented programming) complete with its attributes instead of a row of fields from a database table. This allows the client (or user) modules to be created with a higher level of abstraction. This kind of model could be implemented by creating a class of data access methods that directly reference a corresponding set of database stored procedures. Another implementation could potentially retrieve or write records to or from a file system. The DAL hides this complexity of the underlying data store from the external world.
For example, instead of using commands such as insert, delete, and update to access a specific table in a database, a class and a few stored procedures could be created in the database. The procedures would be called from a method inside the class, which would return an object containing the requested values. Or, the insert, delete and update commands could be executed within simple functions like registeruser or loginuser stored within the data access layer.
Also, business logic methods from an application can be mapped to the Data Access Layer. So, for example, instead of making a query into a database to fetch all users from several tables the application can call a single method from a DAL which abstracts those database calls.
Applications using a data access layer can be either database server dependent or independent. If the data access layer supports multiple database types, the application becomes able to use whatever databases the DAL can talk to. In either circumstance, having a data access layer provides a centralized location for all calls into the database, and thus makes it easier to port the application to other database systems (assuming that 100% of the database interaction is done in the DAL for a given application).
Object-Relational Mapping tools provide data layers in this fashion, following the active record model. The ORM/active-record model is popular with web frameworks.
REST (REpresentation State Transfer) 描述了一个架构样式的|络pȝQ比?web 应用E序。它首次出现?2000 q?Roy Fielding 的博士论文中Q他?HTTP 规范的主要编写者之一?strong style="font-weight: bold; text-align: center; background-color: yellow; ">REST 指的是一l架构约束条件和原则?/strong>满q些U束条g和原则的应用E序或设计就?RESTful?/span>
Web 应用E序最重要?REST 原则是,客户端和服务器之间的交互在请求之间是无状态的?span style="background-color: yellow; ">从客L到服务器的每个请求都必须包含理解h所必需的信?/span>。如果服务器在请求之间的M旉炚w启,客户端不会得到通知?span style="background-color: yellow; ">此外Q无状态请求可以由M可用服务器回{,q十分适合云计之cȝ环境。客L可以~存数据以改q性能?/span>
在服务器端,应用E序状态和功能可以分ؓ各种资源。资源是一个有的概念实体Q它向客L公开。资源的例子有:应用E序对象、数据库记录、算法等{?/span>?span style="background-color: yellow; ">每个资源都?URI (Universal Resource Identifier) 得到一个惟一的地址。所有资源都׃nl一的界面,以便在客L和服务器之间传输状态。用的是标准的 HTTP ҎQ比?GET、PUT、POST ?DELETE。Hypermedia 是应用程序状态的引擎Q资源表C通过链接互联?/p>
另一个重要的 REST 原则是分层系l?/strong>Q这表示lg无法了解它与之交互的中间层以外的lg。通过系l知识限制在单个层,可以限制整个pȝ的复杂性,促进了底层的独立性?/span>
?REST 架构的约束条件作Z个整体应用时Q将生成一个可以扩展到大量客户端的应用E序。它q降低了客户端和服务器之间的交互延迟。统一界面化了整个pȝ架构Q改q了子系l之间交互的可见性?strong style="font-weight: bold; text-align: center; ">REST 化了客户端和服务器的实现?/strong>
RESTful的实玎ͼRESTful Web 服务?RPC 样式?Web 服务
了解了什么是什么是RESTQ我们再看看RESTful的实现。最q,使用 RPC 样式架构构徏的基?SOAP ?Web 服务成ؓ实现 SOA 最常用的方法。RPC 样式?Web 服务客户端将一个装满数据的信封Q包括方法和参数信息Q通过 HTTP 发送到服务器。服务器打开信封q用传入参数执行指定的Ҏ。方法的l果打包C个信ƈ作ؓ响应发回客户端。客L收到响应q打开信封?span style="background-color: yellow; ">每个对象都有自己独特的方法以及仅公开一?URI ?RPC 样式 Web 服务QURI 表示单个端点。它忽略 HTTP 的大部分Ҏ且仅支?POST Ҏ?/span>
׃轻量U以及通过 HTTP 直接传输数据的特性,Web 服务?RESTful Ҏ已经成ؓ最常见的替代方法。可以用各U语aQ比?Java E序、Perl、Ruby、Python、PHP ?Javascript[包括 Ajax]Q实现客L。RESTful Web 服务通常可以通过自动客户端或代表用户的应用程序访问。但是,q种服务的简便性让用户能够与之直接交互Q用它们的 Web 览器构Z?GET URL q读取返回的内容?/p>
?REST 样式?Web 服务中,每个资源都有一个地址。资源本w都是方法调用的目标Q方法列表对所有资源都是一L。这些方法都是标准方法,包括 HTTP GET、POST、PUT、DELETEQ还可能包括 HEADER ?OPTIONS?/span>
?RPC 样式的架构中Q关注点在于ҎQ而在 REST 样式的架构中Q关注点在于资源 —— 用标准方法检索ƈ操作信息片段Q用表C的形式Q。资源表CŞ式在表示形式中用超链接互联?/p>
Leonard Richardson ?Sam Ruby 在他们的著作 RESTful Web Services 中引入了术语 REST-RPC 混合架构。REST-RPC 混合 Web 服务不用信包装方法、参数和数据Q而是直接通过 HTTP 传输数据Q这?REST 样式?Web 服务是类似的。但是它不用标准的 HTTP Ҏ操作资源。它?HTTP h?URI 部分存储Ҏ信息。好几个知名?Web 服务Q比?Yahoo ?Flickr API ?del.icio.us API 都用这U合架构?/p>
RESTful的实玎ͼRESTful Web 服务?Java 框架
有两?Java 框架可以帮助构徏 RESTful Web 服务。erome Louvel ?Dave Pawson 开发的 RestletQ见 参考资料)是轻量的。它实现针对各种 RESTful pȝ的资源、表C、连接器和媒体类型之cȝ概念Q包?Web 服务。在 Restlet 框架中,客户端和服务器都是组件。组仉过q接器互盔R信。该框架最重要的类是抽象类 Uniform 及其具体的子c?RestletQ该cȝ子类是专用类Q比?Application、Filter、Finder、Router ?Route。这些子c能够一起处理验证、过滤、安全、数据{换以及将传入h路由到相应资源等操作。Resource cȝ成客L的表CŞ式?/p>
JSR-311?Sun Microsystems 的规范,可以为开?RESTful Web 服务定义一l?Java API。Jersey是对 JSR-311 的参考实现?/p>
JSR-311 提供一l注释,相关cd接口都可以用来将 Java 对象作ؓ Web 资源展示。该规范假定 HTTP 是底层网l协议。它使用注释提供 URI 和相应资源类之间的清晰映,以及 HTTP Ҏ?Java 对象Ҏ之间的映。API 支持q泛?HTTP 实体内容cdQ包?HTML、XML、JSON、GIF、JPG {。它q将提供所需的插件功能,以允怋用标准方法通过应用E序d其他cd?/p>
RESTful的实玎ͼ构徏 RESTful Web 服务的多层架?/strong>
RESTful Web 服务和动?Web 应用E序在许多方面都是类似的。有时它们提供相同或非常cM的数据和函数Q尽客L的种cM同。例如,在线电子商务分类|站为用h供一个浏览器界面Q用于搜索、查看和订购产品。如果还提供 Web 服务供公司、零售商甚至个h能够自动订购产品Q它非常有用。与大部分动?Web 应用E序一PWeb 服务可以从多层架构的x点分M受益。业务逻辑和数据可以由自动客户端和 GUI 客户端共享。惟一的不同点在于客户端的本质和中间层的表C层。此外,从数据访问中分离业务逻辑可实现数据库独立性,qؓ各种cd的数据存储提供插件能力?/p>
?1 展示了自动化客户端,包括 Java 和各U语a~写的脚本,q些语言包括 Python、Perl、Ruby、PHP 或命令行工具Q比?curl。在览器中q行且作?RESTful Web 服务消费者运行的 Ajax、Flash、JavaFX、GWT、博客和 wiki 都属于此列,因ؓ它们都代表用户以自动化样式运行。自动化 Web 服务客户端在 Web 层向 Resource Request Handler 发?HTTP 响应。客L的无状态请求在头部包含Ҏ信息Q即 POST、GET、PUT ?DELETEQ这又将映射?Resource Request Handler 中资源的相应操作。每个请求都包含所有必需的信息,包括 Resource Request Handler 用来处理h的凭据?/p>
?Web 服务客户端收到请求之后,Resource Request Handler 从业务逻辑层请求服务。Resource Request Handler 定所有概忉|的实体Q系l将q些实体作ؓ资源公开Qƈ为每个资源分配一个惟一?URI。但是,概念性的实体在该层是不存在的。它们存在于业务逻辑层。可以?Jersey 或其他框Ӟ比如 RestletQ实?Resource Request HandlerQ它应该是轻量的,大量职责工作委托给业务层?/p>
Ajax ?RESTful Web 服务本质上是互ؓ补充的。它们都可以利用大量 Web 技术和标准Q比?HTML、JavaScript、浏览器对象、XML/JSON ?HTTP。当然也不需要购买、安装或配置M主要lg来支?Ajax 前端?RESTful Web 服务之间的交互。RESTful Web 服务?Ajax 提供了非常简单的 API 来处理服务器上资源之间的交互?/p>
?1 中的 Web 览器客L作ؓ GUI 的前端,使用表示层中?Browser Request Handler 生成?HTML 提供昄功能。Browser Requester Handler 可以使用 MVC 模型QJSF、Struts ?Spring 都是 Java 的例子)。它从浏览器接受hQ从业务逻辑层请求服务,生成表示q对览器做出响应。表CZ用户在浏览器中显CZ用。表CZ仅包含内容,q包含显C的属性,比如 HTML ?CSS?/p>
业务规则可以集中C务逻辑层,该层充当表示层和数据讉K层之间的数据交换的中间层。数据以域对象或值对象的形式提供l表C层。从业务逻辑层中解?Browser Request Handler ?Resource Request Handler 有助于促q代码重用,q能实现灉|和可扩展的架构。此外,׃来可以使用新的 REST ?MVC 框架Q实现它们变得更加容易,无需重写业务逻辑层?/p>
数据讉K层提供与数据存储层的交互Q可以?DAO 设计模式或者对?关系映射解决ҎQ如 Hibernate、OJB ?iBATISQ实现。作为替代方案,业务层和数据讉K层中的组件可以实Cؓ EJB lgQƈ取得 EJB 容器的支持,该容器可以ؓlg生命周期提供便利Q管理持久性、事务和资源配置。但是,q需要一个遵?Java EE 的应用服务器Q比?JBossQ,q且可能无法处理 Tomcat。该层的作用在于针对不同的数据存储技术,从业务逻辑中分L据访问代码。数据访问层q可以作接其他系l的集成点,可以成ؓ其他 Web 服务的客L?/p>
数据存储层包括数据库pȝ、LDAP 服务器、文件系l和企业信息pȝQ包括遗留系l、事务处理系l和企业资源规划pȝQ。用该架构Q您可以开始看?RESTful Web 服务的力量,它可以灵zd成ؓM企业数据存储的统一 APIQ从而向以用户ؓ中心?Web 应用E序公开垂直数据Qƈ自动化批量报告脚本?/p>
什么是RESTQ结束语
REST 描述了一个架构样式的互联pȝQ如 Web 应用E序Q。REST U束条g作ؓ一个整体应用时Q将生成一个简单、可扩展、有效、安全、可靠的架构。由于它ѝ轻量以及通过 HTTP 直接传输数据的特性,RESTful Web 服务成ؓZ SOAP 服务的一个最有前途的替代Ҏ。用?web 服务和动?Web 应用E序的多层架构可以实现可重用性、简单性、可扩展性和lg可响应性的清晰分离。Ajax ?RESTful Web 服务本质上是互ؓ补充的。开发h员可以轻松?Ajax ?RESTful Web 服务一起创Z富的界面?/p>