云端高性能技术架构浅析一

  无论是国外的Google、Facebook、Amazon,还是国内的Baidu、Taobao等,这些高性能的服务器在处理高并发的请求时,都能快速、准确的给予应答。通过查阅资料,了解现有大型网站的技术架构,发现目前常用的技术有分层、缓存、负载均衡、数据库性能优化,分布式系统等等。接下类分别对这些技术进行简单介绍。

1 分层与服务分离

  无论OSI的7层网络结构,还是计算机底层硬件与上层软件之间的分层,甚至于Web领域大家非常熟悉的MVC开发模式,分层在计算机领域无处不在。分层可以将不同的功能部件独立起来,下层为上层提供访问接口,支撑上层的功能;上层调用下层接口来完成服务。

  分层也是服务器端采用的一种方法,通过将数据库、文件资源等与应用服务器分开,可以缓解服务器压力。

  另外,根据业务需求的不同,将明显没有交集的业务分开,独立成不同的模块单独进行管理,也可以在很大程度上提升服务器性能。

2 缓存

  缓存在计算机很多地方都有涉及,比如在内存与硬盘之间增加Cache、增加IO缓冲区来缓解速度之间的不匹配。缓存的出现主要是依据计算机中著名的二八定律。缓存的技术主要包括本地缓存、分布式缓存、CDN和反向代理。

  根据二八定律,80%的操作集中在20%的数据上。网站将常用的数据缓存在本地应用服务器中,以后直接通过缓存中的数据来响应用户的请求,而不用再去计算。这样就可以减少响应时间。

  分布式缓存相比本地缓存速度要慢,因为应用服务器要访问专门的缓存服务器来获取数据,但是应用服务器主要用于处理请求,其自身内存有限,如果缓存大量数据,应用程序的运行速度将受到明显影响。因此很多大型网站都使用远程分布式缓存,部署大内存的服务器作为专门的缓存服务器。

  缓存的另外两种表现形式是CDN和反向代理。不同的地方在于,CDN部署在网络提供商(比如电信、移动、联通等)的机房,用户在请求网站服务时,可以直接从网络提供商机房获取数据;而反向代理则部署在网站的中心机房,当用户的请求到中心机房后,首先访问的服务器是反向代理服务器,如果反向代理服务器中有相应资源的缓存,就将其直接返回给用户,而不用再去请求应用服务器。

3 负载均衡

  负载均衡的原理就是去中心化。当用户并发请求量巨大时,如果将所有的请求都交给一个服务器去处理,很可能造成服务器宕机,即使能够正确响应,响应时间也可能会比较长,给用户造成不好的体验。

  大型网站都是将一个域名绑定不同的服务器IP,这样表面上好像只有一台服务器在提供服务,实际则是一个服务器集群在提供相同的服务。负载均衡器接收所有用户的请求,再根据每台应用服务器正在处理的请求数量来对请求进行分配。这样就能在很大程度上提高系统的性能,同时扩展性也得到很大提升——当某台服务器宕机时,直接替换就可以,其它服务器继续相应用户请求;当用户请求量超过预定峰值时,也可以通过实时增加服务器来缓解压力。

4 数据库性能优化

  使用缓存后,大部分的数据操作不需要通过数据库即可完成。但是仍有一部分读操作(缓存访问不命中,缓存过期)和全部的写操作需要访问数据库,在网站的用户达到一定规模时,数据库因为负载压力过高而成为网站的瓶颈。因而需要对数据库进行优化,常用的技术主要包括读写分离、结合非关系型数据库使用、分布式数据库等。

  一般情况下,数据库读操作所需要的时间比写操作的要少很多,通过将数据库的读写操作分离可以明显改善数据库性能。目前很多大型网站都配置数据库主从关系,主数据库用于写操作并将数据同步更新到从数据库上,从数据库只负责读操作。例如,新浪云计算平台(SAE)给用户的数据库就进行了主从配置。

  同时,可以利用非关系型数据库和搜索引擎对数据检索的优势,来减轻应用服务器直接访问关系型数据库的压力。

  当对业务进行分离后,可以根据业务所涉及的数据,将数据库进行分库部署在不同的服务器上。

5 冗余

  网站需要7x24小时连续运行,但是服务器随时可能出现故障,特别是服务器规模比较大时,出现某台服务器宕机是必然事件。要想保证在服务器宕机的情况下网站依然可以继续服务,不丢失数据,就需要一定程度的服务器冗余运行,数据冗余备份,这样当某台服务器宕机时,可以将其上的服务和数据转移到其它机器上继续运行。

时间: 2024-10-07 21:57:21

云端高性能技术架构浅析一的相关文章

云端高性能技术架构浅析二

本文主要对缓存中的Memcached技术进行介绍. 1 Memcached 1.1 Memcached简介 Memcached是一个高性能的分布式对象缓存系统,用于动态Web应用,以减轻数据库负载[1].它通过在内存中缓存数据和对象来减少应用程序读取数据库的次数,从而提高网站的性能.如图1是Memcached在网站中的位置示意图. 图1 Memcached位置示意图 Memcached以键值对的形式将数据(或对象)缓存在内存中,虽然使用到了多个服务节点,但是和一般分布式缓存系统不同的是,每一份数

大中型网站技术架构浅析 - 实时通信

本文所讲述的『实时通信』主要围绕浏览s器端和服务器端之间的实时通信.大中型网站技术架构浅析 系列之一. 实时通信主要分3大类: 1. Pull技术,轮询(Polling) 客户端定时轮询请求,服务器端立刻返回. 优点:短链接,服务器处理方便,支持跨域. 缺点:有一定延迟 微博未读微博数和未读消息(评论,@)就是用polling实现的. 应用场景:对实时性要求不高的应用,如新微博提示,评论提示,回复提示等. 2. Push,反向Ajax(Reverse Ajax)或者叫Comet. 实现方式主要有

Android应用内社区SDK技术架构浅析

Android应用内社区SDK技术架构浅析 应用内微社区是什么 ? 图1 图2 雪球财经应用内社区 一.以友盟微社区为例 简单来说,友盟的微社区就是一款帮助开发者在应用中快速搭建一个社区( 类似于新浪微博.朋友圈 )的产品.在很多应用中,开发商往往都会需要一个用户之间以及用户与开发商之间互动的社区,用户往往又会在社区里选择赞.评论.关注.转发.发帖等各种互动方式.但是开发一个社交系统可不是那么容易的一件事,复杂的用户关系.消息流.服务器架构等等都是棘手的问题,更重要的是大家都是重复地劳动!每个开

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

大型网站技术架构(一)--大型网站架构演化 大型网站技术架构(二)--架构模式 大型网站技术架构(三)--架构核心要素 网站性能是客观的指标,可以具体体现到响应时间.吞吐量.并发数.性能计数器等技术指标. 1.性能测试指标 1.1 响应时间 指应用执行一个操作需要的时间,指从发出请求到最后收到响应数据所需要的时间.如下列出了系统常用的操作响应时间表. 操作 响应时间 打开一个网站 几秒 数据库查询一条记录(有索引) 十几毫秒 机械磁盘一次寻址定位 4毫秒 从机械磁盘顺序读取1M数据 2毫秒 从S

大型B2C网站高性能可伸缩架构技术探秘

大型B2C网站高性能可伸缩架构技术探秘 2010-07-21 08:51 狂放不羁 JavaEye 字号:T | T 向您介绍大型B2C网站高性能的网站架构技术,包括缓存的使用.应用程序和数据库的拆分.异步通信以及非结构化数据存储等. AD:WOT2014课程推荐:实战MSA:用开源软件搭建微服务系统 在<世界最大的PHP站点 Facebook后台技术探秘>一文中介绍了一个大型SNS网站的技术组成.今天我们继续大型网站探秘,一起来探秘大型B2C网站的架构技术.作为国内最大的B2C网站,其网站架

《大型网站技术架构》读书笔记四:瞬时响应之网站的高性能架构

一.网站性能测试 (1)性能测试指标:①响应时间:②并发数:③吞吐量:④性能计数器: (2)性能测试方法:①性能测试:②负载测试:③压力测试:④稳定性测试: (3)性能优化策略: ①性能分析:检查请求处理各个环节的日志,分析哪个环节响应时间不合理,检查监控数据分析影响性能的因素: ②性能优化:Web前端优化,应用服务器优化,存储服务器优化: 二.Web前端性能优化 (1)浏览器访问优化: ①减少http请求:因为http是无状态的,每次请求的开销都比较昂贵(需要建立通信链路.进行数据传输,而服务

简谈9种高性能高可用高并发的技术架构

每一个模式描述了一个在我们周围不断重复发生的问题及该问题解决方案的核心.这样,你就能一次又一次地使用该方案而不必做重复工作. 所谓网站架构模式即为了解决大型网站面临的高并发访问.海量数据.高可靠运行等一系列问题与挑战.为此,在实践中提出了许多解决方案,以实现网站高性能.高可靠性.易伸缩.可扩展.安全等各种技术架构目标. 一.分层 分层是企业应用系统中最常见的一种架构模式,将系统在横向维度上切分成几个部分,每个部分负责一部分相对简单并比较单一的职责,然后通过上层对下层的依赖和调度组成一个完整的系统

浅析微信小程序技术架构(原创)

周末万里虎抽空体验了下微信小程序的DEMO,对小程序的开发有了一个基础的了解与认识,今天就来和大家分享一下我对小程序的看法. 从官方DEMO来看,小程序在技术架构上非常清晰易懂.JS负责业务逻辑的实现,而表现层则WXML和WXSS来共同实现,前者其实就是一种微信定义的模板语言,而后者类似CSS.所以对于擅长前端开发,或者WEB开发的广大开发者而已,小程序的开发可谓降低了不少门槛. 从上面的微信小程序架构图上可以清晰的看出,小程序借助的是JSBridge实现了对底层API接口的调用,所以在小程序里

《大型网站技术架构》网站的高性能架构及优化

一.网站性能测试 (1)性能测试指标:①响应时间:②并发数:③吞吐量:④性能计数器: (2)性能测试方法:①性能测试:②负载测试:③压力测试:④稳定性测试: (3)性能优化策略: ①性能分析:检查请求处理各个环节的日志,分析哪个环节响应时间不合理,检查监控数据分析影响性能的因素: ②性能优化:Web前端优化,应用服务器优化,存储服务器优化: 二.Web前端性能优化 (1)浏览器访问优化: ①减少http请求:因为http是无状态的,每次请求的开销都比较昂贵(需要建立通信链路.进行数据传输,而服务