java自学网VIP

Java自学网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2701|回复: 0

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

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

    [LV.Master]出神入化

    2040

    主题

    3698

    帖子

    6万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    66476

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

    发表于 2017-3-16 16:09:57 | 显示全部楼层 |阅读模式
    12.5 云平台整体架构6 i7 `2 ^; ^8 {! r  T; E7 D+ [
    云存储是云计算的存储部分,理解云存储架构的前提是理解云平台整体架构。
    5 v5 o5 s* o& D$ ]云计算按照服务类型大致可以分为三类:基础设施即服务(IaaS)、平台即服务* x3 r7 O: a* [  J' |# O* A: [; ~9 Q
    (PaaS)以及软件即服务(SaaS),如图12-3所示。8 a; {. c8 c* S5 ^: G9 A
    图 12-3 云计算服务类型' p4 X, C' z, J# o
    IaaS将硬件设备等基础资源以虚拟机的形式封装成服务供用户使用,如Amazon9 O7 o. F+ o& s# t
    云计算AWS(Amazon Web Service)的弹性计算云EC2,PaaS进一步抽象硬件资源,3 i  i& `) P4 \* d
    提供用户应用程序的运行环境,开发者只需要将应用程序提交给PaaS平台,PaaS平% H" Q4 [5 E, N2 L. h( I
    台会自动完成程序部署,处理服务器故障,扩容等问题,典型的如(Google App- ~  r' b7 J. U
    Engine)GAE。另外,微软的云计算平台Windows Azure Platform也可大致归入这一
    % ~( Q* h8 H) e+ w类。SaaS的针对性更强,它将某些特定应用软件封转成服务,如Salesforce公司提供
    3 k# t% @$ u0 V# {的在线客户端管理CRM服务,Google的企业应用套件Google Apps等。
    ! f% K9 c2 G& B2 U' B本节首先分别介绍Amazon、Google以及Microsoft这三个云平台的整体架构,其
    7 ]4 Y' a9 f) B9 p4 x' p1 E) g中,Amazon提供IaaS服务,Google和Microsoft提供PaaS服务,接着介绍一般情况下云6 i- Z( n# D/ r
    平台的整体架构。) D; f/ t1 ~8 \$ I2 j! r+ Q
    12.5.1 Amazon云平台
    0 k& c5 q- ~2 OAmazon Web Services(AWS)是Amazon构建的一个云计算平台的总称,它提供9 l( E* ^  R8 j( t" r8 t  }$ m
    了一系列云服务。通过这些服务,用户能否访问和使用Amazon的存储和计算基础设' w5 _  j6 w: A) ?% F3 u
    施。如图12-4所示,AWS平台分为如下几个部分:4 F9 S8 K& h, v& D2 A; y0 W9 a! R
    图 12-4 AWS平台整体架构
    * i; A1 w2 h9 }+ L; z% b$ |●计算类:核心产品为弹性计算云EC2(Elastic Computing)。EC2几乎可以认为
    0 c  ^# ]9 `$ K; q# v8 Z是迄今为止云计算领域最为成功的产品,通俗地讲,就是提供虚拟机,用户的应用! C. \$ D. G2 U' t- `# J
    程序部署在EC2实例中。EC2架构的核心是弹性伸缩,当托管的应用程序访问量变化
    3 c( A, ]4 @. n( B* E时能够自动增加或者减少EC2实例,并通过弹性负载均衡技术将访问请求分发到新增
    ) A5 o1 E- N& p2 I的EC2实例上。在计费模式上,EC2按照使用量计费,而不是采用传统的预付费方
    : t& H/ O+ u6 H8 H' [式。EBS(Elastic Block Store)是一个分布式块设备,可以像本地的磁盘一样直接挂' F7 f) X6 _! G/ u
    载在EC2实例上,与本地磁盘不同的是,保存到EBS的数据会由EBS的管理节点自动
    - p* ~+ W' h9 f9 ^- j% p复制到多个存储节点上。EC2实例的本地存储是不可靠的,如果EC2实例出现故障,
    & |3 b2 A% ^# _( D本地存储上保存的数据将会丢失,而保存到EBS上的数据不会丢失。EBS用于替代; J' g% L; L/ K, i: ~# h( Z9 v4 p& x
    EC2实例的本地存储,从而增强EC2可靠性。
    0 F9 d- \6 B; T  d0 Q●存储类:存储类产品较多,包括简单对象存储S3,表格存储系统SimpleDB、3 I" H  O) h9 ]1 H) s# A
    DynamoDB、分布式关系数据库服务(Relational Datastore Service,RDS)以及简单消* c6 Q- g9 _5 G1 J: n- h5 P8 Z
    息存储(Simple Queue Service,SQS)。S3用于存储图片、照片、视频等大对象,为' w8 R  {/ F) r5 N' Z: t& T5 g
    了提高访问性能,S3中的对象还能够通过CloudFront缓存到不同地理位置的内容分发: h2 p+ I8 m! t# v4 z' x, {
    网络(Content Delivery Network,CDN)节点。SimpleDB和DynamoDB是分布式表格系
    7 {, `0 @/ x; t统,支持对一张表格进行读写操作;RDS是分布式数据库,目前支持MySQL以及
    $ @; x" k3 m# t* b; P- s- VOracle两种数据库。SQS主要用于支持多个任务之间的消息传递,解除任务之间的耦+ t6 n2 n9 {* {$ d: V
    合,相当于传统的消息中间件(Message Queue)。为了提高访问性能,可以使用6 B! W& O5 _# c+ {
    ElasticCache缓存存储系统中的热点数据。/ @8 F* @  `" @* Y/ v, v: R' l0 g
    ●工具支持:AWS支持多种开发语言,提供Java、Ruby、Python、PHP、Windows9 m$ c$ ?) t3 P  `
    &.NET以及Android和iOS的工具集。工具集中包含各种语言的SDK、程序自动部署; U9 E+ X' k$ K) n7 d9 P
    以及各种管理工具。另外,AWS通过CloudWatch系统提供丰富的监控功能。
    4 }6 _; L6 x, {. bAWS平台引入了区域(Zone)的概念。区域分为两种:地理区域(Region2 U0 D- @! g% O9 _
    Zone)和可用区域(Availability Zone),其中地理区域是按照实际的地理位置划分
    ; M3 o5 n- ?9 {5 K4 v+ \1 J的,而可用区域一般是按照数据中心划分的。. M0 J% w! G* O) P, N% d
    假设网站MyWebSite.com托管在AWS平台的某个可用区域中。AWS开发者将Web
    5 _' [$ j* m$ j) l1 D9 m应用上传到AWS平台并部署到指定的EC2实例上。EC2实例一般分成多个自动扩展组
    $ a0 L, |# A5 M(Auto Scaling Group),并通过弹性负载均衡(Elastic Load Balancing)技术将访问
    ( F( C( A6 H% W请求自动分发到自动扩展组内的EC2实例。开发者的Web应用可以使用AWS平台上的
    & q3 V  S" W* I4 a/ P/ _存储类服务,包括S3、SimpleDB、DynamoDB、RDS以及SQS。, {! R, y" c. n1 }% o1 w4 C/ P
    网站上往往有一些大对象,比如图片、视频,这些大对象存储在S3系统中,并
    7 v% w  P! D. M& ~通过内容分发技术缓存到多个CloudFront节点。当Internet用户浏览MyWebSite.com
    % T2 w& i# {# Z9 g9 Z% `% q时,可能会请求S3中的大对象,这样的请求将通过DNS按照一定的策略定位到
    ( ?# n( s  e# t& b" pCloudFront节点。CloudFront首先在本地缓存节点查找对象,如果不存在,将请求源
    ; K& a7 e# V) g/ c: J' @/ v站获取S3中存储的对象数据,这一步操作称为回源。7 a. v  x, m& T7 f; b- O
    12.5.2 Google云平台
    : u: ?& p3 ~# B' I5 c6 Y( T: A1 k& q8 JGoogle云平台(Google App Engine,GAE)是一种PaaS服务,使得外部开发者可+ M7 ^5 P7 o' Z0 D9 b5 D
    以通过Google期望的方式使用它的基础设施服务,目前支持Python和Java两种语言。- R+ A4 [- a( v1 \1 a6 K7 w
    GAE虽然在产品上相比Amazon云平台还有较大的差距,但在技术上是成功的,尤其+ z% t4 a2 A4 o! w0 g+ z0 A# O
    适用于企业构建自己的企业私有云。GAE的整体架构如图12-5所示。" K2 M% }0 E8 H
    图 12-5 Google App Engine整体架构0 x; G0 Y: t8 a3 Q& i
    GAE云平台主要包含如下几个部分:
    ; i- L( i4 t' B●前端服务器。前端的功能包括负载均衡以及路由。前端服务器将静态内容请求
    8 z/ G% R* w( [5 k4 u1 Z转发到静态文件服务器,将动态内容请求转发到应用服务器。- D, S3 |  M8 i) ?
    ●应用服务器。应用服务器装载应用的代码并处理接收到的动态内容请求。" Y( Q7 V: R% ?. |. s' B. L- p' t% r
    ●应用管理节点(App Master)。调度应用服务器,将应用服务器的变化通知前
    / \, z+ L$ y* z8 ^7 b, j端,从而前端可以将访问流量切换到正确的应用服务器。8 O3 E3 Y  Q; n8 O
    ●存储区。包括DataStore、MemCache以及BlobStore三个部分。应用的持久化数
    " n+ `9 k( k9 r' E5 e/ _据主要存储在DataStore中,MemCache用于缓存,BlobStore是DataStore的一种补充,
    5 v: T1 I- b  o5 T% j& }; k$ i用于存储大对象。% I. }5 w. b7 Y; G
    ●服务区。除了必备的应用服务器以及存储区之外,GAE还包含很多服务,比如
    - i/ J- D* |7 A# U图像处理服务(Images)、邮件服务、抓取服务(URL fetch)、任务队列(Task
    " i" }, U# O; W; p" P& A% J  I9 DQueue)以及用户服务(Users)等。
    . X+ H, j" F, P另外,作为PaaS服务,GAE还提供了如下两种工具:
    3 T4 N% a' Y) F: u. z●本地开发环境。GAE中大量采用私有API,因此专门提供了本地开发和调试的3 d: q- `( G) K! b  }' ^
    Sandbox环境以及SDK工具。
    4 a% @3 }8 u' Z* o: q8 u●管理工具。GAE提供Web管理工具用于管理应用并监控应用的运行状态,比如
    0 V2 Q1 \! A- _. @. P+ ^资源消耗、应用日志等。
    ! r5 V9 h$ @4 [GAE的核心组件为应用服务器以及存储区,其中,应用服务器用于托管GAE平
    ( F7 E7 F& K" U台用户的应用程序,存储区提供云存储服务。下面分别介绍这两个部分。7 J* n* O* ~- l
    1.应用服务器
    $ {6 a5 U. L5 y+ D0 A5 \5 a; Y7 hGAE对外不提供虚拟机服务,因此,对于不同的开发语言,需要提供不同的应
    / D2 O/ a: [/ r% n, `用服务器实现,目前支持Python和Java两种语言。每一台应用服务器可能运行多个
    8 m! p0 M/ V: O) e$ bGAE平台用户的应用,为了防止应用程序之间互相干扰,应用程序将在受限制的“沙/ @8 M" V* q- |1 b/ B
    盒”环境中运行。“沙盒”环境中的GAE应用程序无法执行以下操作:! ^! z; Y- v' A0 Y1 o
    ●写入到本地文件系统。应用程序必须使用数据存储区来存储持久化数据。' s  H; S4 q( r* l" C
    ●打开套接字或者直接访问其他主机。应用程序必须使用网址提取服务(URL; i; k" t4 R# w- `4 Y2 o! Z  {1 |
    Fetch)分别从端口80和443上的其他主机发出HTTP和HTTPS请求。3 h, Q" k7 {7 ^7 g1 ?
    ●生成子进程或者线程。应用程序的网络请求必须在单个线程中处理,并且必须
    1 _2 s- ]& G( @2 y$ |; Z: R1 |; h在几秒内完成,GAE会自动终止响应时间很长的进程以免应用服务器过载。/ u% a) N$ W1 \, T" W' j  z
    ●进行其他类型的系统调用。+ b5 L3 m5 T- q4 Z1 B1 L: `
    2.存储区% [" ]) }% \' b; T" G% ?
    Datastore是App Engine存储区的核心,底层为6.2节中介绍的Google Metastore系/ R0 E+ h4 N. r* \, K
    统。与关系数据库最大的不同点在于,Datastore支持自动增加或者减少存储节点,提  S4 I8 ^8 r2 U+ w/ Q( k
    供线性扩展能力。App Engine直接将开源的Memcache用作缓存服务,缓存Datastore中+ \- w  ~/ s1 z4 ?* K
    的热点数据。Datastore不适合存储大对象(Blob对象),因此,App Engine设计了专
    9 m( I# C, d: i! L5 G7 ]门的Blobstore用于支持大对象存储。" n) l/ c! j. z7 Z
    除了GAE平台,Google还单独提供了两种云存储服务,Google Cloud Storage以及4 M  l1 ^' O1 _( S5 y6 e4 i
    Google Cloud SQL。其中,Google Cloud Storage与Amazon S3类似,用于存储图片、+ F7 o. n# p3 u+ J' K
    视频等大对象数据,Google Cloud SQL与Amazon RDS类似,用于提供分布式关系数# g2 R* _/ Q$ r' y) W' a/ L( Z' S$ Y
    据库服务。
    0 z) @1 [: q1 ~2 ?& n) ~12.5.3 Microsoft云平台' j8 Y5 N& ^. c
    Windows Azure Platform是一个服务平台,用户利用该平台,通过互联网访问微
    8 Y; S" Q4 m( l' U' T- V9 ~) O软数据中心的计算和存储服务,它不但支持传统的微软编程语言和开发平台,如C#1 X6 a6 z- [0 O* V
    和.NET平台,还支持PHP、Python、Java等多种非微软编程语言和架构。8 a1 C5 K' Q. K( k7 M) i  j- d
    WindowsAzure平台包含如下几个部分。9 J9 L9 I( y+ W# m" a9 j7 C/ A/ G7 e
    ●计算服务
    : q7 t" b$ H& x* @8 p& d8 KWindows Azure平台中每个计算实例是一个运行着64bit的Windows Server 2008的
    . h/ y6 j8 {  d; ?8 m5 {5 q8 A; g虚拟机,分为三种类型:Web Role实例,Worker Role实例和VM Role实例。其中,; i9 J; a; {. n" x$ p2 c$ b
    Web Role实例提前在内部安装了IIS7,用于托管Azure平台用户的Web应用程序;
    ( p2 [% u2 s4 G+ xWorker Role实例设计用来运行各种各样的基于Windows的代码,例如,Worker Role1 e' |5 d2 }& S
    实例可以运行一个模拟程序、进行视频处理等,Worker Role与Web Role的不同点在
    * v4 d5 Q; H3 H. Z于,Worker Role内部并没有安装IIS。一般来说,用户只会用到Web Role和Worker% O5 P* h6 n+ p9 }
    Role。应用通过Web Role与用户相互作用,然后利用Worker Role进行任务处理。当
    6 X  N) t2 H6 I* L% h" h0 b$ G9 s用户需要将本地的Windows Server应用移动到Windows Azure平台时,VM Role将会起3 P  b: [% p/ ^7 C8 b7 }
    作用。VM Role除了允许对环境拥有更多的控制权之外,它和Web Role以及Worker2 ~  S7 u) j. {- t/ i* O
    Role是没有区别的。与Amazon云平台需要用户提供虚拟机的虚拟映像文件不同的2 P" H" \6 X/ w6 u8 R
    是,Azure平台会自动虚拟出虚拟机,处理虚拟机升级,Role实例故障,Azure平台用
    # r7 m& A, d7 t5 C4 m$ k6 ]户只需要专注于如何创建应用程序即可。4 M6 z. {' ]$ \" C' @, [
    ●存储服务, d, e1 |$ E1 p1 I" W
    Windows Azure存储服务包括Azure Blob,Table,Queue以及SQL Azure。其中,Azure% C* p+ _6 {5 }3 E
    Blob存储二进制数据,如图片,照片,视频等个人文件。Azure Table存储更加结构化
    8 E$ Y7 G, r# L- n! t+ Y, D! E* f0 n的数据,支持单张表格上的操作,但是它不同于关系数据库系统中的二维关系表,6 q4 S# J9 F: U8 V' t
    查询语言也不是大家熟悉的关系查询语言SQL。Azure Queue的作用和微软消息队列) z, G5 u6 m3 g) t( k  W, B
    (MSMQ)相近,用来支持在Windows Azure应用程序组件之间进行通信。SQL Azure
    7 L; n& B. Q: y, c& p9 c则是将微软的关系数据库SQL Server搬到云环境中,提供二维关系表和SQL查询语
    % S( O: M2 o$ s言。为了提高访问性能,Windows Azure还提供了两种缓存机制:Azure Caching以及1 \# Q+ z- H& Z8 a" \
    Azure内容分发网络(CDN)。Azure Caching在数据中心内部缓存热点数据,Azure; C: E7 g0 r' R, H
    CDN在离用户较近的“边缘节点”缓存Azure Blob中的Blob对象。
    . F4 V" D$ h) o. x8 V8 i●连接服务
    7 d. O& }: C3 }  _5 TWindows Azure连接服务包括Azure Service Bus以及Azure Connect。Azure Service' E/ N+ T' b2 U" v
    Bus包含三个部分:Service Bus Queue,Service Bus Topic和Service Bus Relay。其中,! M% u+ S0 `( X6 n/ w
    Service Bus Queue和Service Bus Topic与消息中间件的Queue和Topic模式类似,用于解8 B* N/ t) }" i  {1 L) x, U
    除应用程序之间的耦合。Service Bus Queue提供点对点的通信,保证每个发送者产生) Y  H4 u1 ]5 P$ P* H7 t& o" e7 W/ t
    的消息只被一个接收者获取;Service Bus Topic提供一对多的发布订阅通信,每个发
    4 K) i9 t9 @) E% J9 e( \1 w" t布者发布的消息能被所有的订阅者获取。Service Bus Relay使得Azure平台服务器端可
    # I9 ~- T. W  w; [以访问运行在企业内部的本地WCF服务,这些WCF服务通常没有一个固定的IP地
    ) @) W  `( j0 I) j7 u( c址,而且被企业防火墙所保护。Azure Connect在Windows Azure应用和本地运行的机
    % H! Y- |7 Z: |% X* G器之间建立一个基于IPsec协议的连接,使得两者更容易结合起来使用。例如,某个7 H3 {2 e1 d$ J% p5 e
    企业需要将现有的由ASP.NET创建的Windows Server应用移动到Windows Azure Web
    # l- c0 B* T1 N9 ERole中区,如果这个应用使用的数据库需要保留在本地机器上,那么Azure Connect技) {3 d* x: ]0 `, L8 k/ p$ g
    术能够使运行在Windows Azure上的应用正常访问本地数据库,甚至连使用的连接字
    2 g: j, P0 i. m5 H% Q2 P5 L符串都不需要改变。
    * ]& M# o1 t0 g3 w( A6 T$ M3 ^8 H●工具支持
    & f% V# F. }7 i, G6 Y9 P) u) {9 f1 AWindows Azure平台不但支持传统的微软编程语言和开发平台如C#和.NET平台,
    ) g1 R% e6 O: E7 |还支持PHP、Python、Java、node.js等多种非微软编程语言和架构。Azure平台提供各" V5 M: L& L7 r$ s2 T
    种语言的SDK以及平台管理工具。% G0 x, C9 Q! Q  K: [$ U0 k
    图12-6显示了Windows Azure Platform用于托管用户Web程序的整体架构。假设网
    $ t8 N; I0 h$ Q9 N, m- g站MyWebSite.com托管在Windows Azure平台的某个数据中心内。Azure平台开发者将* g) i) Z) T$ z3 D" L
    Web应用上传到Azure平台,由平台将应用自动部署到Role实例上。在Azure内部,一
    ' x# u- P/ R% Z8 ?. E个应用可能运行在一个或者多个Role实例上,将运行同一个应用的Role实例成为一个
    8 J" K' O/ o5 m; r1 R) NRole实例组,并通过负载均衡器将访问请求按照一定的策略自动分发到其中的Role实" M2 V( h3 \  k$ J
    例。开发者的Web应用可以使用Azure平台上的存储类服务,包括Azure Blob、
    * L5 [. m1 o. F6 `& w, xTable、Queue以及SQL Azure。为了提高性能,应用也可以使用Azure Caching缓存热, n9 t$ e8 e/ a# L: k* `/ {8 R  C" c
    点数据,就像使用Memcache一样。
    5 b( \3 N. o/ j! Y- T) r图 12-6 Windows Azure Platform整体架构
    + B" {9 Z+ u0 _4 H2 C( T网站上往往有一些Blob对象,比如图片、视频,这些对象存储在Azure Blob系统
    + A: t+ v- g' s2 \7 M中,并通过内容分发技术缓存到多个Azure CDN节点。Internet用户访问3 P% M& A! S- |: Z
    MyWebSite.com中的Blob时,访问请求将通过DNS定位到CDN节点上,如果CDN缓存5 ]  l: ?0 d+ a3 z2 l2 g' `4 i
    了Blob的副本,直接将副本返回给用户,否则,CDN节点将请求Azure源站中的Azure
    $ V. ~  W: s7 K8 uBlob存储系统获取Blob对象,这一步操作称为回源。' A0 y$ ]9 v4 B2 ^( d1 p3 Y' O. F/ ^
    12.5.4 云平台架构; [" S# ]; o% w2 K* c
    从托管Web应用程序的角度看,云平台主要包括云存储以及应用运行平台,如图
    9 ]: v8 y! _3 e7 F  v12-7所示。- Y* r: l7 q# i9 w& @9 T' y' _3 I
    图 12-7 云平台整体架构
    * ?+ c9 ?! Y& e% R: e" H云平台的核心组件包括:云存储组件和应用运行平台组件。下面简单介绍一0 ?1 I/ d' q9 L4 }9 ^
    下。
    1 }3 i& n( w" u& X. p, P1 ]! ]4 ?(1)云存储组件4 _) b) D2 o3 J4 x* Z0 T
    云存储组件包括两层:分布式存储层以及存储访问层。分布式存储层管理存储
    * S- X% @2 ]4 \- _! ^# y" ~服务器集群,实现各个存储设备之间的协同工作,保证数据可靠性,对外屏蔽数据3 t; _: P3 ?# H# w
    所在位置,数据迁移,数据复制,机器增减等变化,使得整个分布式系统看起来像* I6 k1 l+ d, H( A& L  e% F
    是一台服务器。分布式存储层是云存储系统的核心,也是整个云存储平台最难实现- B" V" L. m# @( w
    的部分。CDN节点将云存储系统中的热点数据缓存到离用户最近的位置,从而减少3 Y4 A" ~6 p8 `
    用户的访问延时并节约带宽。6 |4 Q) Z& t% Y) k
    存储访问层位于分布式存储层的上一层,该层的主要作用是将分布式存储层的
    / \! r& m3 v. s客户端接口封装为WebService(基于RESTful,SOAP等协议)服务,另外,该层通过3 K. V1 L8 A/ r+ y
    调用公共服务实现用户认证,权限管理以及计费等功能。存储访问层不是必须的,) v* V* y) p/ Y$ w( v5 u, k1 ?% w
    云存储平台中的计算实例也可以直接通过客户端应用编程接口(API)访问分布式存
    : ^6 d. G  y9 Z, q0 {- H5 m. F储层中的存储系统。
    $ X  R& M3 E7 F2 e/ Z" A. n1 ?+ Z(2)应用运行平台组件) O% z; @0 X$ |
    应用运行平台的主体为计算实例,计算实例最主要的功能有两个:开发者的应; R) d, c% i9 c( Y, z  D$ o
    用程序运行环境以及离线任务处理。不同的云计算平台厂商的计算实例形式往往不5 i: b% e! b5 Q  }7 r6 `  C
    同:AWS(Amazon Web Service)平台中的计算实例为Amazon的弹性计算(Elastic
    2 H5 q6 [" K! o! z; y5 t# B( }7 e# |% iComputing,EC2)虚拟机,它们既用于托管开发者的Web程序,又可用来执行Hadoop
    3 E5 J3 p  w/ C' ?& T; PMapReduce计算或者图像以及视频转换等离线任务;GAE(Google App Engine)平台
    , N2 W  B$ F1 ]6 ]. v中的计算实例分为前端实例(Frontend Instance)以及后端实例(Backend Instance),4 F' q* x7 i6 O1 C  _& |1 b
    其中,前端实例为GAE特有的Python、Java以及Go语言运行容器,用于托管开发者使
    - N( k6 u- R# g- x* y用Python、Java或者Go语言开发的Web程序,后端实例执行运行时间较长的离线任
    5 {" k- b: j0 l# r务;微软的Azure平台(Windows Azure Platform)的计算实例为运行着一个64位的9 L& T; o4 G- Z8 W
    Windows Server 2008的虚拟机,分为Web Role、Worker Role以及VM Role三种角色,
    ) [3 [! B# j$ Q$ n% E2 U) m其中,Web Role用于托管Web程序,Worker Role用于执行视频处理等离线计算任务。
    ) q" u- p; `7 J/ S6 {1 ]多个计算实例构成一个计算实例组,当实例组中的某个实例出现故障时,能够9 v5 Y9 u; f, E2 D/ e
    自动将负载迁移到其他的实例,并且支持动态增加或者减少实例从而使得实例组的
    ' U8 f# D% A% ], A* c9 l( X- S处理能力具有动态可伸缩性。运行平台的最前端是路由及负载均衡组件,它将用户, J7 t; `' _4 |
    的请求按照一定的策略发送到合适的计算实例。: Z- _1 L3 p- m3 n6 y( m0 y+ C7 m' L
    云存储平台还包含一些公共服务,这些基础服务由云存储组件及运行平台组件
    / d! `8 X" H3 W7 j1 |所共用,如下所示:$ J: K( [1 d; P# G8 T6 P
    ●消息服务。消息服务将执行流程异步化,用于应用程序解耦。计算实例一般分7 K2 H! B: W6 r5 ?! x6 A2 z6 R3 \
    为处理Web请求的前台实例以及处理离线任务的后台实例,在很多情况下,前台实例
    5 U) I: b0 J; `处理Web请求的过程中需要启动运行在后台的任务,这种需求可以通过消息服务实2 d. S! T* {( ~
    现。
    4 g1 }) ~- J5 x  w! `# F●缓存服务。缓存服务用于存储云存储系统中的读多写少的热点数据,从而加速& q2 l8 @4 r; R' e, p, a* n' u0 t
    查询,减少对后端存储系统压力。大多数云存储平台提供Memcache服务。
    ' b8 B5 U7 r! z8 X: I) y5 U●用户管理。用户管理主要功能是用户身份认证,确保用户的身份合法,并存储
    % f7 I4 _* g0 ^# H. Z7 n9 X4 y用户相关的个人信息。云计算平台一般支持单点登录,在多个应用系统中,用户只
    3 ~7 k$ W* w+ }+ j3 ~6 k3 A需要登录一次就可以访问所有相互信任的系统。, T, k( L' l  B  m4 b2 `
    ●权限管理。为多个服务提供集中的权限控制,以确保应用和数据只能被有授权: O/ F% R4 c% m: C$ C6 ^. I
    的用户访问。云存储系统一般会维护一系列的访问策略,每一条策略表示某个用户$ c( a/ R$ r( @4 L; @. t) [
    是否对某个资源具有某种操作权限。$ T5 l$ i( x9 z5 ]2 P' [: d
    ●安全服务。安全服务包括Web漏洞检测,网页挂马检测,端口安全检测,入侵
    * ~" J2 H' ?+ V7 r* W& U) |5 U; I检测,分布式拒绝服务攻击(Distributed Denial of Service,DDoS)缓解等。Web漏洞
    * W4 I& ~& B' k检测提供对应用的SQL注入漏洞、XSS跨站脚本漏洞、文件包含等高危安全漏洞进行
    5 |2 h  R  C+ u, L1 `. c检测;网页挂马检测通过静态分析技术和虚拟机沙箱行为检测技术相结合,对网站
      l, T8 R/ [8 q7 v9 e进行挂马检测;端口安全检测通过定期扫描服务器开放的高危端口,降低系统被入
    # Y0 R& J0 t/ ^5 C/ r, l侵的风险;主机入侵检测通过主机日志安全分析,实时侦测系统密码破解,异常IP
    7 ?' F. T8 e1 q7 O登录等攻击行为并实时报警;DDos缓解技术能够抵御SYN flood以及其他拒绝服务攻
    1 ?8 v% u3 Y, ^+ U6 ?8 f- g击。
    & f; j( i0 Q$ e. R1 K: Y1 _●计费管理。利用底层的监控系统所采集的数据对每个用户使用的资源和服务进, O/ E9 j- |5 j8 E# X  v: X
    行统计,计算出用户的使用费用,并提供完善和详细的报表。云存储系统计费涉及
    % t9 l0 T' \& K! q7 I8 Y的参数一般包括:CPU时间,网络出口带宽,存储量以及服务调用次数(包括读写
    4 ~! O3 O  z" D" U8 f( {/ tAPI调用次数)。
    - B9 ?' g6 Z. `5 h●资源管理。管理云存储平台中的所有服务器资源,将应用程序或者虚拟机映射
    * C5 h' d' J& \- S8 S. T: P自动部署到合适的计算实例,另外,自动调整计算实例的数量来帮助运行于其上的$ x1 w% [: }, u, L
    应用更好地应对突发流量。当计算实例发生故障时,资源管理系统还需要通知前端) S" G+ M4 J4 {* F
    的负载均衡层,将流量切换到其他计算实例。3 M! C* d0 o7 k3 H  }( x7 W, k
    ●运维管理。云存储平台的运维需要做到自动化,从而降低运维成本,一般来3 h6 `* M/ u0 E& ^8 x0 h
    说,有一套专门的Web运维系统用于系统上下线,批量升级系统程序版本等。% [/ D( C$ j  I1 J3 @2 N
    ●监控系统。监控系统有两个层面,其一是资源层面,即资源的运行情况,比如
    # Y3 J. Q2 _4 x& O/ {: P& |9 ^3 |" ACPU使用率、内存使用率和网络带宽利用率、Load值等,需要注意的是,云计算平
    ( c' c6 ^$ Z) M2 v/ u- r台除了监控物理机资源,还需要监控虚拟机资源的运行情况;其二是应用层面,主& ?3 h$ k7 W- I9 `
    要记录应用每次请求的响应时间、读写请求数等。
    * b) B  v5 R# P; e" t, U# z1 ]4 I! s4 S: f8 L5 t9 \1 l+ F/ n* p; L. B

    % x* S! o* K7 V6 G( @' M, a) U
    回复

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2025-1-22 15:02 , Processed in 1.632772 second(s), 30 queries .

    Powered by Javazx

    Copyright © 2012-2022, Javazx Cloud.

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