性能驱动下的架构实例

标签: 性能 架构 实例 | 发表时间:2015-05-29 23:35 | 作者:cfyme
出处:http://www.iteye.com

大型WEB互联网应用都是在市场的锤炼中成长的,以前提到过性能需求的驱动对于架构的影响,一个1M PV和一个100M PV的网站肯定是不一样的。这里仅仅给出几个典型的例子,兴许你对此能有收获。

 

初期,只有简单的应用服务器和DB服务器分家,使用简单的Jetty容器,系统的瓶颈在DB侧。简单就是美,网站刚刚运营,不考虑太多,能访问就是王道,给用户提供丰富的内容:


=================================================================

 

系统在发展中不断地演化。

有一天发现用户压力越来越大,终于无法承受了,系统屡屡到达崩溃的边缘,在现有硬件和架构条件下很难支撑现有的业务,做出了这样的改变:


在这次改变中,做了这几件重要的事情:

1、引入了全页面的缓存。互联网应用缓存为王,全页面的缓存可以起到立竿见影的效果。

2、把页面展现抽象成为“主题”,和页面数据分离开来。并且,为此,引入了“聚合”的概念,它为以后的进一步发展打下了一个伏笔。

3、为了缓解数据库的瓶颈,使用了RAC方式做持久层的集群。

4、对于JS、CSS、图片等几乎一成不变的静态资源,引入反向代理,优先处理。

 

=================================================================

 

网站安安静静地发展,悄悄地演化。

终于有一天,用户访问量激增,百万级的PV达到了,WEB2.0业务也增加进来,缓存的命中率越来越低,CPU成为了瓶颈,访问异常缓慢。这一次,又要动刀了:

 


这一次的架构重构做了这么几件重要的事情:

1、静态资源(特别是可供下载的文件),使用CDN缓解压力。

2、把请求拆分成主请求、异步数据请求和静态资源请求,其中主请求仅仅是获取页面不变的部分(模板+静态数据),动态的数据以异步JSON的方式获取,并在浏览器端使用JavaScript聚合。这一步把某些聚合操作放置到了客户端进行,缓解了服务端压力。

3、真正将页面的聚合展现和页面的生成拆分开来,保证了用户响应是快速的。

4、引入多层次缓存(内存中对象集合使用Memcached缓存,接口层面缓存报文,页面缓存缓存文件等),同时,对于层次的划分,容易将整个系统拆分成若干个子部件独立运作,简单、独立。

5、数据库进一步拆分,读写分离。

6、页面分块。这是大型Web2.0网站共有的特点,一个页面上往往总有那么一部分是固定不变的,这些部分应当能以页面片段的形式缓存到磁盘上,每次页面生成的时候只需要更关注变化的部分即可。

 

=================================================================

 

继续、继续。

访问量增长了几十倍,集群的服务器也第一次达到了三位数,系统不稳定,速度重新落下,问题定位也无比困难,一切又开始扑朔迷离起来。


这一次,不可避免地又做了架构上的调整,首要的目标,是以隔离解耦的方式增加系统稳定性,同时,更便于产品化管理:

1、整体采用SOA方式布局,按照功能划分集群,并且每个功能集群定义为一个“服务”,内部采用REST风格的接口访问服务。服务驱动和编制引擎(ESB角色)定时把可以提前生成的静态数据存放到共享存储上。

2、清晰化聚合逻辑,静态的数据尽量在服务端聚合完成,减少客户端数据请求的流量。

3、引入NOSQL数据库和廉价存储,适当放弃一致性,为海量数据做准备。

4、开发核心业务功能包部署引擎(基于OSGi),对于业务的定制,只需要按照功能包定义的格式开发,完成后可做到不重启应用增加业务功能。

 

转载地址: http://raychase.iteye.com/blog/1255396



已有 0 人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐



相关 [性能 架构 实例] 推荐:

性能驱动下的架构实例

- - 企业架构 - ITeye博客
大型WEB互联网应用都是在市场的锤炼中成长的,以前提到过性能需求的驱动对于架构的影响,一个1M PV和一个100M PV的网站肯定是不一样的. 这里仅仅给出几个典型的例子,兴许你对此能有收获. 初期,只有简单的应用服务器和DB服务器分家,使用简单的Jetty容器,系统的瓶颈在DB侧. 简单就是美,网站刚刚运营,不考虑太多,能访问就是王道,给用户提供丰富的内容:.

高性能服务器架构

- 临峰 - 博客园-首页原创精华区
    任何一行都有自己的军规, 我想这篇著名的文章就是游戏服务器程序员的军规. 也许你认为游戏服务器程序员日常并不涉及这样底层的实现, 而只是去完成策划提出的需求, 我觉得也有道理, 毕竟这些是我们的工作, 下面的译文就不太适合你. 但是对于想改进现有系统, 在服务器方面给予更好的技术支持, 那么你在开始工作之前必须了解一些禁忌, 并且给出了一些解决方向上的真知灼见.

高性能服务器架构思路

- - ITeye资讯频道
本文来自: http://wetest.qq.com/. 在服务器端程序开发领域,性能问题一直是备受关注的重点. 业界有大量的框架、组件、类库都是以性能为卖点而广为人知. 然而,服务器端程序在性能问题上应该有何种基本思路,这个却很少被这些项目的文档提及. 本文正式希望介绍服务器端解决性能问题的基本策略和经典实践,并分为几个部分来说明:.

系统架构性能优化思路

- - DockOne.io
今天谈下业务系统性能问题分析诊断和性能优化方面的内容. 这篇文章重点还是谈已经上线的业务系统后续出现性能问题后的问题诊断和优化重点. 我们首先来分析下如果一个业务系统上线前没有性能问题,而在上线后出现了比较严重的性能问题,那么实际上潜在的场景主要来自于以下几个方面. 业务出现大并发的访问,导致出现性能瓶颈.

大型网站技术架构(四)--网站的高性能架构

- - CSDN博客架构设计推荐文章
大型网站技术架构(一)--大型网站架构演化. 大型网站技术架构(二)--架构模式. 大型网站技术架构(三)--架构核心要素. 网站性能是客观的指标,可以具体体现到响应时间、吞吐量、并发数、性能计数器等技术指标.       指应用执行一个操作需要的时间,指从发出请求到最后收到响应数据所需要的时间. 如下列出了系统常用的操作响应时间表..

深入解析物联网操作系统(架构/功能/实例分析)

- - IT瘾-geek
1.       物联网的主要特点.                        i.             连接. 所谓连接,指的是各种各样的终端设备,都能够通过某种网络技术,连接到一个统一的网络上. 下一代的基础通信网络,包括未来的5G,通信网络架构重构等,为物联网提供泛连接网络是核心目标.

淘宝的可伸缩高性能互联网架构

- 浪客 - 博客园-首页原创精华区
一 应用无状态(淘宝session框架).          假如在session中保存了大量与客户端的状态信息,保存状态信息的server宕机时.          通常通过集群解决,不仅有负载均衡,更重要的是要有失效恢复failover.          tomcat用集群节点广播复制,jboss用配对复制等session状态复制策略,但严重影响系统的伸缩性,不能通过增加更多的机器达到良好的水平伸缩.

低成本和高性能MySQL云数据的架构探索

- - Erlang非业余研究
原创文章,转载请注明: 转载自 Erlang非业余研究. 低成本和高性能MySQL云数据的架构探索. 原文地址: http://www.alibabatech.org/article/detail/3405/0?ticket=d69f07f8-b60b-43f8-9572-7d795bb8429d.

从12306.cn谈大网站架构与性能优化

- - 服务器运维与网站架构|Linux运维|X研究
PS:关于12306.cn网站,前些时间,骂的人很多,但是这网站的压力和架构不是一般非专业人生想得这么简单. 下文是资深架构师陈皓写的关于12306.cn购票网站的架构和性能系列分析,个人认为很有参考价值,转载如下:. 12306.cn网站挂了,被全国人民骂了. 我这两天也在思考这个事,我想以这个事来粗略地和大家讨论一下网站性能的问题.

Twitter新系统架构性能大幅度提升

- - IT经理网
8月3日《天空之城》在日本的热播创下每秒新增143119条推文的Twitter峰值记录,是Twitter平均每秒发推数(TPS)5700条的25倍. 值得注意的是,在这次毫无征兆的“洪峰”到来时,Twitter全新的系统平台并没有被潮水般涌来的推文堵塞而产生任何延迟甚至宕机. Twitter旧架构与新架构的性能对比.