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的發展前景還是巨大的,但是目前的格局依然混亂。技術的發展解決了基礎硬件的問題,但更多的是一個生態的建立。希望各家廠商能利用自身優勢積極推進這一技術的發展。也希望我的夢想能真正的落地實現。
總結
以上是生活随笔為你收集整理的CloudPhone真的快要来了的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Fedora 10安装Compiz-fu
- 下一篇: python画一箭穿心_turtle的简