|
12.5 云平台整体架构
: ^1 [5 U; @: K" N- k( H! ` a云存储是云计算的存储部分,理解云存储架构的前提是理解云平台整体架构。9 j1 a% [1 t8 @6 Z4 n$ y
云计算按照服务类型大致可以分为三类:基础设施即服务(IaaS)、平台即服务
/ [/ X u. M! B* K8 d(PaaS)以及软件即服务(SaaS),如图12-3所示。
" w! e0 u4 A* Q- ?) C图 12-3 云计算服务类型
9 W4 _# w8 P Z* Z H( y# Y, UIaaS将硬件设备等基础资源以虚拟机的形式封装成服务供用户使用,如Amazon
0 r1 B1 s/ R8 a# H云计算AWS(Amazon Web Service)的弹性计算云EC2,PaaS进一步抽象硬件资源,6 p6 x& w% ]( ~% U, j
提供用户应用程序的运行环境,开发者只需要将应用程序提交给PaaS平台,PaaS平" R. e5 [, P3 ~
台会自动完成程序部署,处理服务器故障,扩容等问题,典型的如(Google App* H2 v% E$ ]2 m9 R8 ^/ v/ q9 m
Engine)GAE。另外,微软的云计算平台Windows Azure Platform也可大致归入这一
: H8 L5 c; I/ K% H/ e4 c类。SaaS的针对性更强,它将某些特定应用软件封转成服务,如Salesforce公司提供1 `' C0 }6 [1 \, L6 d& u' Y* E
的在线客户端管理CRM服务,Google的企业应用套件Google Apps等。( A. O6 ~1 F8 q2 y: o3 `0 H
本节首先分别介绍Amazon、Google以及Microsoft这三个云平台的整体架构,其& S; B7 B L! G9 f: u, o
中,Amazon提供IaaS服务,Google和Microsoft提供PaaS服务,接着介绍一般情况下云% |; G! @4 U$ F
平台的整体架构。. v% H1 G6 K1 D- j' _4 C$ S/ q- V
12.5.1 Amazon云平台
1 g& u4 \7 m, w4 DAmazon Web Services(AWS)是Amazon构建的一个云计算平台的总称,它提供
+ A! t! z/ o) {) a了一系列云服务。通过这些服务,用户能否访问和使用Amazon的存储和计算基础设, t1 E, k) C. m/ `* |7 k4 j7 M
施。如图12-4所示,AWS平台分为如下几个部分:
7 _5 Z5 L5 T; E) o图 12-4 AWS平台整体架构1 ~8 ?$ Y6 `: e- o, ]) M' Y
●计算类:核心产品为弹性计算云EC2(Elastic Computing)。EC2几乎可以认为" b& Z6 ?+ `" v2 f- K
是迄今为止云计算领域最为成功的产品,通俗地讲,就是提供虚拟机,用户的应用4 K/ O! N/ i# A$ c
程序部署在EC2实例中。EC2架构的核心是弹性伸缩,当托管的应用程序访问量变化
' Z, |1 Y ~) n$ T/ h/ q5 r时能够自动增加或者减少EC2实例,并通过弹性负载均衡技术将访问请求分发到新增
* t' N# A8 o$ j& S" Q8 Z的EC2实例上。在计费模式上,EC2按照使用量计费,而不是采用传统的预付费方
! [6 Y) t0 a+ E式。EBS(Elastic Block Store)是一个分布式块设备,可以像本地的磁盘一样直接挂
% g% x3 |9 C8 x# c" a+ X7 \载在EC2实例上,与本地磁盘不同的是,保存到EBS的数据会由EBS的管理节点自动
5 U) y; @+ Q' m3 ?5 Y复制到多个存储节点上。EC2实例的本地存储是不可靠的,如果EC2实例出现故障,
3 I# g0 m1 F; E4 z5 q5 R5 e6 }本地存储上保存的数据将会丢失,而保存到EBS上的数据不会丢失。EBS用于替代
, ~, t! y' E0 F' n9 DEC2实例的本地存储,从而增强EC2可靠性。) \3 h: i: `$ ]0 [9 U/ {7 @
●存储类:存储类产品较多,包括简单对象存储S3,表格存储系统SimpleDB、4 m" w: |# _3 M2 m6 v
DynamoDB、分布式关系数据库服务(Relational Datastore Service,RDS)以及简单消8 d9 d; N! M" F, s9 v ~, u
息存储(Simple Queue Service,SQS)。S3用于存储图片、照片、视频等大对象,为
$ I( E* v/ q1 R. }! ?了提高访问性能,S3中的对象还能够通过CloudFront缓存到不同地理位置的内容分发
9 j$ ?7 s0 i2 I8 A网络(Content Delivery Network,CDN)节点。SimpleDB和DynamoDB是分布式表格系
7 ^9 f3 C$ I* S. r$ F" r统,支持对一张表格进行读写操作;RDS是分布式数据库,目前支持MySQL以及4 g5 l, \+ b( z( Z* V, k1 A& }
Oracle两种数据库。SQS主要用于支持多个任务之间的消息传递,解除任务之间的耦
" F6 r* e- Q. k) U" N& m( ^- p; J: C/ y合,相当于传统的消息中间件(Message Queue)。为了提高访问性能,可以使用
/ G2 s& o6 \/ l6 cElasticCache缓存存储系统中的热点数据。% P, M* \0 r2 E8 m/ s0 `
●工具支持:AWS支持多种开发语言,提供Java、Ruby、Python、PHP、Windows
4 A+ J5 E7 A# D. c$ k" ]# O&.NET以及Android和iOS的工具集。工具集中包含各种语言的SDK、程序自动部署
3 @1 V8 X6 S1 E4 }以及各种管理工具。另外,AWS通过CloudWatch系统提供丰富的监控功能。9 J' ^, w. e! ^% L; g" S
AWS平台引入了区域(Zone)的概念。区域分为两种:地理区域(Region
4 }& `' f* N3 l: n$ z5 r6 CZone)和可用区域(Availability Zone),其中地理区域是按照实际的地理位置划分
) |2 A. _- x3 B5 i5 F* O的,而可用区域一般是按照数据中心划分的。- W* ~4 f2 c) d) p. O# Y: H' q1 P, y
假设网站MyWebSite.com托管在AWS平台的某个可用区域中。AWS开发者将Web1 r. ?. L6 W O R
应用上传到AWS平台并部署到指定的EC2实例上。EC2实例一般分成多个自动扩展组2 n' X; D0 k9 b. }6 p0 e6 w
(Auto Scaling Group),并通过弹性负载均衡(Elastic Load Balancing)技术将访问
# C: t' G" }0 W/ D/ N& `请求自动分发到自动扩展组内的EC2实例。开发者的Web应用可以使用AWS平台上的2 n4 U# u- {( C; b) r
存储类服务,包括S3、SimpleDB、DynamoDB、RDS以及SQS。/ l- o$ A$ B4 w& q0 b3 ^: L/ o
网站上往往有一些大对象,比如图片、视频,这些大对象存储在S3系统中,并% l- H3 s7 c( u" M) o
通过内容分发技术缓存到多个CloudFront节点。当Internet用户浏览MyWebSite.com) S/ o) S9 g \4 Z6 }
时,可能会请求S3中的大对象,这样的请求将通过DNS按照一定的策略定位到9 X/ c2 d1 F$ k0 _7 \6 x( |
CloudFront节点。CloudFront首先在本地缓存节点查找对象,如果不存在,将请求源
9 N# b/ _' G8 X站获取S3中存储的对象数据,这一步操作称为回源。
2 y. ?4 S, J2 b5 ]12.5.2 Google云平台; k+ J/ x8 A) @* s Q4 N) L
Google云平台(Google App Engine,GAE)是一种PaaS服务,使得外部开发者可
8 g4 {# @, E+ n$ M以通过Google期望的方式使用它的基础设施服务,目前支持Python和Java两种语言。+ {1 `9 o# ~5 |8 t S5 b U7 ?
GAE虽然在产品上相比Amazon云平台还有较大的差距,但在技术上是成功的,尤其0 u( r. J6 v* D
适用于企业构建自己的企业私有云。GAE的整体架构如图12-5所示。
9 \) g- V+ U" [图 12-5 Google App Engine整体架构3 Z5 c) P+ u$ P$ f/ h+ g0 { M
GAE云平台主要包含如下几个部分:
+ T" r7 J0 S# X( p8 e; A1 g' D●前端服务器。前端的功能包括负载均衡以及路由。前端服务器将静态内容请求& d; m2 s N0 p) t6 T
转发到静态文件服务器,将动态内容请求转发到应用服务器。
: x! J+ S: _7 E f& F●应用服务器。应用服务器装载应用的代码并处理接收到的动态内容请求。
4 G/ i8 F+ j. M" N●应用管理节点(App Master)。调度应用服务器,将应用服务器的变化通知前( f* [' l4 b; d) I+ _& z: |' J3 L
端,从而前端可以将访问流量切换到正确的应用服务器。5 L: F- f; m6 g
●存储区。包括DataStore、MemCache以及BlobStore三个部分。应用的持久化数, t: t# i/ W0 _5 ^0 n, N( P
据主要存储在DataStore中,MemCache用于缓存,BlobStore是DataStore的一种补充,
) c9 M1 ?4 c: y F用于存储大对象。
) U4 n4 G) R! B1 }) m, p0 f$ _3 p●服务区。除了必备的应用服务器以及存储区之外,GAE还包含很多服务,比如
, l) [, J1 k( Q5 d9 Y N图像处理服务(Images)、邮件服务、抓取服务(URL fetch)、任务队列(Task% S W, S- l" E! e
Queue)以及用户服务(Users)等。7 u1 C% E0 b) M+ n1 J9 n
另外,作为PaaS服务,GAE还提供了如下两种工具:8 d7 I: G6 h' z3 f
●本地开发环境。GAE中大量采用私有API,因此专门提供了本地开发和调试的. K* L- R b3 Y. Y0 O: ]7 v
Sandbox环境以及SDK工具。
3 Q+ _4 U* V8 b, \: S●管理工具。GAE提供Web管理工具用于管理应用并监控应用的运行状态,比如
# r& I' ]2 B2 D( {- {0 F, k% _. Z资源消耗、应用日志等。+ d+ f5 c# V" T7 L" @
GAE的核心组件为应用服务器以及存储区,其中,应用服务器用于托管GAE平- a/ G( ~! g; Q! _& N" w3 J" D
台用户的应用程序,存储区提供云存储服务。下面分别介绍这两个部分。
! c$ H, @. }3 f( k& u, e' p1.应用服务器$ S" x8 |1 e0 C: b6 d% O4 w. u
GAE对外不提供虚拟机服务,因此,对于不同的开发语言,需要提供不同的应" z: [8 U+ `( ~5 h0 a2 S& F [8 ?
用服务器实现,目前支持Python和Java两种语言。每一台应用服务器可能运行多个
7 m! D% G* u8 l- z9 W+ y- c! X5 @GAE平台用户的应用,为了防止应用程序之间互相干扰,应用程序将在受限制的“沙
( ^5 z9 P! }& H) t6 ^. G0 C+ f盒”环境中运行。“沙盒”环境中的GAE应用程序无法执行以下操作:
# O% c% J# C X% ~●写入到本地文件系统。应用程序必须使用数据存储区来存储持久化数据。
2 F9 ]; J% ~3 @& @0 G" e4 m●打开套接字或者直接访问其他主机。应用程序必须使用网址提取服务(URL+ D( O! G9 N. r* w% o# b
Fetch)分别从端口80和443上的其他主机发出HTTP和HTTPS请求。
Z& l% h4 q. t# X8 d4 E+ `●生成子进程或者线程。应用程序的网络请求必须在单个线程中处理,并且必须
$ M! Q) H6 N( V6 m: ]5 e* v) [- n( J在几秒内完成,GAE会自动终止响应时间很长的进程以免应用服务器过载。
' h( G% l/ }/ o●进行其他类型的系统调用。
/ E2 d+ c3 ^% i: l4 c2.存储区9 a# A: r, t) y1 Q
Datastore是App Engine存储区的核心,底层为6.2节中介绍的Google Metastore系
A, t) r% H0 a3 V y g; d4 s统。与关系数据库最大的不同点在于,Datastore支持自动增加或者减少存储节点,提
; Y' M% M1 U) @- @% r$ j. Z7 t+ Z7 t h供线性扩展能力。App Engine直接将开源的Memcache用作缓存服务,缓存Datastore中" C4 m/ M% ^% z5 U& z; C' Z
的热点数据。Datastore不适合存储大对象(Blob对象),因此,App Engine设计了专( S' Z& T% s& H/ t8 X6 p& j- ~+ I
门的Blobstore用于支持大对象存储。, q, U5 Q% p) X! Q- O5 E9 z4 l
除了GAE平台,Google还单独提供了两种云存储服务,Google Cloud Storage以及2 r$ O8 {9 R0 M' O* e9 q0 B: o6 G
Google Cloud SQL。其中,Google Cloud Storage与Amazon S3类似,用于存储图片、9 r" r- n7 {" y
视频等大对象数据,Google Cloud SQL与Amazon RDS类似,用于提供分布式关系数
! {* h) O) E9 O# L据库服务。' ^: C% k$ ^9 K* e
12.5.3 Microsoft云平台
) L; p/ g4 H! k: r7 Z3 w3 [Windows Azure Platform是一个服务平台,用户利用该平台,通过互联网访问微
1 Z7 o* v' f1 a' \" i0 I) u7 X软数据中心的计算和存储服务,它不但支持传统的微软编程语言和开发平台,如C#7 Z! v, m: I7 R) T2 ~4 T
和.NET平台,还支持PHP、Python、Java等多种非微软编程语言和架构。
+ P( y, z+ }1 W- C3 h" v# k- rWindowsAzure平台包含如下几个部分。
1 P8 y5 y3 T% K/ N$ h/ M●计算服务
* u' r, g! O. Y) r/ xWindows Azure平台中每个计算实例是一个运行着64bit的Windows Server 2008的
6 G$ q; I3 g& N$ s7 l虚拟机,分为三种类型:Web Role实例,Worker Role实例和VM Role实例。其中,3 d" G& c9 M( r1 a$ x. k
Web Role实例提前在内部安装了IIS7,用于托管Azure平台用户的Web应用程序;& @ a5 ^' o. H, e7 M& p5 Q5 J! r
Worker Role实例设计用来运行各种各样的基于Windows的代码,例如,Worker Role8 K1 C) i4 h8 M7 Z0 {
实例可以运行一个模拟程序、进行视频处理等,Worker Role与Web Role的不同点在, q, l+ ]( r7 N/ O- c m+ p
于,Worker Role内部并没有安装IIS。一般来说,用户只会用到Web Role和Worker
& S: ]" m+ V3 o! ]: v4 E* W3 BRole。应用通过Web Role与用户相互作用,然后利用Worker Role进行任务处理。当- `9 J) K6 @: v3 Z1 ~) O3 @) r; Q
用户需要将本地的Windows Server应用移动到Windows Azure平台时,VM Role将会起
0 j. w0 N% `7 w. A作用。VM Role除了允许对环境拥有更多的控制权之外,它和Web Role以及Worker: F z+ o0 ]. g l
Role是没有区别的。与Amazon云平台需要用户提供虚拟机的虚拟映像文件不同的- f! E. p( t" T" T2 P0 z; X. T$ B
是,Azure平台会自动虚拟出虚拟机,处理虚拟机升级,Role实例故障,Azure平台用
& I- j8 n4 G- A# i/ g3 O户只需要专注于如何创建应用程序即可。
- O" u0 H5 T( d' [●存储服务
$ ?( v. C, e( }/ i9 ^Windows Azure存储服务包括Azure Blob,Table,Queue以及SQL Azure。其中,Azure; M; H7 w6 f8 M$ I; A
Blob存储二进制数据,如图片,照片,视频等个人文件。Azure Table存储更加结构化
* \( O0 u# {/ p的数据,支持单张表格上的操作,但是它不同于关系数据库系统中的二维关系表,* u3 ?4 j6 o5 G g, d: H
查询语言也不是大家熟悉的关系查询语言SQL。Azure Queue的作用和微软消息队列+ Q6 ^, `3 u2 E g- L- [% S
(MSMQ)相近,用来支持在Windows Azure应用程序组件之间进行通信。SQL Azure* {) D0 @ G+ u/ X9 s/ W5 H
则是将微软的关系数据库SQL Server搬到云环境中,提供二维关系表和SQL查询语! I2 l. @) T. Q. F
言。为了提高访问性能,Windows Azure还提供了两种缓存机制:Azure Caching以及
6 Y9 |/ q8 v1 J" D6 t IAzure内容分发网络(CDN)。Azure Caching在数据中心内部缓存热点数据,Azure, u" a* w# U' J; {. G/ A6 X
CDN在离用户较近的“边缘节点”缓存Azure Blob中的Blob对象。: U; V$ k) A9 t! m$ D0 y) Z
●连接服务
" J) J) c8 ], x( HWindows Azure连接服务包括Azure Service Bus以及Azure Connect。Azure Service
$ T6 M6 d; t9 `' c2 L$ Q5 gBus包含三个部分:Service Bus Queue,Service Bus Topic和Service Bus Relay。其中,
! b; c, l2 S8 ^. J+ KService Bus Queue和Service Bus Topic与消息中间件的Queue和Topic模式类似,用于解
, M8 B5 M" {6 o3 `/ G1 L! D除应用程序之间的耦合。Service Bus Queue提供点对点的通信,保证每个发送者产生5 K' ]& A; [2 u5 T6 c
的消息只被一个接收者获取;Service Bus Topic提供一对多的发布订阅通信,每个发3 T4 i: D+ O/ F- ?6 W* k
布者发布的消息能被所有的订阅者获取。Service Bus Relay使得Azure平台服务器端可, i6 s" W4 P/ ^) N: Q8 s( A
以访问运行在企业内部的本地WCF服务,这些WCF服务通常没有一个固定的IP地 K( {8 F$ H3 }6 t- C
址,而且被企业防火墙所保护。Azure Connect在Windows Azure应用和本地运行的机
! v1 I7 ~4 G) i$ Z& w器之间建立一个基于IPsec协议的连接,使得两者更容易结合起来使用。例如,某个' j' k4 F: ~, o
企业需要将现有的由ASP.NET创建的Windows Server应用移动到Windows Azure Web
% Y- P/ [$ J5 `9 ?1 n7 w9 T0 w3 K IRole中区,如果这个应用使用的数据库需要保留在本地机器上,那么Azure Connect技
, s8 ?4 k# }' j$ u. o6 T: ?术能够使运行在Windows Azure上的应用正常访问本地数据库,甚至连使用的连接字" F+ h+ Y/ j! ]( m/ {
符串都不需要改变。
/ y) C0 {% [) b9 h; K# T●工具支持) D/ O1 n& q. ^3 Q8 u2 t
Windows Azure平台不但支持传统的微软编程语言和开发平台如C#和.NET平台,
2 U5 w% M! \, w5 f! X* T还支持PHP、Python、Java、node.js等多种非微软编程语言和架构。Azure平台提供各9 d! [$ [& j {5 ~0 ?
种语言的SDK以及平台管理工具。
; d3 O# }5 e) a图12-6显示了Windows Azure Platform用于托管用户Web程序的整体架构。假设网1 r' l& a' _, q/ H7 e- _
站MyWebSite.com托管在Windows Azure平台的某个数据中心内。Azure平台开发者将
7 u% F: R& i$ Z/ D4 _7 NWeb应用上传到Azure平台,由平台将应用自动部署到Role实例上。在Azure内部,一
+ E/ ^3 i" g! Q; m/ O: L, U个应用可能运行在一个或者多个Role实例上,将运行同一个应用的Role实例成为一个5 A; I! B# K5 q n: i) @2 v
Role实例组,并通过负载均衡器将访问请求按照一定的策略自动分发到其中的Role实. t. d2 O) |, C! d7 ~, I
例。开发者的Web应用可以使用Azure平台上的存储类服务,包括Azure Blob、
8 n$ _; W3 W s K, f0 wTable、Queue以及SQL Azure。为了提高性能,应用也可以使用Azure Caching缓存热9 x' L$ } Y% s- O7 v7 x
点数据,就像使用Memcache一样。+ x0 k5 W1 }: P! @3 _/ k& p
图 12-6 Windows Azure Platform整体架构
' L9 U' A& ^0 f网站上往往有一些Blob对象,比如图片、视频,这些对象存储在Azure Blob系统
6 I2 w, {7 `; w1 I. A0 t4 o中,并通过内容分发技术缓存到多个Azure CDN节点。Internet用户访问) @" U/ Z8 E# ?2 o7 V2 `
MyWebSite.com中的Blob时,访问请求将通过DNS定位到CDN节点上,如果CDN缓存
/ Y! p1 F! L7 s4 A了Blob的副本,直接将副本返回给用户,否则,CDN节点将请求Azure源站中的Azure
7 a5 C# O$ k4 W' o' R5 f. }' TBlob存储系统获取Blob对象,这一步操作称为回源。, ?' v5 j6 |. n5 }: A( _1 s, z
12.5.4 云平台架构
?$ a6 }! `) a( ?; f从托管Web应用程序的角度看,云平台主要包括云存储以及应用运行平台,如图
! U, i1 I$ \/ e: r# G# Q7 x: [12-7所示。
+ v9 f1 t8 f6 _% i4 [, O9 ~图 12-7 云平台整体架构6 X) _; }* ~. K
云平台的核心组件包括:云存储组件和应用运行平台组件。下面简单介绍一
% B: i2 J1 y% l- p/ k下。
9 B: M8 `9 x/ }. @7 t1 [9 e' p(1)云存储组件- K1 K3 N, B6 d2 |: d% K" S( x
云存储组件包括两层:分布式存储层以及存储访问层。分布式存储层管理存储
8 K! V( |/ L1 j& z& k! H6 f6 ^4 R服务器集群,实现各个存储设备之间的协同工作,保证数据可靠性,对外屏蔽数据
/ a7 W- {3 G' d) A% z所在位置,数据迁移,数据复制,机器增减等变化,使得整个分布式系统看起来像
' W, w0 r* U. z# L4 L是一台服务器。分布式存储层是云存储系统的核心,也是整个云存储平台最难实现
# ^# g, f5 M$ x" s+ Q的部分。CDN节点将云存储系统中的热点数据缓存到离用户最近的位置,从而减少% _& a& q) {& W, v/ f+ z8 d
用户的访问延时并节约带宽。
" p& O6 x# _+ q' e) O5 K \) V% S存储访问层位于分布式存储层的上一层,该层的主要作用是将分布式存储层的 k0 {7 n7 R; V& g( a9 P b, l( R
客户端接口封装为WebService(基于RESTful,SOAP等协议)服务,另外,该层通过3 Z& F; x: [8 S' y8 U
调用公共服务实现用户认证,权限管理以及计费等功能。存储访问层不是必须的,- g: B) s0 V" G. l" ^9 W/ Y
云存储平台中的计算实例也可以直接通过客户端应用编程接口(API)访问分布式存
4 R z+ Z8 G/ U储层中的存储系统。6 c5 |) h, o4 B. D! W5 J
(2)应用运行平台组件
6 N* H }. @- g6 T应用运行平台的主体为计算实例,计算实例最主要的功能有两个:开发者的应# o- j) z$ u1 L: l
用程序运行环境以及离线任务处理。不同的云计算平台厂商的计算实例形式往往不
2 q: y Z8 }% S5 e) T同:AWS(Amazon Web Service)平台中的计算实例为Amazon的弹性计算(Elastic7 X2 Z* }" Q V* H$ f
Computing,EC2)虚拟机,它们既用于托管开发者的Web程序,又可用来执行Hadoop- ]3 \$ ?, g M% h4 r( v5 E
MapReduce计算或者图像以及视频转换等离线任务;GAE(Google App Engine)平台
! L' c( D5 W( B, T" o中的计算实例分为前端实例(Frontend Instance)以及后端实例(Backend Instance),
3 V9 K. A) c V6 B! U5 e其中,前端实例为GAE特有的Python、Java以及Go语言运行容器,用于托管开发者使( ^2 N" [8 R' u B# ]
用Python、Java或者Go语言开发的Web程序,后端实例执行运行时间较长的离线任! R2 [! R5 g M# D
务;微软的Azure平台(Windows Azure Platform)的计算实例为运行着一个64位的
# _7 [6 p; w- {7 vWindows Server 2008的虚拟机,分为Web Role、Worker Role以及VM Role三种角色,; j: r+ x: z f1 c+ W/ H, k1 F
其中,Web Role用于托管Web程序,Worker Role用于执行视频处理等离线计算任务。: i0 ]( G# T; s) S# W
多个计算实例构成一个计算实例组,当实例组中的某个实例出现故障时,能够
. x9 c$ i) o& }& s9 S自动将负载迁移到其他的实例,并且支持动态增加或者减少实例从而使得实例组的
6 M' \7 V. K5 @1 i# F( q3 c处理能力具有动态可伸缩性。运行平台的最前端是路由及负载均衡组件,它将用户
7 H) V( S) y' @6 y4 }: c- w) M1 W的请求按照一定的策略发送到合适的计算实例。
% q! ?% ?0 M- M0 c云存储平台还包含一些公共服务,这些基础服务由云存储组件及运行平台组件! v% m9 |2 U" C4 k9 T l" B
所共用,如下所示:* g/ F- Q1 R2 U& {& [
●消息服务。消息服务将执行流程异步化,用于应用程序解耦。计算实例一般分
" q1 ^! ?+ C8 o1 g为处理Web请求的前台实例以及处理离线任务的后台实例,在很多情况下,前台实例! `0 o* O/ F8 U! p( k
处理Web请求的过程中需要启动运行在后台的任务,这种需求可以通过消息服务实
( O6 d/ Z+ w3 U现。6 ^9 |0 S1 [6 o
●缓存服务。缓存服务用于存储云存储系统中的读多写少的热点数据,从而加速
3 o* P) ?6 `6 {" _" q& @查询,减少对后端存储系统压力。大多数云存储平台提供Memcache服务。
, n' k6 T) C( P# x1 u5 \: {8 |●用户管理。用户管理主要功能是用户身份认证,确保用户的身份合法,并存储
* f; c4 Z5 ^( z1 Y4 a. G& p$ U. X用户相关的个人信息。云计算平台一般支持单点登录,在多个应用系统中,用户只- G K$ P& v [4 Y# r; j
需要登录一次就可以访问所有相互信任的系统。
" H) t0 `7 E+ H# M) B% L●权限管理。为多个服务提供集中的权限控制,以确保应用和数据只能被有授权
" T7 r/ I1 G2 Q/ a的用户访问。云存储系统一般会维护一系列的访问策略,每一条策略表示某个用户
& x$ h5 U3 p4 u是否对某个资源具有某种操作权限。7 m; r$ O, {+ _0 }. }' p! [ `! y
●安全服务。安全服务包括Web漏洞检测,网页挂马检测,端口安全检测,入侵- r& x+ @! f3 g5 C! J7 a
检测,分布式拒绝服务攻击(Distributed Denial of Service,DDoS)缓解等。Web漏洞
! [* L: p: a4 F$ W: v检测提供对应用的SQL注入漏洞、XSS跨站脚本漏洞、文件包含等高危安全漏洞进行
2 N% k6 }3 a+ C' |& K0 u检测;网页挂马检测通过静态分析技术和虚拟机沙箱行为检测技术相结合,对网站+ w6 r- D; }2 T! T6 N- w
进行挂马检测;端口安全检测通过定期扫描服务器开放的高危端口,降低系统被入' q: I! k3 W% }0 G: k
侵的风险;主机入侵检测通过主机日志安全分析,实时侦测系统密码破解,异常IP3 G# E. t# u0 [0 F
登录等攻击行为并实时报警;DDos缓解技术能够抵御SYN flood以及其他拒绝服务攻
2 o$ Z1 D! ^$ j9 s& r1 a击。9 T, I2 ?5 l6 [7 G
●计费管理。利用底层的监控系统所采集的数据对每个用户使用的资源和服务进
$ z/ p: |/ M8 b2 Z2 x行统计,计算出用户的使用费用,并提供完善和详细的报表。云存储系统计费涉及7 v' }- D( n5 [; Z+ b
的参数一般包括:CPU时间,网络出口带宽,存储量以及服务调用次数(包括读写
& ^$ C8 B0 y) V i8 ~8 A) dAPI调用次数)。
- v, ?% l" F4 T( U; |* m* d●资源管理。管理云存储平台中的所有服务器资源,将应用程序或者虚拟机映射
% k) G, g. {3 \9 P- [9 n, g4 X: D自动部署到合适的计算实例,另外,自动调整计算实例的数量来帮助运行于其上的
! O* \5 y. T" D! ^( B. \- a应用更好地应对突发流量。当计算实例发生故障时,资源管理系统还需要通知前端; I0 p1 R. K' }* r
的负载均衡层,将流量切换到其他计算实例。
$ M" m- ~. f# A2 b●运维管理。云存储平台的运维需要做到自动化,从而降低运维成本,一般来
1 p9 A B4 x4 h0 |/ N说,有一套专门的Web运维系统用于系统上下线,批量升级系统程序版本等。
! |1 Q3 I& ^6 P& {! e●监控系统。监控系统有两个层面,其一是资源层面,即资源的运行情况,比如) d0 m$ m2 n* j. V/ ^6 G
CPU使用率、内存使用率和网络带宽利用率、Load值等,需要注意的是,云计算平
9 a( R6 p( W( p( J. E2 s台除了监控物理机资源,还需要监控虚拟机资源的运行情况;其二是应用层面,主
9 y# O! a8 a+ V要记录应用每次请求的响应时间、读写请求数等。- l7 f( s3 ~3 c
5 v3 Z$ {- H$ ?6 Y+ T8 W {; ~6 r6 K! B( ]% _
|
|