|
12.5 云平台整体架构( ^6 v6 a. T( p) n4 w
云存储是云计算的存储部分,理解云存储架构的前提是理解云平台整体架构。" A$ l" u3 H( W* E2 e6 s c' N
云计算按照服务类型大致可以分为三类:基础设施即服务(IaaS)、平台即服务
$ t w. X8 b8 X1 _) l& {/ W(PaaS)以及软件即服务(SaaS),如图12-3所示。+ ?6 D1 F9 X4 T1 ~/ W$ [! X
图 12-3 云计算服务类型! ^& u& r( T" }$ m, T5 M
IaaS将硬件设备等基础资源以虚拟机的形式封装成服务供用户使用,如Amazon
5 H2 T4 M, w: [8 c云计算AWS(Amazon Web Service)的弹性计算云EC2,PaaS进一步抽象硬件资源,% D" X5 ^+ B8 |; c. C- f
提供用户应用程序的运行环境,开发者只需要将应用程序提交给PaaS平台,PaaS平
O( e4 E. Y. w. n% h台会自动完成程序部署,处理服务器故障,扩容等问题,典型的如(Google App
- [1 B+ k0 L) |' x) iEngine)GAE。另外,微软的云计算平台Windows Azure Platform也可大致归入这一. L' W1 K' K8 q& o3 j P
类。SaaS的针对性更强,它将某些特定应用软件封转成服务,如Salesforce公司提供8 k8 K. J" v1 a4 T, k
的在线客户端管理CRM服务,Google的企业应用套件Google Apps等。
- m* T: j- Y8 J: |2 |& q. p) U本节首先分别介绍Amazon、Google以及Microsoft这三个云平台的整体架构,其: ]$ a( v$ z2 q3 r
中,Amazon提供IaaS服务,Google和Microsoft提供PaaS服务,接着介绍一般情况下云
1 J) C3 h6 y% n8 H! f% {平台的整体架构。: U2 j4 Y l2 O+ i: z9 v9 K1 k+ R
12.5.1 Amazon云平台9 l; q+ z/ V! T2 H
Amazon Web Services(AWS)是Amazon构建的一个云计算平台的总称,它提供
4 |" o5 H: f; Q$ M+ P- n了一系列云服务。通过这些服务,用户能否访问和使用Amazon的存储和计算基础设/ s9 A1 h" g: E6 M6 ?8 j
施。如图12-4所示,AWS平台分为如下几个部分:
- ?2 v, d5 z* e( E6 v7 O( v图 12-4 AWS平台整体架构; @9 J& m; f$ \& N. F. L
●计算类:核心产品为弹性计算云EC2(Elastic Computing)。EC2几乎可以认为
* j) b$ L6 P) J是迄今为止云计算领域最为成功的产品,通俗地讲,就是提供虚拟机,用户的应用
" Q5 e. Q6 a/ g! ?2 M! k; u程序部署在EC2实例中。EC2架构的核心是弹性伸缩,当托管的应用程序访问量变化( K# p' Q3 _- \
时能够自动增加或者减少EC2实例,并通过弹性负载均衡技术将访问请求分发到新增% x4 _& H. Z8 e5 r7 _% B6 y
的EC2实例上。在计费模式上,EC2按照使用量计费,而不是采用传统的预付费方$ n b% H; f: K' o2 u, z% Y, q0 S
式。EBS(Elastic Block Store)是一个分布式块设备,可以像本地的磁盘一样直接挂: B- s K; I. p, P
载在EC2实例上,与本地磁盘不同的是,保存到EBS的数据会由EBS的管理节点自动
; y0 @; D/ r' b+ X0 E/ e1 u7 U3 M复制到多个存储节点上。EC2实例的本地存储是不可靠的,如果EC2实例出现故障,+ A5 U, R' F9 M4 _9 I0 w
本地存储上保存的数据将会丢失,而保存到EBS上的数据不会丢失。EBS用于替代( _7 {7 c! d2 B8 N- i
EC2实例的本地存储,从而增强EC2可靠性。) @. ?% ]$ S' S& K$ b, S$ \
●存储类:存储类产品较多,包括简单对象存储S3,表格存储系统SimpleDB、
; F9 P; k9 K! q) O- @DynamoDB、分布式关系数据库服务(Relational Datastore Service,RDS)以及简单消
, B. P" Y ?! J7 l' c6 o5 `息存储(Simple Queue Service,SQS)。S3用于存储图片、照片、视频等大对象,为( n' x6 D0 h; x0 M% G
了提高访问性能,S3中的对象还能够通过CloudFront缓存到不同地理位置的内容分发3 g. S! Q% `! v( Q( D- \
网络(Content Delivery Network,CDN)节点。SimpleDB和DynamoDB是分布式表格系, @# B3 W- L0 {
统,支持对一张表格进行读写操作;RDS是分布式数据库,目前支持MySQL以及# s7 v3 }& O! L+ c, I/ m
Oracle两种数据库。SQS主要用于支持多个任务之间的消息传递,解除任务之间的耦
& P, x8 t" p; k$ _: L) `合,相当于传统的消息中间件(Message Queue)。为了提高访问性能,可以使用5 y* S( r5 E- h* r3 ^9 \ l7 f
ElasticCache缓存存储系统中的热点数据。: U5 v1 Q1 u# }5 e
●工具支持:AWS支持多种开发语言,提供Java、Ruby、Python、PHP、Windows
- J# O a2 p4 y( g6 K&.NET以及Android和iOS的工具集。工具集中包含各种语言的SDK、程序自动部署
( ]) x6 h7 q2 R. o以及各种管理工具。另外,AWS通过CloudWatch系统提供丰富的监控功能。! z3 J. S8 t: u
AWS平台引入了区域(Zone)的概念。区域分为两种:地理区域(Region
, `) P0 E) Z6 S6 L7 ?- HZone)和可用区域(Availability Zone),其中地理区域是按照实际的地理位置划分
5 Y9 G9 \' Q+ C8 d7 W4 w的,而可用区域一般是按照数据中心划分的。
# S" `4 _7 v% u; x假设网站MyWebSite.com托管在AWS平台的某个可用区域中。AWS开发者将Web
4 \1 x1 F# Y* K2 M6 d4 W" v" R应用上传到AWS平台并部署到指定的EC2实例上。EC2实例一般分成多个自动扩展组
9 S% N9 H/ U3 S8 [' E* x4 _(Auto Scaling Group),并通过弹性负载均衡(Elastic Load Balancing)技术将访问
3 `% J+ _0 ^1 i7 o请求自动分发到自动扩展组内的EC2实例。开发者的Web应用可以使用AWS平台上的
9 b6 d- \4 l. z6 u% m2 M& r' S) u存储类服务,包括S3、SimpleDB、DynamoDB、RDS以及SQS。: [. C9 z# a, t2 H5 U* c+ G
网站上往往有一些大对象,比如图片、视频,这些大对象存储在S3系统中,并7 U) {. G0 [, n: R# X
通过内容分发技术缓存到多个CloudFront节点。当Internet用户浏览MyWebSite.com
7 I" y! n1 X/ a7 m时,可能会请求S3中的大对象,这样的请求将通过DNS按照一定的策略定位到
5 T+ r& ^1 m4 b) i1 T. ECloudFront节点。CloudFront首先在本地缓存节点查找对象,如果不存在,将请求源
2 V0 J1 z0 K( l* f. n站获取S3中存储的对象数据,这一步操作称为回源。
! S" v: b% F! `* |) c12.5.2 Google云平台( J, C! l' n6 _! h
Google云平台(Google App Engine,GAE)是一种PaaS服务,使得外部开发者可
0 n m+ h0 y% `' j8 |$ J以通过Google期望的方式使用它的基础设施服务,目前支持Python和Java两种语言。+ u1 U3 H$ J$ I! o! h6 `. e
GAE虽然在产品上相比Amazon云平台还有较大的差距,但在技术上是成功的,尤其
3 v- z+ S. [$ V( Y# U8 j* T适用于企业构建自己的企业私有云。GAE的整体架构如图12-5所示。
% \1 k2 ]+ }- V0 R图 12-5 Google App Engine整体架构
* ^( t2 \3 I9 b* ]; O, V5 hGAE云平台主要包含如下几个部分:
/ K3 M1 Q. w( ^9 D9 E w●前端服务器。前端的功能包括负载均衡以及路由。前端服务器将静态内容请求+ e3 v: e* p: P2 I
转发到静态文件服务器,将动态内容请求转发到应用服务器。
8 Q# f& O; I9 X! f9 q1 G3 g! R●应用服务器。应用服务器装载应用的代码并处理接收到的动态内容请求。6 d/ l. |; y3 `5 T7 h# k0 O5 i4 W
●应用管理节点(App Master)。调度应用服务器,将应用服务器的变化通知前
! M, \5 }/ ~4 P) ]) h端,从而前端可以将访问流量切换到正确的应用服务器。" S1 q; n, w1 F' M" }) A
●存储区。包括DataStore、MemCache以及BlobStore三个部分。应用的持久化数
7 e/ @* z0 X2 \4 d据主要存储在DataStore中,MemCache用于缓存,BlobStore是DataStore的一种补充,
. B7 q# `' i+ y. b4 a用于存储大对象。
, s6 R) g$ u$ Z7 d6 V$ P+ W●服务区。除了必备的应用服务器以及存储区之外,GAE还包含很多服务,比如
7 e7 Y: O, x0 G" u8 z图像处理服务(Images)、邮件服务、抓取服务(URL fetch)、任务队列(Task0 @/ p8 w4 B$ Z0 ^! e$ N& f) e
Queue)以及用户服务(Users)等。. c. E! T2 K# x; o) p
另外,作为PaaS服务,GAE还提供了如下两种工具:, ^4 |; s9 h5 R4 |6 j
●本地开发环境。GAE中大量采用私有API,因此专门提供了本地开发和调试的
6 I/ O9 M* S+ A: J" kSandbox环境以及SDK工具。
( z5 r8 c7 U/ ]% }! X: ^●管理工具。GAE提供Web管理工具用于管理应用并监控应用的运行状态,比如
" l7 K/ X# i6 a+ O, w: h- U8 Q$ s资源消耗、应用日志等。
N% O, [! g( f2 bGAE的核心组件为应用服务器以及存储区,其中,应用服务器用于托管GAE平 |" Z& Z9 |% b4 S9 ?8 t
台用户的应用程序,存储区提供云存储服务。下面分别介绍这两个部分。4 K9 J5 A: k# Z1 f% \ L) q: [
1.应用服务器 ?0 y4 C. T3 g, i' U( d
GAE对外不提供虚拟机服务,因此,对于不同的开发语言,需要提供不同的应# `. `1 a+ K" c, S, N, ^
用服务器实现,目前支持Python和Java两种语言。每一台应用服务器可能运行多个
6 t9 D- B% H) W0 K* DGAE平台用户的应用,为了防止应用程序之间互相干扰,应用程序将在受限制的“沙0 u" s3 S' i3 S3 X. x' `# f
盒”环境中运行。“沙盒”环境中的GAE应用程序无法执行以下操作:3 h1 L/ [7 b; c0 F% r
●写入到本地文件系统。应用程序必须使用数据存储区来存储持久化数据。
. }$ X$ C) L. l( V: T1 {●打开套接字或者直接访问其他主机。应用程序必须使用网址提取服务(URL
2 j& [1 P5 l1 E; m% WFetch)分别从端口80和443上的其他主机发出HTTP和HTTPS请求。
: l0 f, @# ^9 Y●生成子进程或者线程。应用程序的网络请求必须在单个线程中处理,并且必须
; e" z" ]( a2 L! d. q; G在几秒内完成,GAE会自动终止响应时间很长的进程以免应用服务器过载。
' i) a: o+ i" p; W5 k; W- L●进行其他类型的系统调用。
0 c/ t0 V! q! P: N2.存储区
6 y' P4 z, N9 Z! t9 _Datastore是App Engine存储区的核心,底层为6.2节中介绍的Google Metastore系
: g6 g' e$ y: t; Q8 [统。与关系数据库最大的不同点在于,Datastore支持自动增加或者减少存储节点,提3 Z: g3 E" Z1 W1 Y) O* G
供线性扩展能力。App Engine直接将开源的Memcache用作缓存服务,缓存Datastore中7 a5 R$ C- }1 P
的热点数据。Datastore不适合存储大对象(Blob对象),因此,App Engine设计了专
* {( l, Y7 o; i% ^( F' L2 m门的Blobstore用于支持大对象存储。
~% G, D) U; ], T) ?除了GAE平台,Google还单独提供了两种云存储服务,Google Cloud Storage以及
6 G: Z% `7 ~& o$ IGoogle Cloud SQL。其中,Google Cloud Storage与Amazon S3类似,用于存储图片、+ _# [# y. J- E2 k% t2 N
视频等大对象数据,Google Cloud SQL与Amazon RDS类似,用于提供分布式关系数
# J' O- x0 _/ u, o i& L4 p据库服务。' s7 y+ \( \6 M" @& e5 f1 P
12.5.3 Microsoft云平台
8 u' G& J% w0 f/ EWindows Azure Platform是一个服务平台,用户利用该平台,通过互联网访问微 R' q* x4 L7 e& H9 h' e; E
软数据中心的计算和存储服务,它不但支持传统的微软编程语言和开发平台,如C#
& h: y% b* r( I# l$ w& ?8 S和.NET平台,还支持PHP、Python、Java等多种非微软编程语言和架构。! P( B/ h/ ~, j) T( Q/ G% h
WindowsAzure平台包含如下几个部分。% b/ n3 q' x! C6 ~! V! V' o
●计算服务+ O# A( l5 Z I6 m/ J6 H: [0 W
Windows Azure平台中每个计算实例是一个运行着64bit的Windows Server 2008的- @+ k' ^7 }8 G2 ~ u
虚拟机,分为三种类型:Web Role实例,Worker Role实例和VM Role实例。其中,
; s9 p# l! ?+ `% G) FWeb Role实例提前在内部安装了IIS7,用于托管Azure平台用户的Web应用程序;* }: ]* W c# |( ^" i' U
Worker Role实例设计用来运行各种各样的基于Windows的代码,例如,Worker Role
+ g) q9 l( b) W4 Z2 m; Q. t/ B实例可以运行一个模拟程序、进行视频处理等,Worker Role与Web Role的不同点在
( @+ Y4 k/ G# x0 [( d. R. v于,Worker Role内部并没有安装IIS。一般来说,用户只会用到Web Role和Worker
7 r2 t H8 ]7 A8 w) r4 n8 dRole。应用通过Web Role与用户相互作用,然后利用Worker Role进行任务处理。当
" u; B! U/ \* a7 i" [用户需要将本地的Windows Server应用移动到Windows Azure平台时,VM Role将会起; q6 E5 n( [7 P) \6 V; c0 x
作用。VM Role除了允许对环境拥有更多的控制权之外,它和Web Role以及Worker; [0 w+ G0 w( v/ D5 W% ]$ N
Role是没有区别的。与Amazon云平台需要用户提供虚拟机的虚拟映像文件不同的
+ p; y r$ ^- `$ t1 I$ @是,Azure平台会自动虚拟出虚拟机,处理虚拟机升级,Role实例故障,Azure平台用
% D, D- B& {" S v; J4 P户只需要专注于如何创建应用程序即可。1 _7 u' g: m E
●存储服务1 H1 H# x2 X6 x" ^
Windows Azure存储服务包括Azure Blob,Table,Queue以及SQL Azure。其中,Azure: d5 h) i- l9 j; o
Blob存储二进制数据,如图片,照片,视频等个人文件。Azure Table存储更加结构化
* V9 H" W& x% t的数据,支持单张表格上的操作,但是它不同于关系数据库系统中的二维关系表,
5 C% o8 h5 U5 w5 [& F7 s查询语言也不是大家熟悉的关系查询语言SQL。Azure Queue的作用和微软消息队列8 q; I5 Z4 m, i! w4 s1 T8 c5 z# n
(MSMQ)相近,用来支持在Windows Azure应用程序组件之间进行通信。SQL Azure8 A$ Q. H D5 Y
则是将微软的关系数据库SQL Server搬到云环境中,提供二维关系表和SQL查询语& Y, V; ]# \- {+ _1 G3 o5 U
言。为了提高访问性能,Windows Azure还提供了两种缓存机制:Azure Caching以及
. l3 j; Y8 t7 JAzure内容分发网络(CDN)。Azure Caching在数据中心内部缓存热点数据,Azure
8 B; ]7 U, F' X/ T3 U8 O/ q- BCDN在离用户较近的“边缘节点”缓存Azure Blob中的Blob对象。
# ]$ F* C& J, @7 u. w$ P- C) E●连接服务
; T) z: K0 K+ c' UWindows Azure连接服务包括Azure Service Bus以及Azure Connect。Azure Service) O# `( v1 I5 t+ H& D0 }2 j
Bus包含三个部分:Service Bus Queue,Service Bus Topic和Service Bus Relay。其中,
. y& |0 O/ v6 T1 _1 u# }Service Bus Queue和Service Bus Topic与消息中间件的Queue和Topic模式类似,用于解6 k" x$ N+ m8 @" | k$ h5 }; `0 V
除应用程序之间的耦合。Service Bus Queue提供点对点的通信,保证每个发送者产生( p' F0 Q! d$ E
的消息只被一个接收者获取;Service Bus Topic提供一对多的发布订阅通信,每个发
5 g S1 @4 _5 V9 X) ?. i. i3 G布者发布的消息能被所有的订阅者获取。Service Bus Relay使得Azure平台服务器端可
5 N' n* T% l+ N% s5 V9 J/ i3 z/ W以访问运行在企业内部的本地WCF服务,这些WCF服务通常没有一个固定的IP地& l1 j) l" T) b8 B
址,而且被企业防火墙所保护。Azure Connect在Windows Azure应用和本地运行的机4 m. s o8 e: e6 ?4 E
器之间建立一个基于IPsec协议的连接,使得两者更容易结合起来使用。例如,某个
( u% Q! R- `! M: [4 p2 `企业需要将现有的由ASP.NET创建的Windows Server应用移动到Windows Azure Web) [8 D9 `2 C' W2 t6 T2 C( a
Role中区,如果这个应用使用的数据库需要保留在本地机器上,那么Azure Connect技1 u- y W: C7 x) P( t
术能够使运行在Windows Azure上的应用正常访问本地数据库,甚至连使用的连接字" g/ R# n; r1 ?, h
符串都不需要改变。% f# y5 \. {% `6 B& |/ m3 R; c
●工具支持0 x* ~3 D2 M" a& M* O- Z3 M' n
Windows Azure平台不但支持传统的微软编程语言和开发平台如C#和.NET平台,* X2 |. z, Q; E* i/ r
还支持PHP、Python、Java、node.js等多种非微软编程语言和架构。Azure平台提供各
& V% ]/ v4 D& N. \种语言的SDK以及平台管理工具。0 [, M( _9 `7 Z
图12-6显示了Windows Azure Platform用于托管用户Web程序的整体架构。假设网" c8 o& d; A/ a! Z0 {
站MyWebSite.com托管在Windows Azure平台的某个数据中心内。Azure平台开发者将
% y) ] Z2 ?. L+ j/ l7 Q+ SWeb应用上传到Azure平台,由平台将应用自动部署到Role实例上。在Azure内部,一6 D3 p* I2 ~. z" J8 n
个应用可能运行在一个或者多个Role实例上,将运行同一个应用的Role实例成为一个 t1 H$ _9 w D& P% G* v. j
Role实例组,并通过负载均衡器将访问请求按照一定的策略自动分发到其中的Role实
: Q: ?4 h* n" ^+ H; n9 o例。开发者的Web应用可以使用Azure平台上的存储类服务,包括Azure Blob、
& q$ s/ h; j) Q \8 LTable、Queue以及SQL Azure。为了提高性能,应用也可以使用Azure Caching缓存热" {9 A# [/ D) e3 P
点数据,就像使用Memcache一样。
2 `- P# O; s' g+ A; S1 r图 12-6 Windows Azure Platform整体架构8 v' d: ]. Y" B. i7 l8 i
网站上往往有一些Blob对象,比如图片、视频,这些对象存储在Azure Blob系统
0 s: g7 [8 `2 b. r5 _% ]中,并通过内容分发技术缓存到多个Azure CDN节点。Internet用户访问
2 J& N/ R- l. YMyWebSite.com中的Blob时,访问请求将通过DNS定位到CDN节点上,如果CDN缓存
4 t4 @, E% P" {4 |* }% n3 o了Blob的副本,直接将副本返回给用户,否则,CDN节点将请求Azure源站中的Azure
8 c7 a+ A# H4 R* M' SBlob存储系统获取Blob对象,这一步操作称为回源。- d1 D! S3 i4 M" i. Q3 V
12.5.4 云平台架构" w8 A% `0 f/ [1 U
从托管Web应用程序的角度看,云平台主要包括云存储以及应用运行平台,如图
* R2 g$ k( T+ d$ s5 ~. E+ L; B12-7所示。5 E/ @+ O7 e, D" R
图 12-7 云平台整体架构; i; V7 c- o+ {' i& Y1 b
云平台的核心组件包括:云存储组件和应用运行平台组件。下面简单介绍一# `# Q3 S% c: N
下。1 C9 D# y% w1 J8 a' N
(1)云存储组件
) R! Z% s5 @" Q+ T/ I, Z云存储组件包括两层:分布式存储层以及存储访问层。分布式存储层管理存储: w# f: E9 L$ y# [1 X+ E3 O
服务器集群,实现各个存储设备之间的协同工作,保证数据可靠性,对外屏蔽数据
: l' i* c3 l4 x/ r4 z- V0 X5 u0 Z所在位置,数据迁移,数据复制,机器增减等变化,使得整个分布式系统看起来像4 _6 @* e$ |. o& H s4 d+ M/ N
是一台服务器。分布式存储层是云存储系统的核心,也是整个云存储平台最难实现6 m1 c+ H# p$ ~. p4 x
的部分。CDN节点将云存储系统中的热点数据缓存到离用户最近的位置,从而减少
5 C" x( y4 ?8 T1 b" v用户的访问延时并节约带宽。1 F3 S7 H1 s8 L% x3 ?' ?5 K
存储访问层位于分布式存储层的上一层,该层的主要作用是将分布式存储层的! E. d, F: J* H5 u* R: p- q
客户端接口封装为WebService(基于RESTful,SOAP等协议)服务,另外,该层通过( g& k5 T9 x0 n
调用公共服务实现用户认证,权限管理以及计费等功能。存储访问层不是必须的,
0 b( L4 r" n& y7 a* y云存储平台中的计算实例也可以直接通过客户端应用编程接口(API)访问分布式存- E C5 ~0 w- w, h9 @; ]( U- {
储层中的存储系统。' J; @) I0 e, j. I2 F
(2)应用运行平台组件
6 e7 k3 w z) l l+ H2 X应用运行平台的主体为计算实例,计算实例最主要的功能有两个:开发者的应
# A& w' e w1 C+ d% b5 [7 n用程序运行环境以及离线任务处理。不同的云计算平台厂商的计算实例形式往往不
1 V6 k7 F* {/ _2 U1 E2 R同:AWS(Amazon Web Service)平台中的计算实例为Amazon的弹性计算(Elastic
( C7 v: C5 ^; f6 f+ j+ D# hComputing,EC2)虚拟机,它们既用于托管开发者的Web程序,又可用来执行Hadoop
- q. G+ X" o' a/ B/ q- z, OMapReduce计算或者图像以及视频转换等离线任务;GAE(Google App Engine)平台
) t: I" g: e3 E9 p9 E2 P, ~# @中的计算实例分为前端实例(Frontend Instance)以及后端实例(Backend Instance),
! R+ H0 c7 _6 R/ y9 g其中,前端实例为GAE特有的Python、Java以及Go语言运行容器,用于托管开发者使7 H; s* N* O' n+ m% t9 o
用Python、Java或者Go语言开发的Web程序,后端实例执行运行时间较长的离线任
5 {( f5 f; d3 I8 |" v- p务;微软的Azure平台(Windows Azure Platform)的计算实例为运行着一个64位的
X6 z8 C6 S9 L, ~# c( E& j% m9 D9 CWindows Server 2008的虚拟机,分为Web Role、Worker Role以及VM Role三种角色,
% V( a6 R4 K8 g4 S" \5 o- Q- `$ a其中,Web Role用于托管Web程序,Worker Role用于执行视频处理等离线计算任务。
5 ~7 r! v& @% y. g0 g" u2 y3 B多个计算实例构成一个计算实例组,当实例组中的某个实例出现故障时,能够
0 k _& L! U( h- j& V自动将负载迁移到其他的实例,并且支持动态增加或者减少实例从而使得实例组的1 l: R3 P1 \5 F: y" {0 P0 m. z4 G
处理能力具有动态可伸缩性。运行平台的最前端是路由及负载均衡组件,它将用户! S; x+ f% F b, r. Z% ]
的请求按照一定的策略发送到合适的计算实例。
3 t' e, Q3 B* {" {云存储平台还包含一些公共服务,这些基础服务由云存储组件及运行平台组件
" [4 |' K/ t/ w5 X6 r5 W. l4 Q所共用,如下所示:
! o- b* V, Q' U, {3 l●消息服务。消息服务将执行流程异步化,用于应用程序解耦。计算实例一般分
# c' p% Z& `3 s4 S* q. ~为处理Web请求的前台实例以及处理离线任务的后台实例,在很多情况下,前台实例& t6 O" g/ e" \% D% J
处理Web请求的过程中需要启动运行在后台的任务,这种需求可以通过消息服务实* \ x" ?) h4 W$ R' a5 Y: }
现。) l: o- I, i2 y9 {2 g }* ?
●缓存服务。缓存服务用于存储云存储系统中的读多写少的热点数据,从而加速3 R6 E( {) Z4 ?' h+ b
查询,减少对后端存储系统压力。大多数云存储平台提供Memcache服务。5 m& b7 P3 P7 c$ x
●用户管理。用户管理主要功能是用户身份认证,确保用户的身份合法,并存储) D" ^- x) z1 _ {9 W) K0 d
用户相关的个人信息。云计算平台一般支持单点登录,在多个应用系统中,用户只
1 H* l" i8 {$ L- O7 d/ _需要登录一次就可以访问所有相互信任的系统。) V* p. |( y. Y+ e+ V
●权限管理。为多个服务提供集中的权限控制,以确保应用和数据只能被有授权
9 \# m) |4 p- q8 W3 ~的用户访问。云存储系统一般会维护一系列的访问策略,每一条策略表示某个用户
8 E h. @& f* D4 H- i! O8 r; ^是否对某个资源具有某种操作权限。
5 j% T: ?' F* M1 q3 v) ]7 i●安全服务。安全服务包括Web漏洞检测,网页挂马检测,端口安全检测,入侵
7 K2 D+ u" M6 d) ]* Z检测,分布式拒绝服务攻击(Distributed Denial of Service,DDoS)缓解等。Web漏洞7 ?% r8 Y) Y" u: F- I" Z
检测提供对应用的SQL注入漏洞、XSS跨站脚本漏洞、文件包含等高危安全漏洞进行2 @/ z) G; [5 S6 |- u/ k: V
检测;网页挂马检测通过静态分析技术和虚拟机沙箱行为检测技术相结合,对网站4 m2 X0 g3 a; ?; B, D0 z7 ]( D W
进行挂马检测;端口安全检测通过定期扫描服务器开放的高危端口,降低系统被入" Z" |7 O( A1 @5 a1 g4 j
侵的风险;主机入侵检测通过主机日志安全分析,实时侦测系统密码破解,异常IP
$ _+ Y9 c6 R. l- _登录等攻击行为并实时报警;DDos缓解技术能够抵御SYN flood以及其他拒绝服务攻
" S; e9 ]; x" \. `* G. ?击。! `1 X. [# J9 ~: t
●计费管理。利用底层的监控系统所采集的数据对每个用户使用的资源和服务进+ |7 J; E0 R4 G9 Q, q* T2 r
行统计,计算出用户的使用费用,并提供完善和详细的报表。云存储系统计费涉及
. h4 _, [7 U+ ~" F8 P的参数一般包括:CPU时间,网络出口带宽,存储量以及服务调用次数(包括读写5 E- U4 M' p, ~5 y
API调用次数)。. \* R: Z" `0 ?" @3 |1 I
●资源管理。管理云存储平台中的所有服务器资源,将应用程序或者虚拟机映射
& v# M _4 _9 A自动部署到合适的计算实例,另外,自动调整计算实例的数量来帮助运行于其上的
( Q: p8 k* {6 u3 q& |. Y) m应用更好地应对突发流量。当计算实例发生故障时,资源管理系统还需要通知前端* B8 a% ^4 L3 I5 a$ X# W
的负载均衡层,将流量切换到其他计算实例。
# u: F4 g0 B4 v$ G% \●运维管理。云存储平台的运维需要做到自动化,从而降低运维成本,一般来
2 G4 I# @( r* x% h说,有一套专门的Web运维系统用于系统上下线,批量升级系统程序版本等。
0 y# d+ ]" L0 v, L. ]0 A1 ?●监控系统。监控系统有两个层面,其一是资源层面,即资源的运行情况,比如) f8 P T- y" N. s0 A$ r
CPU使用率、内存使用率和网络带宽利用率、Load值等,需要注意的是,云计算平
4 V7 @7 m# f! @, j0 _" V1 n台除了监控物理机资源,还需要监控虚拟机资源的运行情况;其二是应用层面,主
+ O7 m; |9 I' y0 G5 f" }要记录应用每次请求的响应时间、读写请求数等。% Z- @$ N! B. m4 j7 B: i
9 a5 ], d; V* J: Y/ G
! u% ]8 z' E; P |
|