近年ARM处理器不仅在移动端高速发展,更是凭借其优秀的能耗比在服务器领域上异军突起,越来越多的数据中心正在从X86架构的服务器迁移到ARM架构服务器上,并在此基础之上构建ARM云平台。Android系统随着多年发展,早已占据了移动操作系统的半壁江山, ARM处理器优秀的能耗比,使得Android系统从一开始就选择了ARM作为目标硬件平台。
当我们将ARM服务器和Android系统两者相互结合在一起时,就诞生了“云手机”的概念,它描述的是这样一个应用场景:我们在ARM服务器上运行Android系统并在其中运行一个我们定制开发的VMI(Virtual Mobile Infrastructure)服务,然后用户可以通过任何手机终端上访问ARM服务器上运行的Android系统和已经安装在Android系统中的APP,最后用户就可以像在本地使用Android手机一样,操作运行在ARM服务器上的Android系统了,并且性能更好,数据更安全。
为了能够充分有效地利用ARM服务器上的资源,我们使用了kubernetes管理工具对ARM服务器集群资源进行统一的管理,并使用轻量级的Docker容器虚拟化技术来运行Android系统,使得同一台ARM服务器上可以运行多个Android系统,提高了单机服务器的利用率。
Android系统中VMI服务主要包括:桌面图像重定向、键盘输入重定向、触摸屏输入重定向、音频重定向(包括音频播放和录音)、摄像头重定向和蓝牙、GPS、距离传感器、陀螺仪传感器、重力加速度计传感器、SD卡存储等设备的重定向功能。Android 系统中 VMI 服务的系统框架如图1所示,它主要由下面三个模块组成:
VMI服务端
VMI客户端
VMI服务端和客户端之间的传输协议
图1:Android VMI 服务系统框架图
Kubernetes是为生产环境而设计的容器调度管理系统,支持负载均衡、服务发现、高可用、滚动升级、自动伸缩等容器云平台基本功能,所以本项目中基于Kubernetes项目进行修改定制,通过Kubernetes在ARM服务器集群上搭建好了Docker容器云平台,将运行Android系统的Docker容器实例部署到该平台上,并且实现对集群中每个Pod的CPU、内存、网络带宽资源进行管理限制,控制资源保证,针对不同的Pod实现三个等级的 QoS 服务质量保证。整个Android Docker容器云平台架构如图2所示。