前言 对于云端编程,我想大多数人的第一想法应该是微软推出的 VSCode Remote,这个功能基于开源的 VSCode,通过 SSH 远程连接到服务器,开发者可以通过端口转发、SCP 等一系列实用功能快速实现远程开发。我曾体验过这种编程方式,极大减轻了电脑性能的压力,但我认为这并不是云端编程的最终形态,因为我仍然需要在自己的电脑上安装 VSCode 才可以使用这个功能。
最近 2021 款的 iPad Pro 上市了,这次搭载的是和 Mac 同款的 M1 芯片,性能强大到甚至有让人利用 iPad 编程的想法,只是迫于各大厂商没有推出适配 iPad 的 IDE,便也只能沦为“买钱生产力,买后爱奇艺”的工具了。那么有没有什么办法可以在不安装 IDE 的情况下使用 iPad 编程吗?自然是有的,JetBrains 公司提出了一种新的解决方案:把 IDE 搬进浏览器里。这便是本文的主角——JetBrains Projector。
发展 提起 JetBrains,你会想到什么?各路强大的 IDE,比如 Android Studio、IDEA、WebStorm……这些对于开发者来说耳熟能详的产品都出自这家公司,这些 IDE 的功能强大,但同时也只能运行在用户自己的电脑上,其“内存黑洞”的称号更是让开发者们又爱又恨。
事实上,目前所有的 JetBrains IDE 都使用 Java Swing 绘制 UI,其他基于 IntelliJ 的 IDE 也是如此,比如 Android Studio。鉴于 Swing 是 Java GUI 的一个库,而 Java 本身就是一门很吃内存的编程语言,虽然可以充分利用 Java 跨平台的特性,这也是这些 IDE 在 macOS、Windows 和 Linux 上 UI 几乎一致的原因。但现在,Swing 跨桌面平台的特性却也成为阻碍其发展的一个原因了,在一些瘦客户端的情况下,“内存黑洞”屡屡被人诟病,Swing 也无法发挥其优势,于是 Projector 便应运而生了。...
我上大学时的第一台电脑是微星的一款游戏本,当时买它的原因很简单,性能足够强大,无论是编程等日常任务还是游戏它都可以胜任。现在回想起来,依稀记得它炫酷的灯光、强悍的性能以及用它驰骋虚拟世界的快感。后来年纪渐长,打游戏的热情也逐渐减少,虽然那台电脑仍在家中,但已经落后的性能让我鲜有机会“宠幸”它。再后来,读研之后换了 Mac 后更是没怎么碰过游戏了。
大家都说正经人谁用 Mac 打游戏,一开始我也是这么认为的,毕竟买来就是用来写代码的,可是最近发现的一个有趣玩意让我对这个问题有了新的想法,那就是——云游戏。
云计算?云? 以下内容摘自百度百科
云游戏是以云计算为基础的游戏方式,在云游戏的运行模式下,所有游戏都在服务器端运行,并将渲染完毕后的游戏画面压缩后通过网络传送给用户。在客户端,用户的游戏设备不需要任何高端处理器和显卡,只需要基本的视频解压能力就可以了。
我将上述内容中一些比较重要的点做了标注,百科在对于云游戏的描述时,第一句就直接阐明了云游戏的基础是云计算,那么「云计算」以及「云」指的是什么?
云计算(cloud computing),是一种基于互联网的计算方式,通过这种方式,共享的软硬件资源和信息可以按需提供给计算机和其他设备。提供资源的网络被称为“云”。
看完上面一句话有些小伙伴还会不太清楚,我们先来回顾下之前的知识。我在《互联网是如何工作的》这一篇文章中提到:一台又一台的服务器通过“网线”连接在了一起,形成了类似下面这样的结构 👇
众多服务器组成的这种结构被称为“互联网”,而其中每台服务器都被称作“节点”。
事实上这些节点都和你的本机无关但又何你的本机有关。
为什么这么说呢?
无关的原因是,这些节点所包含的计算能力(CPU、GPU)和存储文件都不是你的。有关的原因是,你可以通过某些方式运用这些能力和文件。
而上述所说的一个个节点便是云计算的核心,即「云」。
大量的水滴漂浮在空中,聚合成云。和我们所说的云很相似,只是这里的云是由大量的数据存储、计算资源和应用程序组成,这便是云计算服务。
「云」其实是一个抽象的概念,并不像服务器有一个具体的实物可以展示,我们可以把「云」理解为一个资源共享池。举个例子就是,我有很多东西,家里放不下了,放到一个特定的地方存着,随时提取。大家都可以访问的就是「公有云」,只有特定的人可以访问的就是「私有云」。
这个“东西”一般是指数据、软件、服务等,而“特定的地方”就是云。所以对于云计算我们也可以简单的理解为:将本地需要进行的计算任务迁移到云端进行。
如今云计算及其产物已经深入我们的生活,我们熟悉的百度网盘、iCloud 还有最近的阿里网盘就是「云存储」,以及本文要介绍的主角「云游戏」也是云计算的产物。
云游戏 云游戏的原理 在现在这个游戏变得越来越流行的时代,人们却被低配设备所限制,比如我,虽然出了很多新游戏,却苦于手头没有一台合适的机器用于玩耍。以往玩游戏我需要配一台游戏主机或者高性能游戏本,少说也要五六千,因为游戏对于计算机性能的要求是非常高的,这些都必须依赖玩家自己的电脑。
但是在云游戏模型中,所有的游戏逻辑和渲染都在服务器端运行,然后再从服务器把压缩的画面传给用户,这样玩家就不需要一台高性能的计算机了,对于设备的要求便也就是基本的视频渲染能力和可靠稳定的网络环境了。
云游戏摆脱了对硬件的依赖。对服务器来说,仅仅需要提高服务器性能而不需要研发新主机;对用户来说,可以得到更高的画质而不用购买高性能的计算机。也就是说,用户可以花一小笔钱租一个更好的计算机来玩各种游戏,就像用机顶盒看电视一样,这意味着玩家可以在计算机硬件,特别是 GPU 上省下一大笔钱。
云游戏需要什么? 低延时 在解释云游戏的原理时,我们提到了云游戏的游戏逻辑和渲染都是在服务器端进行,然后将画面传送给用户,所以说一台可以高速上网的设备极其重要。如果网速不够快,不够稳定就无法及时接收到高质量的画面。
说到这我们需要介绍一下网络延时,所谓网络延时指一个数据包从用户的计算机发送到网站服务器,然后再立即从网站服务器返回用户计算机的来回时间。通俗的讲,就是数据从电脑这边传到那边往返所用的时间。
以我们现在还在普遍使用的 4G 网络而言,它的延时基本在 30ms ~ 70ms 波动,部分信号不好的地方延时还会更大。这还只是数据传输时的网络延时,如果算上画面编解码的时间,延时达到 100ms 是很容易的事情。
我们知道视频的原理就是每秒播放多张静态画面,画面越多,对于人的观感来说就是视频越流畅。这是因为对于人眼来说,我们的视觉神经是有一个反应速度的,并且对于不同频率的光有不同的暂留时间。其时值约是 1/16 秒,也就是 62.5ms。也就是说,如果网络传输所消耗的延时大于 62.5ms,我们就会觉得画面很不流畅(62.5 是一个理论值,实际情况下这个数值会小于 62.5ms,对延时的要求更苛刻)。
高带宽 现在我们来做一个简单的数学题。
刚才我们说到视频的原理是每秒播放多张静态图像。我们知道图像都是由一个个像素点构成的,对于一张非黑即白的二值图像,不压缩的情况下一个像素只需要 1 个 bit。如果是 256 种状态的灰度图像,不压缩的情况下一个像素需要 8bit(1 字节,256 种状态)。如果用 256 种状态标识屏幕上某种颜色的灰度,而屏幕采用三基色红绿蓝(RGB),不压缩的情况下一个像素需要占用 24bit(3 字节),这个就是常说的 24 位真彩色。...
这年头,不管什么应用,仿佛“上云“都成了标配,感觉拥抱了“云”,应用的逼格都上升了。那真的是这样的吗?
是的,的确是这样。 云计算是一种按照需求通过 Internet 获取计算资源的形态。这些计算资源被包装成为服务,提供给用户。而提供这些服务的主体,我们称之为云服务供应商(Cloud Service Provider)。云服务最主要的有三类,就是本文的三个主角 IaaS、PaaS、SaaS。 那这三个 aaS 到底是个啥?
XaaS 看到这个标题,可能就有人产生疑惑了,那三个 aaS 都不知道是什么,怎么突然又多了一个 XaaS。不急,且听我娓娓道来。 XaaS,即一切皆服务,代表 “X as a service”、“anything as a service”或“everything as a service” 。这一缩写指越来越多地通过互联网提供的服务,而不仅仅指本地或现场服务。云计算的本质就是 XaaS。 XaaS 最常见的例子就是“软件即服务”(Software as a Service,SaaS)、“基础设施即服务”(Infrastructure as a Service,IaaS)和“平台即服务”(platform as a service,PaaS)。
详解 根据所提供服务的不同,云服务可以被分为以下三类/三层:
缩写 全写 注释 IaaS Infrastructure as a Service 基础设施即服务 PaaS Platform as a Service 平台即服务 SaaS Software as a Service 软件即服务 如下图所示:...