java自学网VIP

Java自学网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2756|回复: 0

《大规模分布式存储系统》第12章 云存储【12.5】

[复制链接]
  • TA的每日心情
    开心
    2021-5-25 00:00
  • 签到天数: 1917 天

    [LV.Master]出神入化

    2096

    主题

    3754

    帖子

    6万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    66788

    宣传达人突出贡献优秀版主荣誉管理论坛元老

    发表于 2017-3-16 16:09:57 | 显示全部楼层 |阅读模式
    12.5 云平台整体架构% F# l4 D1 g) A' Y
    云存储是云计算的存储部分,理解云存储架构的前提是理解云平台整体架构。: A8 \) F2 C1 {! ?& h8 l  e
    云计算按照服务类型大致可以分为三类:基础设施即服务(IaaS)、平台即服务
    & }7 O; y  q2 L( u4 ](PaaS)以及软件即服务(SaaS),如图12-3所示。0 |! E7 l1 i* S% R% n' v- u- w
    图 12-3 云计算服务类型
    8 C; s2 I( Y1 GIaaS将硬件设备等基础资源以虚拟机的形式封装成服务供用户使用,如Amazon$ o3 C& ]" P, C7 [/ g1 H
    云计算AWS(Amazon Web Service)的弹性计算云EC2,PaaS进一步抽象硬件资源,
    ! F% v5 i, K% N4 [0 K4 v- |提供用户应用程序的运行环境,开发者只需要将应用程序提交给PaaS平台,PaaS平/ i5 S* i2 u' M5 G! B
    台会自动完成程序部署,处理服务器故障,扩容等问题,典型的如(Google App
    6 v, z* S# U7 r$ G7 G+ }Engine)GAE。另外,微软的云计算平台Windows Azure Platform也可大致归入这一+ j6 V. V* y, m0 f+ H6 w: R
    类。SaaS的针对性更强,它将某些特定应用软件封转成服务,如Salesforce公司提供6 I5 s1 O3 g" B3 C& h$ b3 G5 x
    的在线客户端管理CRM服务,Google的企业应用套件Google Apps等。. e  w2 g- F; @2 {8 p
    本节首先分别介绍Amazon、Google以及Microsoft这三个云平台的整体架构,其: J! ~- |! X% r# I' @; r
    中,Amazon提供IaaS服务,Google和Microsoft提供PaaS服务,接着介绍一般情况下云
    & o- I! V  ?" x1 T平台的整体架构。9 }# n5 K( N+ Q
    12.5.1 Amazon云平台
    + l. \: }- u; ], h- `3 PAmazon Web Services(AWS)是Amazon构建的一个云计算平台的总称,它提供
    , D0 d. f3 g' S: U了一系列云服务。通过这些服务,用户能否访问和使用Amazon的存储和计算基础设
    / h1 L9 ~, w4 q" t8 U施。如图12-4所示,AWS平台分为如下几个部分:
    - y3 Z  f* c. I5 y1 K- n图 12-4 AWS平台整体架构* m3 _/ P3 g6 _6 o+ u
    ●计算类:核心产品为弹性计算云EC2(Elastic Computing)。EC2几乎可以认为& K: {/ M2 e$ N
    是迄今为止云计算领域最为成功的产品,通俗地讲,就是提供虚拟机,用户的应用) C: x- j7 q/ x$ h( u
    程序部署在EC2实例中。EC2架构的核心是弹性伸缩,当托管的应用程序访问量变化4 m' }7 @0 d: r6 |
    时能够自动增加或者减少EC2实例,并通过弹性负载均衡技术将访问请求分发到新增9 K# U" o0 A7 N3 Q0 I- D4 e
    的EC2实例上。在计费模式上,EC2按照使用量计费,而不是采用传统的预付费方
    - V, F+ l# e3 B式。EBS(Elastic Block Store)是一个分布式块设备,可以像本地的磁盘一样直接挂( Q+ T; Q. a& J$ J
    载在EC2实例上,与本地磁盘不同的是,保存到EBS的数据会由EBS的管理节点自动7 N- t; ?  ~" O3 V) _# E5 S7 q' `3 D* `* b
    复制到多个存储节点上。EC2实例的本地存储是不可靠的,如果EC2实例出现故障,
    + C9 F5 U' S  t* [2 n本地存储上保存的数据将会丢失,而保存到EBS上的数据不会丢失。EBS用于替代
    ( \1 ]+ c& l) @EC2实例的本地存储,从而增强EC2可靠性。
    ! h. V% r0 t* j●存储类:存储类产品较多,包括简单对象存储S3,表格存储系统SimpleDB、
    " @" c$ j6 r2 v, _& {/ H: x% j8 VDynamoDB、分布式关系数据库服务(Relational Datastore Service,RDS)以及简单消8 v$ g; Y( H/ C9 X" i
    息存储(Simple Queue Service,SQS)。S3用于存储图片、照片、视频等大对象,为5 n2 K6 w! l# M) M* o
    了提高访问性能,S3中的对象还能够通过CloudFront缓存到不同地理位置的内容分发. l6 ^: S( E! u
    网络(Content Delivery Network,CDN)节点。SimpleDB和DynamoDB是分布式表格系* V9 X; g) D. [5 w  R
    统,支持对一张表格进行读写操作;RDS是分布式数据库,目前支持MySQL以及
    & V% \. V2 J8 l6 @- v* v- D9 hOracle两种数据库。SQS主要用于支持多个任务之间的消息传递,解除任务之间的耦
    8 E5 l; r) A" V' U% N2 I合,相当于传统的消息中间件(Message Queue)。为了提高访问性能,可以使用
    , c6 u  q. o+ e" i; j5 XElasticCache缓存存储系统中的热点数据。
    3 ?* _6 j' l+ R6 s2 ~& {- g* G●工具支持:AWS支持多种开发语言,提供Java、Ruby、Python、PHP、Windows' a( c2 s$ d4 |4 X8 j
    &.NET以及Android和iOS的工具集。工具集中包含各种语言的SDK、程序自动部署+ b0 v  H2 N2 c6 Z6 J+ g, R
    以及各种管理工具。另外,AWS通过CloudWatch系统提供丰富的监控功能。
    . P  }, h% b; Y! ]& _AWS平台引入了区域(Zone)的概念。区域分为两种:地理区域(Region
    " L: j) t, f: d( z/ {! DZone)和可用区域(Availability Zone),其中地理区域是按照实际的地理位置划分
    ) ^: a. }2 I- M9 D9 @7 ^; u& O的,而可用区域一般是按照数据中心划分的。; y+ y9 h. D* }
    假设网站MyWebSite.com托管在AWS平台的某个可用区域中。AWS开发者将Web7 b) _- n/ G7 C
    应用上传到AWS平台并部署到指定的EC2实例上。EC2实例一般分成多个自动扩展组% S4 u+ O* Y* c7 ]2 T! i! k7 S
    (Auto Scaling Group),并通过弹性负载均衡(Elastic Load Balancing)技术将访问
    * {' h" R/ Y  x% W+ r) Q请求自动分发到自动扩展组内的EC2实例。开发者的Web应用可以使用AWS平台上的1 f( [  I6 c2 z- S3 _# w
    存储类服务,包括S3、SimpleDB、DynamoDB、RDS以及SQS。
    . A+ |" c/ |* ]/ b, f5 N网站上往往有一些大对象,比如图片、视频,这些大对象存储在S3系统中,并6 j' \% L0 L$ ?0 r9 Y/ ~
    通过内容分发技术缓存到多个CloudFront节点。当Internet用户浏览MyWebSite.com
    7 ^* t( X# y' p" E! m  \时,可能会请求S3中的大对象,这样的请求将通过DNS按照一定的策略定位到1 Q0 O4 y3 L) G  I6 p
    CloudFront节点。CloudFront首先在本地缓存节点查找对象,如果不存在,将请求源) k; D' }$ j& S
    站获取S3中存储的对象数据,这一步操作称为回源。
    ! \+ `, V# n# p0 {7 o. N, f% J12.5.2 Google云平台
    8 w7 I' M7 L- ~+ Q5 }, a# q8 T* eGoogle云平台(Google App Engine,GAE)是一种PaaS服务,使得外部开发者可
      [$ ?8 q$ q  z+ u/ c以通过Google期望的方式使用它的基础设施服务,目前支持Python和Java两种语言。
    8 z- ?4 V( w: ?0 E4 w" [9 ?GAE虽然在产品上相比Amazon云平台还有较大的差距,但在技术上是成功的,尤其2 `) X! K  Y" ]. q
    适用于企业构建自己的企业私有云。GAE的整体架构如图12-5所示。2 x  D% Q5 x& M% _7 m4 C
    图 12-5 Google App Engine整体架构$ L. B  j: c4 W2 T$ s) E% w8 e- a; m
    GAE云平台主要包含如下几个部分:
    8 r! J  P$ l$ o4 @●前端服务器。前端的功能包括负载均衡以及路由。前端服务器将静态内容请求
    7 O. V2 g. a  E' K1 `转发到静态文件服务器,将动态内容请求转发到应用服务器。
    7 b# `  m" j; ]●应用服务器。应用服务器装载应用的代码并处理接收到的动态内容请求。$ R, w+ }5 i, Z8 h* K5 J. I2 U3 X
    ●应用管理节点(App Master)。调度应用服务器,将应用服务器的变化通知前' _# U* @% L9 Y+ W; F7 r1 j
    端,从而前端可以将访问流量切换到正确的应用服务器。
    7 Q  e* A5 K2 B, J●存储区。包括DataStore、MemCache以及BlobStore三个部分。应用的持久化数
    - v% p8 z* N) Q' \1 Z) Z据主要存储在DataStore中,MemCache用于缓存,BlobStore是DataStore的一种补充,- ?' {# e" G* T' k1 `
    用于存储大对象。
    ( V+ j; {% r% z  [●服务区。除了必备的应用服务器以及存储区之外,GAE还包含很多服务,比如
    6 \& D% G$ t/ J; F0 t图像处理服务(Images)、邮件服务、抓取服务(URL fetch)、任务队列(Task# \; A2 F! S! F$ }/ w
    Queue)以及用户服务(Users)等。
    : D, Y6 x7 j) h0 z另外,作为PaaS服务,GAE还提供了如下两种工具:
    9 I: J' u; y3 ]: d, X- X●本地开发环境。GAE中大量采用私有API,因此专门提供了本地开发和调试的" j, H: l( o  v: x
    Sandbox环境以及SDK工具。+ ?) a+ O% a" E9 r3 b( G
    ●管理工具。GAE提供Web管理工具用于管理应用并监控应用的运行状态,比如
    2 X9 P! s( |7 @' o$ S: f资源消耗、应用日志等。; @( u0 J8 P. N5 |1 s" {8 M4 T$ e
    GAE的核心组件为应用服务器以及存储区,其中,应用服务器用于托管GAE平
      n+ l& o8 Q. |台用户的应用程序,存储区提供云存储服务。下面分别介绍这两个部分。
    ( j8 c) N- g- e6 S' g1.应用服务器
    / M9 L- H7 N1 }& |5 PGAE对外不提供虚拟机服务,因此,对于不同的开发语言,需要提供不同的应
    : K/ {8 L5 I3 y" _3 D用服务器实现,目前支持Python和Java两种语言。每一台应用服务器可能运行多个
    ! h$ j0 B3 o+ mGAE平台用户的应用,为了防止应用程序之间互相干扰,应用程序将在受限制的“沙
    " S! {) |3 s* h2 k0 j$ h. k/ y; _盒”环境中运行。“沙盒”环境中的GAE应用程序无法执行以下操作:/ a, j# R' w1 ~: V# c
    ●写入到本地文件系统。应用程序必须使用数据存储区来存储持久化数据。
    2 [: {4 y! P( q( _7 A# V% ?●打开套接字或者直接访问其他主机。应用程序必须使用网址提取服务(URL- J& ?) w, k/ m$ f
    Fetch)分别从端口80和443上的其他主机发出HTTP和HTTPS请求。
    : e6 ]* `0 s; f2 Y5 @& q●生成子进程或者线程。应用程序的网络请求必须在单个线程中处理,并且必须
    9 s8 V: V$ h+ }" @* w3 J  \在几秒内完成,GAE会自动终止响应时间很长的进程以免应用服务器过载。# d0 T% ]- a% j# O' _/ {. l5 M# M
    ●进行其他类型的系统调用。
    6 ?) I1 a, z" S& r2.存储区6 d1 k" d+ Y3 L0 Y
    Datastore是App Engine存储区的核心,底层为6.2节中介绍的Google Metastore系
    6 X5 ]9 J3 s2 H) o- \* E统。与关系数据库最大的不同点在于,Datastore支持自动增加或者减少存储节点,提4 h  V: i# W* W0 _2 V7 d' e" i
    供线性扩展能力。App Engine直接将开源的Memcache用作缓存服务,缓存Datastore中8 s* p+ S) S; E& d5 G
    的热点数据。Datastore不适合存储大对象(Blob对象),因此,App Engine设计了专: w- p! h6 O0 G! {# L: i
    门的Blobstore用于支持大对象存储。
    0 ]9 r7 i0 \/ x除了GAE平台,Google还单独提供了两种云存储服务,Google Cloud Storage以及
    ) w! n3 S6 Z9 J" l9 C3 D3 S  fGoogle Cloud SQL。其中,Google Cloud Storage与Amazon S3类似,用于存储图片、
    : y; o1 _0 q( {/ n8 ^( m视频等大对象数据,Google Cloud SQL与Amazon RDS类似,用于提供分布式关系数0 |1 @6 i0 }  k
    据库服务。# B! B4 }5 C4 A3 d$ u0 u% p
    12.5.3 Microsoft云平台0 A0 n+ b. A9 U6 `
    Windows Azure Platform是一个服务平台,用户利用该平台,通过互联网访问微
    / Q2 G7 R( h: ~! ~1 l6 K9 e+ s软数据中心的计算和存储服务,它不但支持传统的微软编程语言和开发平台,如C#
      V2 @6 w, r2 q( O4 Z和.NET平台,还支持PHP、Python、Java等多种非微软编程语言和架构。
    " N$ K- o7 l; C2 p0 o3 sWindowsAzure平台包含如下几个部分。
    ' A$ A/ s8 n% R! |, X  T8 V●计算服务
    5 V4 ^2 n0 Q0 ?Windows Azure平台中每个计算实例是一个运行着64bit的Windows Server 2008的
    9 i( L' u% R6 S; j8 X1 I+ E虚拟机,分为三种类型:Web Role实例,Worker Role实例和VM Role实例。其中,# \) r& H- d: p* M/ _+ b
    Web Role实例提前在内部安装了IIS7,用于托管Azure平台用户的Web应用程序;
    ( n8 `0 @' B) W2 T, l0 E5 `0 h( `Worker Role实例设计用来运行各种各样的基于Windows的代码,例如,Worker Role3 u3 s7 ]9 k2 p' u
    实例可以运行一个模拟程序、进行视频处理等,Worker Role与Web Role的不同点在
    & q0 f) V# T/ e/ _! X; t- p4 U于,Worker Role内部并没有安装IIS。一般来说,用户只会用到Web Role和Worker: Q) x, W& r( F' U! C# {3 V. D- V
    Role。应用通过Web Role与用户相互作用,然后利用Worker Role进行任务处理。当8 U9 r8 G. g' M" o4 G
    用户需要将本地的Windows Server应用移动到Windows Azure平台时,VM Role将会起9 b0 b* \1 b* Z# p5 t
    作用。VM Role除了允许对环境拥有更多的控制权之外,它和Web Role以及Worker
    $ }. _& O) f0 }Role是没有区别的。与Amazon云平台需要用户提供虚拟机的虚拟映像文件不同的# w8 i3 S" S; }
    是,Azure平台会自动虚拟出虚拟机,处理虚拟机升级,Role实例故障,Azure平台用
    1 ?+ L0 q  |3 W* {) [& u户只需要专注于如何创建应用程序即可。; @" w3 m! B9 O+ {
    ●存储服务, }1 X1 _/ Q  T7 ]* s: |" r) z
    Windows Azure存储服务包括Azure Blob,Table,Queue以及SQL Azure。其中,Azure
    ) p' Z; o0 R0 o) QBlob存储二进制数据,如图片,照片,视频等个人文件。Azure Table存储更加结构化
    7 q8 i$ u" f! {' X的数据,支持单张表格上的操作,但是它不同于关系数据库系统中的二维关系表,
    4 h$ v. u/ P" y' P7 v查询语言也不是大家熟悉的关系查询语言SQL。Azure Queue的作用和微软消息队列% [3 W0 |: _% ^! ^
    (MSMQ)相近,用来支持在Windows Azure应用程序组件之间进行通信。SQL Azure) p3 ~. d+ B( W. N) ?& D
    则是将微软的关系数据库SQL Server搬到云环境中,提供二维关系表和SQL查询语
    $ }2 [7 E, {- J' B% f- ]言。为了提高访问性能,Windows Azure还提供了两种缓存机制:Azure Caching以及
    8 z! ~) \! O& }Azure内容分发网络(CDN)。Azure Caching在数据中心内部缓存热点数据,Azure
    5 f& ~. x* R, I4 U/ E; GCDN在离用户较近的“边缘节点”缓存Azure Blob中的Blob对象。
      U/ K& G6 t: Q  v0 u" _1 B) b●连接服务5 H1 ^2 ?) ?$ t- A- v2 C' W5 r! g
    Windows Azure连接服务包括Azure Service Bus以及Azure Connect。Azure Service6 K" ]( V/ K9 J# h0 r$ b% x
    Bus包含三个部分:Service Bus Queue,Service Bus Topic和Service Bus Relay。其中," {2 d2 _1 O2 i- B- w) I- \8 W
    Service Bus Queue和Service Bus Topic与消息中间件的Queue和Topic模式类似,用于解1 M' g( y, t1 n, R9 g' n5 L
    除应用程序之间的耦合。Service Bus Queue提供点对点的通信,保证每个发送者产生
    8 }& `0 c. v9 E3 s的消息只被一个接收者获取;Service Bus Topic提供一对多的发布订阅通信,每个发5 Z) G3 ?5 f. ~
    布者发布的消息能被所有的订阅者获取。Service Bus Relay使得Azure平台服务器端可5 `$ A( c5 C9 m
    以访问运行在企业内部的本地WCF服务,这些WCF服务通常没有一个固定的IP地
    * `; l/ j7 Y5 @! }' ~; K址,而且被企业防火墙所保护。Azure Connect在Windows Azure应用和本地运行的机
    . U! Q  C4 ]9 u9 v# w, \) o器之间建立一个基于IPsec协议的连接,使得两者更容易结合起来使用。例如,某个
      f( H" ^' C; f: T- y6 M; Y企业需要将现有的由ASP.NET创建的Windows Server应用移动到Windows Azure Web4 N# }' [1 @( u" \
    Role中区,如果这个应用使用的数据库需要保留在本地机器上,那么Azure Connect技1 U8 q) ~% t7 x/ @. _
    术能够使运行在Windows Azure上的应用正常访问本地数据库,甚至连使用的连接字
    % w" T: a5 p7 F符串都不需要改变。
      V- }  p4 I9 r; U7 z●工具支持
    6 A* z" J" c3 o& @5 ~5 pWindows Azure平台不但支持传统的微软编程语言和开发平台如C#和.NET平台,% J7 s' G. z9 C, b; g+ z
    还支持PHP、Python、Java、node.js等多种非微软编程语言和架构。Azure平台提供各
    6 l; Q+ N& f( [4 D5 n/ N! [种语言的SDK以及平台管理工具。2 r9 O- ~, f- V6 l; G0 c8 t. {: c& Z
    图12-6显示了Windows Azure Platform用于托管用户Web程序的整体架构。假设网' `- j- N7 s' g9 I+ z( H
    站MyWebSite.com托管在Windows Azure平台的某个数据中心内。Azure平台开发者将
    : |$ K. C& C- q4 ~! vWeb应用上传到Azure平台,由平台将应用自动部署到Role实例上。在Azure内部,一
    6 d; u9 L  C8 \个应用可能运行在一个或者多个Role实例上,将运行同一个应用的Role实例成为一个
    & c+ F) X. j+ E5 O- b/ w' mRole实例组,并通过负载均衡器将访问请求按照一定的策略自动分发到其中的Role实
    : K& d- H% g; I0 w2 l( F例。开发者的Web应用可以使用Azure平台上的存储类服务,包括Azure Blob、
    " q) x, i4 S& h& ]- P4 DTable、Queue以及SQL Azure。为了提高性能,应用也可以使用Azure Caching缓存热6 \7 M- j  a9 j' a3 J
    点数据,就像使用Memcache一样。/ v4 W) m  n0 O- Q
    图 12-6 Windows Azure Platform整体架构
    - M' K9 b; N4 P: J9 q7 F7 y$ q网站上往往有一些Blob对象,比如图片、视频,这些对象存储在Azure Blob系统
    1 |/ p1 w: h; e' y中,并通过内容分发技术缓存到多个Azure CDN节点。Internet用户访问
    * L/ ^" [- q4 s/ FMyWebSite.com中的Blob时,访问请求将通过DNS定位到CDN节点上,如果CDN缓存2 x% q( D0 P" ^4 e
    了Blob的副本,直接将副本返回给用户,否则,CDN节点将请求Azure源站中的Azure
    0 a; ~. Q2 |9 J  O  C2 I3 H0 N5 y7 qBlob存储系统获取Blob对象,这一步操作称为回源。4 l$ `6 ^  o7 F& N: w
    12.5.4 云平台架构2 t+ _; h5 w. C7 y& E
    从托管Web应用程序的角度看,云平台主要包括云存储以及应用运行平台,如图" G3 h. K6 U+ \8 S
    12-7所示。( ]5 P& P; E+ L  W
    图 12-7 云平台整体架构
    " Z  K1 d0 d$ \! p* c云平台的核心组件包括:云存储组件和应用运行平台组件。下面简单介绍一! j8 k  y  J+ c' k3 Q
    下。0 C, K2 z. {/ n
    (1)云存储组件4 d1 t- |: N2 K8 f
    云存储组件包括两层:分布式存储层以及存储访问层。分布式存储层管理存储
    - B$ {( X! K; n6 j4 t1 b3 \服务器集群,实现各个存储设备之间的协同工作,保证数据可靠性,对外屏蔽数据
      D! P. u. ?% J' u* F- l( M所在位置,数据迁移,数据复制,机器增减等变化,使得整个分布式系统看起来像+ @" P: K) H0 n
    是一台服务器。分布式存储层是云存储系统的核心,也是整个云存储平台最难实现, h7 K+ @0 b0 s) v
    的部分。CDN节点将云存储系统中的热点数据缓存到离用户最近的位置,从而减少2 O! k6 s( T7 r, E) L1 v: X4 X
    用户的访问延时并节约带宽。
    , m# J1 L8 M* \/ l存储访问层位于分布式存储层的上一层,该层的主要作用是将分布式存储层的; Z2 V! E- j" e( I
    客户端接口封装为WebService(基于RESTful,SOAP等协议)服务,另外,该层通过8 X% e8 q8 r' l5 r7 m% t
    调用公共服务实现用户认证,权限管理以及计费等功能。存储访问层不是必须的,* |# {. ?% {" W- L+ v# r
    云存储平台中的计算实例也可以直接通过客户端应用编程接口(API)访问分布式存
    . n. E6 H9 I0 h3 ~储层中的存储系统。
    + J2 T2 L, B' e9 c5 e5 H; g(2)应用运行平台组件
    9 N# O1 ^5 C$ K应用运行平台的主体为计算实例,计算实例最主要的功能有两个:开发者的应
    % Y; e, T; E0 C; ^* M7 H7 A! @用程序运行环境以及离线任务处理。不同的云计算平台厂商的计算实例形式往往不
    & `( y4 e+ ^4 Q3 [1 M2 d+ z同:AWS(Amazon Web Service)平台中的计算实例为Amazon的弹性计算(Elastic" V! C% n- W6 {8 C* z) }
    Computing,EC2)虚拟机,它们既用于托管开发者的Web程序,又可用来执行Hadoop
    9 ]0 m  T0 `8 R; kMapReduce计算或者图像以及视频转换等离线任务;GAE(Google App Engine)平台3 r: p, s$ U- c/ @: S$ j
    中的计算实例分为前端实例(Frontend Instance)以及后端实例(Backend Instance),5 [. j; W) m& j) Y! ~; E! i
    其中,前端实例为GAE特有的Python、Java以及Go语言运行容器,用于托管开发者使, q; H! }; k& W$ m- J
    用Python、Java或者Go语言开发的Web程序,后端实例执行运行时间较长的离线任/ Y1 u% Y8 m' A/ u1 L
    务;微软的Azure平台(Windows Azure Platform)的计算实例为运行着一个64位的
    - ~  \9 s& L- X5 ?5 u1 E7 n  [Windows Server 2008的虚拟机,分为Web Role、Worker Role以及VM Role三种角色,
    ! n. [( F4 P* [5 o1 F5 s8 U其中,Web Role用于托管Web程序,Worker Role用于执行视频处理等离线计算任务。6 D& i4 k) @8 ~# _
    多个计算实例构成一个计算实例组,当实例组中的某个实例出现故障时,能够' }9 ~4 K1 B/ |1 N( h2 r
    自动将负载迁移到其他的实例,并且支持动态增加或者减少实例从而使得实例组的7 w2 M* N8 A( g  E! \
    处理能力具有动态可伸缩性。运行平台的最前端是路由及负载均衡组件,它将用户. t5 n$ @6 V7 G7 O' G# M
    的请求按照一定的策略发送到合适的计算实例。
    / d: _% P- P- x/ s7 f) o云存储平台还包含一些公共服务,这些基础服务由云存储组件及运行平台组件9 g; Z. w& A) h* b! u
    所共用,如下所示:
    " i- J* n* D  C●消息服务。消息服务将执行流程异步化,用于应用程序解耦。计算实例一般分" d6 {2 q# t8 k& t) e$ R
    为处理Web请求的前台实例以及处理离线任务的后台实例,在很多情况下,前台实例
    ( ?8 z" Y, j3 q* c- n* n处理Web请求的过程中需要启动运行在后台的任务,这种需求可以通过消息服务实+ ^7 k7 a: ?/ Y2 m0 I% @
    现。! ~1 r) a, ~6 L( q: e
    ●缓存服务。缓存服务用于存储云存储系统中的读多写少的热点数据,从而加速
    * `5 t& A, f5 B! _查询,减少对后端存储系统压力。大多数云存储平台提供Memcache服务。
    1 w/ e- k! o- c8 q●用户管理。用户管理主要功能是用户身份认证,确保用户的身份合法,并存储
    6 M# b4 q2 u( q8 B. {用户相关的个人信息。云计算平台一般支持单点登录,在多个应用系统中,用户只
    8 G; K' k: g8 ]' k' b需要登录一次就可以访问所有相互信任的系统。
    8 k1 Q; G; K* o) c●权限管理。为多个服务提供集中的权限控制,以确保应用和数据只能被有授权
    4 ^# e; T! M. T; z! Y7 ~# v的用户访问。云存储系统一般会维护一系列的访问策略,每一条策略表示某个用户- p9 L0 z- f# c0 }
    是否对某个资源具有某种操作权限。1 [. o3 e" L& P5 n
    ●安全服务。安全服务包括Web漏洞检测,网页挂马检测,端口安全检测,入侵. s3 Z+ J9 A) D5 t; |
    检测,分布式拒绝服务攻击(Distributed Denial of Service,DDoS)缓解等。Web漏洞
    8 R" y* p# I: D( z. _* K检测提供对应用的SQL注入漏洞、XSS跨站脚本漏洞、文件包含等高危安全漏洞进行
    ) B2 @& ^0 e2 R/ P4 B6 J7 ?检测;网页挂马检测通过静态分析技术和虚拟机沙箱行为检测技术相结合,对网站
    % k6 h* F/ D! F( ^进行挂马检测;端口安全检测通过定期扫描服务器开放的高危端口,降低系统被入# v4 X9 K% O& w1 P
    侵的风险;主机入侵检测通过主机日志安全分析,实时侦测系统密码破解,异常IP$ D1 w) d* ]' H' o& A; j
    登录等攻击行为并实时报警;DDos缓解技术能够抵御SYN flood以及其他拒绝服务攻8 T" `- X. E, V8 q
    击。8 M, q/ M" R5 y
    ●计费管理。利用底层的监控系统所采集的数据对每个用户使用的资源和服务进9 Z* \) V) g+ r% X! Q
    行统计,计算出用户的使用费用,并提供完善和详细的报表。云存储系统计费涉及
    " x  A* H" R7 T. a! E的参数一般包括:CPU时间,网络出口带宽,存储量以及服务调用次数(包括读写; h% P' }1 `2 J0 @* b
    API调用次数)。
    % v, u  r6 d2 U( S4 C●资源管理。管理云存储平台中的所有服务器资源,将应用程序或者虚拟机映射
    - n! R  O0 W- a, d) k4 [9 F0 u自动部署到合适的计算实例,另外,自动调整计算实例的数量来帮助运行于其上的
    - {2 {7 f, }- e2 i% r- w  H6 a* g应用更好地应对突发流量。当计算实例发生故障时,资源管理系统还需要通知前端
    3 b* u2 M4 d' C' I' Y( ]的负载均衡层,将流量切换到其他计算实例。
    ( G2 [% C3 z8 \7 f; W3 T% O●运维管理。云存储平台的运维需要做到自动化,从而降低运维成本,一般来
    % m: m3 T/ w. ?+ w( Y# Q说,有一套专门的Web运维系统用于系统上下线,批量升级系统程序版本等。
    . k4 p! e; J7 {4 p& G/ ]●监控系统。监控系统有两个层面,其一是资源层面,即资源的运行情况,比如
    : v: b. {6 C$ r" QCPU使用率、内存使用率和网络带宽利用率、Load值等,需要注意的是,云计算平
      P' M2 o" ^! r台除了监控物理机资源,还需要监控虚拟机资源的运行情况;其二是应用层面,主( q2 I6 X- P1 D# z# E' p) d
    要记录应用每次请求的响应时间、读写请求数等。
    8 O) W2 ?6 o5 i* ], V; L) c2 ?
    ; R4 ~' W2 {; h# ~+ Y) z2 U0 ?$ q5 `- S+ s
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|Archiver|手机版|小黑屋|Java自学网

    GMT+8, 2025-4-1 14:11 , Processed in 0.547027 second(s), 30 queries .

    Powered by Javazx

    Copyright © 2012-2022, Javazx Cloud.

    快速回复 返回顶部 返回列表