容器

应用容器(App Container)是AWS PaaS的内核,在AWS PaaS中一切皆应用。应用容器是AWS PaaS最值得称赞的内核原创设计之一,完成于2013年8月。

AWS PaaS利用容器来运行AWS应用。每个应用的资源被容器独立的管理和调度,这些资源被应用Id(AppId)命名和隔离。

本地应用仓库

每个AWS PaaS实例的容器有特定的工作边界(应用仓库)。容器会根据应用所处的不同周期阶段,在特定的应用仓库间切换。

  • apps/upload 处于待安装/升级的应用介质文件
  • apps/install 安装的应用资源
  • apps/uninstall 被卸载的应用资源,处于该仓库的应用可以被还原或彻底删除
  • apps/dist 存放打包成可分发的介质文件(.app后缀)
  • apps/history 所有操作的历史资源文件

AWS PaaS应用容器采用业内广泛采纳的机制(如文件签名)和特殊机制来确保应用被完整的传输到容器,被成功的安装。如果中途发生意外(如文件损坏、安装或升级失败、中途物理宕机等),对应用仓库的所有操作被自动回滚到之前状态。

应用周期管理

应用周期主要包括:

  • 安装/升级
  • 卸载/还原
  • 彻底卸载

通过控制台管理

AWS PaaS管理员可以访问实例console(控制台->应用管理)完成这些操作。

可以通过终端输出信息监控应用在容器的处理过程。如下图,用户试图在PaaS中安装同事圈的安卓应用,由于依赖的父应用同事圈尚未安装,给出错误提示

通过命令行管理

对于有本地AWS PaaS环境的开发者,也可以在AWS命令行控制台中通过如下命令完成同等操作:

应用状态控制

应用状态受容器控制,状态间切换是动态的。每个应用在瞬间只存在一种状态,下面列出的八种状态有三种是中间状态(后缀ING)

  • READY(就绪)
  • STARTING(启动中)
  • ACTIVE(启动成功)
  • STOPPING(暂停中)
  • STOPPED(已暂停)
  • FAILED(已出错)
  • UNINSTALLING(卸载中)
  • UNINSTALLED(已卸载)

通过控制台控制AWS PaaS管理员可以访问实例console(控制台->应用管理)完成这些操作。

通过命令行控制

对于有本地PaaS环境的开发者,也可以在AWS命令行控制台中通过如下命令完成同等操作:

应用间互操作

应用容器基于JVM,为每个应用平行分配一个相互隔离的classloader,避免了不同开发商应用间资源冲突问题。那么,应用间的互操作该如何处理?

AWS PaaS为开发者提供了独有的ASLP 应用互操作接口协议(Application Service Locator Protocol),这是个伟大的发明。开发者可以像访问一个互联网url地址那样,访问PaaS中其他应用的接口,看起来就这么简单:

  • 在AWS PaaS中每个aslp服务都拥有一个唯一的访问地址,便于ISV开发者学习和理解
  • 避开ClassLoader互依赖风险和加载风险,也通过简单协议串让开发者避开ClassLoader概念
  • 协议与应用具体位置和实现无关,任何授权的PaaS内部应用或外部系统(设备)都可以调用
  • 支持同步调用和异步调用
  • 高性能,普通计算资源配置下也可超过1万/TPS(每秒吞吐量)

容器启动

AWS PaaS服务的启动过程,主要是容器完成各个应用资源绑定的过程,当容器操作未就绪或即将关闭时,为调用者返回的错误码如下:

  • 760 服务正在启动(Instance Starting) 当服务器正在启动尚未就绪时,会返回该错误信息。遇到这种错误,请稍后执行
  • 761 服务正在关闭(Instance Stoping) 当服务器正在关闭时,会返回该错误信息。遇到这种错误,请不要再重复请求,服务器将被关闭
  • 762 服务脱机(Instance Offline) 当服务器处于运行中,由运维人员暂停客户端响应时,会返回该错误信息。遇到这种错误,请联系系统管理员

容器日志与监控

  • 在控制台的应用管理(AMC),提供各应用运行状态和日志
  • AWS SLA服务为容器提供的监控和告警


Seven
 010-62962343-690
 liujx@actionsoft.com.cn
感谢您对该文档的关注!如果您对当前页面内容有疑问或好的建议,请与我联系。如果您需要解答相关技术问题请登录AWS客户成功社区