CloudPhone真的快要来了

导言:

CloudPhone或者说云手机是一直都有的一个想法。很早就已经在虚拟机里面跑过Android系统了,当时在里面安装了一个打飞机的小游戏,做了简单的体验。当然只能仅仅达到可用,离真正的让人满意还是差的很远。但是已经能看到未来手机的趋势。因此萌生了对未来手机的一种憧憬。

想象中的CloudPhone

手机目前功能很多,电话、拍照、游戏、购物等等。多样的功能其实让手机变成了一台小电脑。云桌面技术已经盛行好久,其实已经能满足基本的办公诉求。那么让手机变成云手机(CloudPhone)也是一件很酷的事情。云桌面中有VDI方案,其实就是虚拟机跑在云服务器上,用户使用的瘦客户机,提供一个简单的系统,主要用来接入到远端虚拟机。如图所示
在这里插入图片描述
在云桌面的场景下,主要就是解决好三部分问题。

瘦客户机:满足用户跟物理设备交互的界面能力。例如插入耳机,U盘等的接口。
服务器:满足用户对电脑使用的需求,提供强大的虚拟机能力。
接入协议:链接瘦客户机和服务器将图像进行本地呈现。受限于网络条件,所以协议的设计需要在有限的带宽下尽量的提供更高的画质呈现。

类比桌面云,其实CloudPhone也有相似的架构。
接入手机:满足用户跟物理设备交互的界面能力。这一块要提供的就会很多,现在的手机,音箱、相机、电话、短信都还是要在本地。保证在网络不稳定时基本功能可用。可以认为已经重新退化到功能机的需求。
服务器:满足智能应用的需求,提供手机操作系统,让用户跟使用智能机完全一致的体验。
接入协议:在现有的网络条件下提供更高的画质呈现。

这些设想基本上是在2016年时候产生的,当时的桌面云体验其实并不好,一个是桌面协议并不理想,显示画质不好。另一个虚拟机在对显卡的虚拟化也显得乏力。毕竟当时的虚拟机还是已计算能力为主。让每一个虚拟机都具备一块GPU还是相当奢侈的。网络那个时候4G也才开始。基础设施也没有达到相应的诉求。所以站在当时的角度看,CloudPhone还是可望而不可及,需要满足的条件,不仅仅是技术本身。还依赖各种技术的进一步发展。

新时代,New CloudPhone

时光荏苒,岁月如梭。转眼来到了2020年。华为推出了CloudPhone。网易腾讯百度也相应开始推出云游戏。一轮一轮的技术发展,最终有可能将梦想变为现实。到了现在再次来看CloudPhone的想法。
对于架构来说,其实还是一致的。并没有本质改善。但是看看技术的发展,确实有了很好的机会。

  • 5G的普及——新基建的消息已经传遍全国。其实5G带来的了各种行业的改革。高带宽,低时延,网络分片。从网络环境来看,从云端到本地已经有了很大的提升。这为CloudPhone的协议连接提供很好的承载媒介。
  • VGPU ——nvidia的GRID VGPU技术已经被广泛使用。借助硬件虚拟化,虚拟机也能提供很好的GPU能力。在这样的虚拟机中,一直被诟病的显示能力也有了显著提升。
  • Virtio-GPU——KVM虚拟机中磁盘,网卡等都很早的使用virtio进行了性能提升。而显卡一直没有很好的解决方案。之后出现的virtio-GPU借助Virgl 3D这个技术。终于可以透传GPU相关指令到host上进行模拟。但是效果也是仅仅能支持3D,没有硬件虚拟化那么好的效果。
    最近社区给Virtio-GPU使用Vulkan。理论上应该会有更好的效果。在不能使用GRID时,使用Virtio-GPU技术,也是一种选择。
  • ARM服务器——感谢老美的技术制裁。目前掀起了一波ARM服务器的潮流。手机中使用的CPU就是ARM架构的,所以在ARM服务器上如果进行CloudPhone的模拟,将会避免在x86_64平台中为了兼容ARM应用必须进行指令转换的烦恼。这一块也会让CloudPhone的性能加速。
  • 传输协议——常用的协议还是VNC和Spice。对于图像显示貌似还没有看到特别大的进展。但是发现Android使用adb测试时,可以将远端手机图像放在本地呈现。这一块相较于传统通过显卡获取图像信息是一个新的解决思路。

CloudPhone实现的思路

从最基本上来看,其实CLoudPhone的本质就是能在云服务器上提供一个Android 或者IOS操作系统。当然IOS只能期待苹果给我们惊喜了。对于Android,既然是系统自然就可以通过不同的层次来解决模拟出操作系统的问题。

  • 模拟硬件——跟虚拟机思想一样,通过模拟手机硬件,欺骗Android认为自己就是跑在一个真实的手机硬件上。例如目前使用的goldfish技术。就是在qemu中模拟手机的外设然后提供给Android系统使用。当然是在X86平台上跑还是ARM平台上跑还是需要仔细斟酌。
  • 操作系统——Android也是跑在linux之上的。那么linux本身可以跑在x86和ARM平台上。所以对于操作系统也可以制定相应的版本,比如Android-x86就可以在虚拟机中安装起来。目前的x86平板很多都在使用Android-x86系统。同样的也可以编译出Android-arm系统来跑在ARM虚拟机中。
  • APP生态——如果使用ARM生态,那么APP都是现成的,那需要操作系统及模拟硬件上无限的接近手机环境。否则就会出现常见的APP闪退,白屏等问题。那么换个思路呢。如果APP本身也可以做一些改变,开始对CloudPhone上跑的系统进行兼容性适配。那么相信CloudPhone将真正走向商用。
  • 容器——Anbox技术是将Android系统通过lxc做到了容器中。这一块越过了模拟器环节,直接让Android系统和硬件对接,借此提升性能。
    关于容器和虚拟机的对比不在这里详述。
    容器化的Android开始面向应用。针对每一个应用可以初始化一个窗口,这个实现其实更符合云游戏的思路。你要的不是也手机,而是一个可以远程运行应用的沙盒。
    模拟起里的Android提供了一个完整的手机功能,至于你要做什么完全取决于用户。
    因此这两种技术面向不同的场景,都有自己的生存空间,不存在谁好谁坏之分。

那么现在实现云手机或者云游戏的思路有下面几种:

  • 1.x86服务器 + ARM模拟器 +Android-arm
  • 2.x86服务器 + x86模拟器 + Android-x86
  • 3.ARM服务器 + ARM模拟器 +Android-arm
  • 4.x86服务器 + Android-x86容器
  • 5.ARM服务器 + Android-arm容器

这里主要说的是系统形态,对于APP的选择是一个生态的问题,为了兼容ARM-APP,则需要在x86系统中通过类似houdini来翻译ARM接口跑ARM APP。但是这个一方面会有性能损耗,另一个兼容性也不是很好。如果使用ARM系统则没有生态的问题,但是要解决ARM服务器本身和x86服务器在性能上的差异。综合来看,并不能简单的得出哪个组合更适合商用。例如,腾讯愿意将王者荣耀编译一个x86版。那么在x86服务器+Android-x86容器+x86王者荣耀,肯定是最好的选择。例如华为使用鲲鹏服务器+ARM模拟器+arm王者荣耀就是他自己最好的选择。

总结

CloudPhone的发展前景还是巨大的,但是目前的格局依然混乱。技术的发展解决了基础硬件的问题,但更多的是一个生态的建立。希望各家厂商能利用自身优势积极推进这一技术的发展。也希望我的梦想能真正的落地实现。

发布了6 篇原创文章 · 获赞 0 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/ssdxiao0/article/details/105559477