现在的位置: 首页 > 综合 > 正文

Amazon AppStream服务介绍

2014年08月21日 ⁄ 综合 ⁄ 共 3652字 ⁄ 字号 评论关闭

什么是AppStream服务?

随着移动互联网的迅猛发展,接入互联网的终端设备越来越丰富多彩。当你想给移动终端开发一个应用的时候,你是否会面临一个平台选择的问题?你是否在犹豫是为了满足更多的设备条件而降低应用的体验呢,还是只满足一部分设备来保证应用的用户体验?这些都不是容易的选择。那有没有办法能够比较简单的解决这些问题呢?亚马逊AWS在这个月的Re:Invent 技术大会上新发布的一个服务——Amazon AppStream能够用一个巧妙的方式帮到你。

Amazon AppStream(后面简称AppStream)是一种低延时、高分辨率的应用流服务,它可以让用户把部署在AWS云平台上的应用程序通过互联网以流的方式在客户端的设备上进行展现和交互。这些客户端设备可以是PC、平板和智能手机等。由于应用程序是运行在AWS云平台上面的,所以应用程序可以访问AWS云平台上包括计算(CPU/GPU)、存储和数据库等多种资源,从而彻底解决应用程序的资源需求问题。你可以选择把整个应用或部分应用通过流的方式交互到终端设备上去。对于那些原先只能运行在终端设备上但对计算资源要求比较高的3D模拟、游戏等应用,AppStream提供了一种非常合适的解决方案。为了让应用能够使用AppStream的流式服务,AppStream提供了一个软件开发包(SDK)。目前这个SDK支持云平台上的Windows
Server 2008 R2环境,支持的设备端包括FireOS、Android、iOS和Windows平台。AppStream针对MacOS X的SDK计划在明年推出。

 

 

为什么要使用AppStream?

AppStream主要可以通过下面几个方式帮助到应用开发人员。

1.     去除设备限制

通过AppStream,用户的应用程序可以利用AWS云平台上的资源,因此对资源要求比较高的应用都可以通过AppStream方式运行而不用担心GPU、CPU、内存和存储等资源的限制。由于主要的计算工作都在AWS云平台上实现,因此你不用担心设备端的资源限制问题。

2.     多平台支持

由于应用是通过流的方式与设备进行交互,因此在设备端只是一个简单的客户端连接程序。你基本上可以只开发一次应用程序,然后在多个终端设备上进行使用。原先那种先开发哪个平台上的应用的问题就不存在了,而且多个平台支持带来的开发、测试工作就简化了很多。

3.     更新简单

由于你的应用程序是通过AppStream集中部署在AWS云平台上面,而不是分布在用户的终端设备上面,因此更新你的应用程序就只需要在AWS云平台上发布一个新版本,这样所有用户都能访问到更新后的应用服务了。

4.     快速启用

对于移动应用,目前流行的方式都需要用户事先下载和安装应用。对于那些相对复杂的应用,这个应用程序包可能比较大,因此用户不能马上体验到应用程序。但是对于使用AppStream的应用程序,用户可以马上开始体验你的应用程序,不需要一个繁琐的下载、安装过程。

5.     增强的安全性

传统的应用安装使用方式会让你的应用到处分发,容易被反向工程等手段进行破解。通过AppStream方式部署的应用则不同,它的二进制代码都是安全地保存和运行在AWS云平台上面,因此能够更好的保护好你的应用程序。

 

AppStream的基本技术架构

在使用AppStream服务的过程中,AWS和开发人员各负责什么呢?大体上AWS提供了一个开发框架让你来构建一个基于AppStream的应用,同时还提供了一个部署和运行AppStream应用的环境。AWS还提供了一个AppStream管理控制台,你可以通过这个管理控制台来管理和部署你的AppStream应用。应用部署开通后,最终用户可以通过不同的设备来访问到你的应用程序。作为开发人员你需要做的就是实现应用的具体逻辑,然后通过AppStream的SDK来实现应用与AppStream服务的交互。当然你还需要通过AppStream的客户端SDK开发一个客户端接口应用。对于需要进行用户安全控制的应用,一般的你还需要通过AppStream的权限服务(Entitlement
Service)来实现用户的认证和授权管理。AppStream的基本工作架构如下图所示:

 

图1:AppStream架构

 

上面架构图中有几个关键的概念解释如下:

1.     应用程序(Application)

应用程序就是你使用了AppStream SDK开发的,部署在AWS云平台上的应用程序。这个应用程序可以是新开发的应用程序,也可以是经过修改的已有应用程序。为了使应用可以通过流方式进行交互,你的应用程序需要通过AppStream SDK中的XStxServerAPI函数调用来把音频、视频发送给客户端,同时通过XStxServerAPI的回调函数来接收客户端的响应输入。

 

2.     AppStream主机(AppStreamHost)

AppStream主机是用来运行你的应用程序的地方。当你部署AppStream应用的时候,AppStream就启用EC2实例来运行你的应用及相关服务。这些EC2实例都是针对图形化处理进行优化过的GPU实例,因此具有非常强大的图形处理能力。

 

3.     客户端程序(Clients)

在AppStream的应用架构中,客户端程序是一个运行在客户设备上的一个轻量级应用。它的主要作用就是解码应用的音视频输出,然后显示在终端设备上。当然,客户端程序另外一个功能就是捕获用户的输入信息并把它们返回给运行在AWS云平台上的应用程序。每个不同的终端设备需要不同的客户端程序,所以如果你希望你的应用程序能够运行在iPhone和Kindle Fire平板上,那么你需要两个不同的客户端程序,但是这两个不同的客户端程序访问同一个部署在AWS云平台上的AppStream应用程序。

 

4.     AppStream服务和AppStream管理控制台

AppStream服务和AppStream管理控制台都是AWS提供的用来管理AppStream应用程序的服务。通过AppStream管理控制台,你可以部署和管理你的应用程序。比如下面是一个部署应用的界面:

图2:AppStream应用部署

部署应用程序之后,你可以通过下面管理界面一目了然的看到你的所有应用的使用情况:

图3:AppStream应用管理

 

5.     权限服务(Entitlement Service)

权限服务是用来对应用的终端用户进行认证和授权的服务。它相当于应用程序的看门人,你可以设置只有通过认证的用户才能访问你的应用程序。这个权限服务是需要开发人员使用AppStream的REST API或者通过AppStream的SDK来开发。你可以用不同的方式进行身份认证,比如与数据库中的身份信息进行比较,或者与Amazon Login这样的第三方认证方式集成等。所以在应用访问流程上,终端用户首先要通过权限服务的认证,然后权限服务会调用AppStream服务来生成一个新的应用流会话。这个应用流会话通过一个URL的方式返回给认证的终端用户,最后客户端通过这个URL来连接的AppStream的用用程序。

 

 

服务访问协议和网络要求

为了给终端用户一个比较好的用户体验,流式协议对延时的控制和带宽的使用都需要进行动态调整,所以AppStream对服务的访问协议有比较高的要求。亚马逊AWS专门为AppStream设计了一个STX(STreaming eXperience)协议来满足不同网络情况下的用户体验要求。STX协议通过标准的H.264方式对音视频进行编码,并通过UDP协议进行传输。对于终端用户的输入信息则通过TCP方式传输给应用程序。在应用的使用过程中,网络的情况会被不停的反馈给云端的编码程序,这样应用程序可以根据网络情况进行实时调整编码率,从而让用户在不同的网络状况下有一个相对好的用户体验。

显然,AppStream是一个需要有网络连接的应用场景,应用的使用过程中客户端设备需要保持网络连接。如果需要以720p且每秒30帧的视频流质量,那么AppStream推荐的网络带宽是3Mbps。AppStream允许的编码率可以低至0.02位每像素,所以720p的最低带宽大概是553kbps。如果有更高的网络带宽,那么AppStream可以提供更高的视频质量。AppStream会自动根据带宽的情况实时进行编码率的调整。

 

从上面的讨论我们可以看出,AppStream对于许多资源要求比较高的应用场景,像游戏、媒体应用、模拟软件和3D图形开发等都比较适合。当然,由于应用是部署在云平台上面的,因此对一个实时性要求非常高的应用就不太适合,比如我们不建议那种第一人称射击类游戏采用这种方式部署。

最后,由于AppStream目前还是技术预览阶段,所以如果你是AWS用户想尝试使用AppStream服务,请到这里登记注册这个服务。

 

抱歉!评论已关闭.