引言
云计算(cloud computing, aka 云端运算)已经流行了很多年,就算你有没有IT的背景,都很大可能听过云计算。简单来说,云计算就是计算设备共享,使用者(user)可以透过互联网随时时地(anywhere and any time) 按需(on demand)使用数据中心的设备,例如数据库、CPU等等,进行开发和计算。
而云计算已经发展了十多年(由2006年亚马逊提供云端服务开始计),当中衍生出不少新技术,雾计算(fog computing) 就是其中之一。下文将会介绍雾计算的由来和应用。
为什么是雾计算(fog computing)? 名字背后有什么意思?
云计算(cloud computing)名字的由来,我相信大部分人都可以联想到。简单来说,就是服务在很远很远的地方(i.e.云端),用户能够远距离存取。
但说到雾计算(fog computing),名字背后究竟有什么意义呢?代表服务像雾一样虚无缥缈?还是代表服务就如雾一样无处不在?其实雾计算的命名,是来自一名句:
雾是更贴近地面的云
这一句句子正正反映了雾计算的两个特点:
1. 雾计算是云计算的延伸(云与雾 — 反正都是水的聚合物)
2. 雾计算更接近终端用户(End User)
雾计算其实和云计算一样,都是在空气中飘浮,从远距提供服务。但雾又不像云一高到遥不可及,反而十分贴近地面,是围绕着生活周围性能较弱又更为分散的服务器。
雾计算的优势和用例(Use Case)
雾计算既然又分散又弱,究竟有什么好处呢?其实雾计算有一个绝对的优势,就是:
雾计算能提供超低延迟
雾计算所采用的架构更接近网络边缘,因此,存取速度就能非常之快。
用例1 — 智能停车场
以智能停车场为例(下图),这里有三层的架构,当中包括1)最底层的感应器,用作感知汽车有否在泊车位1中停泊,2)中层的雾计算服务器,用作数据的初步处理,3)最上层的云服务器,用作分析汽车影像。
当泊车位1中的汽车离开停车场时,就会触动到感应器制造车离开停车场的事件(Step 1)。但感应器的处理力有限,并未能有效处理到这件事 (event)。因此,感应器就会将数据传输到附近的雾计算服务器。由于雾计算服务器就布置在停车场内,当它收到这件事件后,就会作出初步分析,并决定快速通知附近的照明系统,将泊车位1的照明关掉,以表示这个泊位可供其他车使用(Step 2)。但由于雾计算服务器能力亦有限,并未能处理到影像。因此,雾计算服务器就会将车的影像传输到远端的云服务器中。云服务器处理力是最强的,但布置得比较远。云服务器处理完汽车的影像后,分析到汽车的车牌(AB1234),就会将车牌号码发回到雾计算器中(Step 3)。由于车由泊位到离开处需时,雾计算器就能利用这段时间等待云服务器计算,并将车牌结果显示到离开处(Step 4)。
通过雾计算的布局,这大大减低了云服务器的负担,又能快速回应环境的需求,一举两得。
用例2 — 实时地质监控
又例如以地质监控为例,地质每分每秒都在改变(e.g.温度、湿度、光度等),每分钟都在产生大量环境数据。
而且地球广大辽阔,监控地质不可能只是监控几十平方米的土壤。每次地质监控都可能涉数千万平方米。
若然,只布置一个强大的云服务器作地质监控,感应器和云服务器的距离可能相差数千万米远。就算信息能以光速直线极速传播,都可能会有数毫秒的延迟,再加上来回的计算时间,影响将可能很大。
因此,好多作地质监控的公司都会在中间布置雾服务器,来减少延迟时间。因雾服务器较接近感应器,它将能快速回应环境需求,作出实时的监控。
雾计算的架构(Fog Computing Architecture)
透过上述的用例可见,雾计算的架构其实可以分为三层: 1)感应器层(Sensor Layer)、2)雾计算层(Fog Layer)、3)云计算层(Cloud Layer)
感应器层(Sensor Layer)的作用显然是感应环境的变化,并触发事件(event)通知雾服务器。
但感应器的设定是需要网络管理员控制的,而设定的方法是可以透过雾服务器(Fog Layer)来进行。在雾服务器中,它会提供用户使用介面(GUI)和API。网络管理员只需将感应器连接到雾服务器,就能统一管理。而透过雾服务器的管理,管理员能够控制不同的感应器的行为。当雾服务器收到事件时,它能将事件作初步的分析,因应管理员的设定作出回应(Fog Decision),例如用例一雾服务器通知附近的照明系统等。如有需要,雾服务器亦会通知云服务器作进一步的分析,并因应云服务器的计算,作出回应。
简单而言,雾计算层(Fog Layer) 有以下作用:
- 第一层数据分析(First-level Data Analysis)
- 事件(event)生命周期控制和管理(e.g.回应和分析检测到的事件)
- 配置感应器(Configuration of Sensors)
而雾服务器本身亦是需要控制的,而设定的方法是可以透过云计算层(Cloud Layer)来进行。与雾服务器相同,云服务器会提供GUI和API来设定雾服务器。但与此不同的是,云服务器亦负责管理整体的服务,如开发人员开发了一个新服务,例如一个新的Fog API,管理人员就能将这个服务配置(Deploy)到全部的雾服务器中,使整体的服务得以提升。当有一个复杂的事件需要处理时,云服务器亦能作出深入的计算,并将结果通知雾服务器。
简单而言,云计算层(Cloud Layer)有以下作用:
- 总体数据分析(Global Data Analysis)
- 服务层面的控制和管理(Service Level Agreements (SLAs) monitoring)
- 管理及配置雾服务器(Configuration of Fog Servers)
总结 -- 这是一个云与雾互相配搭的新年代
如果云计算是新一代的集中式计算,那雾计算则是新一代的分布式计算,并且非常适合用于需要实时监控的物联网(IoT)中。在智能城市里,每秒都要处理大量数据(例如交通、风能、农业等),系统间需要频繁大量的沟通,并对环境作廿出即时回应。如果全部数据都由云端处理,一来会造成大量的网路流量,并有可能令云端会超负荷,二来由于云服务器较远,因此未必能提供足够快的服务。雾服务器正正能作为有效的中间处理,初步处理数据,并作出即时的回应,消除数据存储及数据传输的瓶颈。当数据需要大量计算时,就可以将数据传输到云端。云与雾互相配搭,将能最有效回应环境的需求。