首页 > 技术 > 边缘计算

边缘计算是什么?有点像编织狗帽子|边缘计算怎么使用

人阅读 2023-05-10 05:20:02

【边缘计算是什么?有点像编织狗帽子|边缘计算怎么使用】lot物联网小编为你整理了的相关内容,希望能为你解答。

边缘计算是计算技术的新前沿。这篇文章解释了它是什么,为什么它是令人敬畏的,所有随着可爱的图片狗

我一直在努力想出一个很好的解释“边缘计算”到底是什么,而且由于一些我不需要向你们解释的原因,我已经落在了这个类比上: 这就像为狗卖针织帽子。

- 为什么要编狗帽子?-因为它们很搞笑!

他们做了一个很好的类比,但是在我们开始之前,让我们定义“边缘计算”的每个部分

我们从后者开始。

(请注意,“边缘计算”有时也被称为“边缘函数”或“边缘工作者”。)

什么是“计算”

计算就是当你要求一台机器为你做一些事情时所发生的事情。例如,当你问计算器5 x 7的乘积是多少时(当你质疑这些年数学课的好处时) ,计算器会发出哔哔声和哔哔声,然后回答是35。

那个计算器是一台计算机,那些哔哔声和哔哔声是计算结果所需要的时间和处理能量,也被称为“计算”

在 web 开发的背景下,计算机可以用来生成几种不同类型的产品: HTML、 JSON、机器学习数据模型、你和你的朋友用过滤器拍的自拍照,让你看起来像可爱的动画角色,等等。

为了简单起见,我将主要关注生成 HTML。

为了进行类比,我们可以把“计算”想象成为为狗编织帽子所花费的时间和精力。

所以才戴狗帽子。

“计算”发生在哪里?

事情变得有点复杂了。有些人可能会告诉你有两个地方可以进行计算: 服务器或浏览器(在用户的计算机上)。

虽然这并没有错,但是现在有点过于简化了,因为这两个选项都可以分成具有明显不同特征的小类别。

为了处理这些细微差别,我想分四个部分来讨论这个问题:

Traditional Servers 传统服务器Clients (Browsers) 客户端(浏览器)Static-Site Generators 静态-网站生成Cloud Functions 云端功能

如果你已经很熟悉这些部分,可以跳过它们,但是你会错过我的整个类比。

传统服务器

在传统的服务器中,计算机运行的软件是您选择执行您编写的代码,以便在请求进入时返回 HTML。使用服务器生成 HTML 通常称为服务器端呈现(SSR)。

计算机可能是你自己的本地(或“内部”)机器,安装在你的大楼里,或者在“云”中也很常见,基本上就是租用别人拥有的计算机,安装在他们的大楼里。

这些服务器运行24 × 7(理想情况下) ,可以随时接收流量。还可以使用 cron 作业设置单独的长时间运行任务或计划任务。

这很方便,但也有一些缺点:

即使服务器只是停在那里,你也要为它付费高流量可能使资源(内存/CPU)过期并导致其崩溃向上/向下扩展需要计划和计算性能与成本远离服务器的用户有较长的延迟期(较慢)

我想特别强调的最后一点是,当您使用传统服务器时,您负责业务逻辑代码、服务器软件和计算机的状态。这可能是一件好事,因为您拥有所有的灵活性和控制权,可以使用它做任何您想做的事情,但是这是以维护成本为代价的。安全、升级和维护都由你来负责。

服务器就像商业工作区

对于我们的类比,我们可以想象服务器有点像我们做狗帽子的建筑。我们可能会租用这个空间,或者直接购买它,但是我们有一个实际的地方,人们可以来为他们的狗要求一顶帽子。

这是一间漂亮的办公室,有裸露的砖块和充足的自然光。我们可以按照我们想要的方式描绘它,并根据需要对它进行修改。但也有一些缺点。

有些人要走很远的路才能到我们大楼。我们也必须支付账单(房租,电费,网络) ,不管我们卖多少狗帽子(我知道我们会卖,像,亿万,但仍然)。如果有人把他们的狗带来买新帽子,结果狗狗出去的时候在草地上拉屎了,猜猜谁会来清理。

客户

当我们说“客户”这个词的时候,大多数人想到的是客户。例如,“当这个狗帽子生意起飞的时候,我将会有十亿个客户。”在 web 开发中,“客户端”是用户的浏览器。

当用户请求我们的网站,我们可以指示浏览器下载一些 JavaScript,当这个 JavaScript 执行时,它可以注入一些 HTML 到页面上。事实上,我们甚至可以使用 JavaScript 来创建整个应用程序。

这通常称为客户端呈现(CSR)。

在客户端生成 HTML 非常棒,因为它可以创建更多的动态交互,感觉更快,因为您不需要等待页面重新加载。

我们甚至可以利用像 ServiceWorkers 或 WebAssembly 这样的工具来降低计算的影响力。

将计算迁移到客户端还意味着我们可以在自己的服务器上做更少的工作。这最终可以为我们节省一些钱,但计算还是必须进行,而且成本是由用户承担的。

以下是我看到的负面影响:

用户必须下载更多数据(JavaScript)我们不能有像 API 密钥这样的秘密,因为源代码是可访问的用户设备对性能有很大影响我们可以做依赖于用户的设备和浏览器

由于这些原因,以及搜索引擎优化、可访问性和其他原因,我认为我们正在看到更多的行业从客户端渲染转移。

客户端渲染就像 DIY 缝纫工具包

为了把这个想法带回家,客户端渲染就像是给客户一个 DIY 缝纫工具包。我们可以提供给他们所有的说明和材料,使他们自己的狗帽子,但工作需要由他们做。虽然这可以节省我们一些时间和精力,但它是以客户的成本为代价的。

它可以是一个很好的适合一些人,但不是每个人都适合。

Static-Site Generators

静态站点生成器(SSG)之所以有趣,是因为它们不是根据请求随时构建网页,而是提前预先构建网站的所有页面。结果是表示网站的静态文件夹和文件(HTML、 CSS、 JavaScript)的集合。

一旦您拥有了网站的所有静态文件,您就可以将它们部署到您喜欢的任何主机上。

这种方法在技术上属于 SSR 范畴,因为您没有使用浏览器进行计算。您正在使用某种编程语言在您控制的计算机(笔记本电脑、构建管道等)上提前构建页面。

从技术上讲,最终的结果与手工编写所有这些 HTML 页面没有太大的不同,但是使用 SSG 可能更快、更容易操作。

使用 SSG 有一些优点。通过提前生成 HTML,可以从用户的请求中删除计算时间。这可以加快响应时间,因为它们只需要等待服务器使用静态 HTML 文件进行响应。没有时间去构建它,而这可能意义重大。

由于您只处理这些静态文件,并不会随着每个请求的变化而变化,因此 SSG 还可以与内容传递网络进行很好的配对。稍后我将详细介绍这些问题,但结果是更快的响应,因为您可以消除大部分延迟。

静态网站也非常,非常容易托管。因为它们只提供静态文件,而且不需要计算,所以您可以用非常有限的资源托管自己的服务器,并且可以毫无问题地处理大量的流量。这也使得它们的主办成本非常低廉。事实上,有很多服务可以让你免费托管一个静态站点。

我要指出的最后一个好处是,在处理静态站点时,不需要处理运行时脚本语言或数据库。这让他们非常安全。你不能真的黑进一个静态网页,所以除非你真的公开分享私人信息,你不应该有太多的担心。

现在这一切听起来很棒,但是它也伴随着一些重大的缺点。首先,静态 HTML 不能包含动态内容(除非使用客户端计算)。对于一些内容不经常变化的网站来说,这是可以的: 博客、小册子网站、文档。缺乏动态数据还意味着不能为每个用户提供个性化的体验。

虽然您可以使用 JavaScript 向静态站点添加动态内容,但是它带来了额外的复杂性和固有的缺点(参见上面的 CSR)。

SSG 的另一个缺点是构建每个页面都需要时间。如果要生成成千上万个页面,这可能需要很长时间。当您发布新内容或更改现有内容时,可能需要预先构建所有内容。这可能是不可能的。

静态站点生成器就像预制的狗帽子

如果我把它比作销售针织狗帽子,SSG 就像销售预先制作的帽子,而不是按需编织。当顾客找到他们想要的时候,他们可以直接从架子上拿下来然后结账,不用等别人来织。

但是,如果他们想要一些个性化的东西,比如定制的合身衣服或者他们最喜欢的颜色,那该怎么办呢?我可能没有。一些精明的商界人士可能会说,忘记他们,只有预先编织的帽子,由于利润和劳动力(我不知道我在说什么)。其他顾问可能认为增加更多的员工(复杂性)来支持按需针织以及制作和储存预先编织的帽子是值得的。

最后,这取决于您的用例。预先编织的帽子(SSG)可能是伟大的,针织按需(SSR)可能是更好的,或者也许你支持两者。

Cloud Functions

除了传统的服务器之外,一些云计算提供商还提供云功能。这些工作允许您上传包含用于处理网络请求的函数的文件。该平台负责部署您的函数并将流量路由到这些函数,因此,它们为您提供了运行该函数的 URL。

请注意,在这个系统中,您不必提供、部署、维护或升级任何服务器。这就是为什么它们也被称为“无服务器函数”或仅仅是“无服务器”(它们有时也被称为“ lambda 函数”)。

尽管具有“无服务器”的性质,但仍然涉及到一个服务器。只是别人的服务器。这就是战略科学军团的领域了。

为了使这些函数工作,您通常必须遵循约定,以便平台能够部署您的代码。可能是文件名、文件夹结构、导出函数、参数和返回内容。

其中一个“陷阱”是,函数必须是无状态的,这意味着它们不会跨调用共享上下文。您不能依赖于持久化内存或文件系统,因为相同的函数可能在完全不同的机器上运行。

虽然这可能不太寻常,但是整个方法有一些好处。

它们非常容易提供,这对于动态团队或迁移功能来说是很好的 它们可以根据流量自动升级或降级你通常只支付他们运行的时间,可以节省金钱不再需要管理硬件或服务器,只需编写函数即可

这些都是考虑云功能的一些令人信服的理由,但也值得注意其局限性。首先,由于您自己不维护服务器,所以由服务提供商决定支持哪种语言。

除了语言限制之外,您可能还会注意到对可用计算资源(CPU、内存)的限制,而且大多数提供程序的超时时间相对较短。这些服务用于短期操作。

同样,平台可能会询问您希望函数在哪个区域上运行。如果用户从远处访问功能 URL,这种延迟会影响他们的整体体验速度。

Cloud Functions Are Like Robots Trained to Knit Dog HatsCloud Functions就像训练编织狗帽子的机器人

考虑到所有这些因素,我喜欢把云功能想象成你可以训练来编织狗帽子的机器人。当周围没有人的时候,机器人就会关闭,不会花费你任何东西,但是当客户开始提出要求时,机器人就可以提高能量来处理它。不同于预先编织狗帽的需求,这些客户希望与他们最喜爱的运动球吉祥物定制帽子。因此,无论你喜欢丹佛腊肠犬、 Pittsbulls 犬、纽约犬、金门寻回犬还是芝加哥花花犬,对于机器人编织者(云功能)来说,按需定制都不是问题。

什么是“边缘”

在描述“边缘”到底是什么意思之前,让我们先来看看它试图解决的问题。有时候用户真的离我们的计算机(服务器)很远,因此,当他们的请求在服务器之间传输时,他们不得不等待更长的时间。

为了解决这个延迟问题,非常聪明的人提出了部署一个程序的多个副本并将其分布到世界各地的想法。当用户发出请求时,可以使用最近的副本来处理,从而减少了传输距离和传输时间。

事情有点模糊了。“边缘”是否必须由网络服务器组成,或者你的智能手机可以算作网络中的一个节点吗?物联网设备不也是“边缘”的吗在调用网络“ edge”(两个)之前,您需要的最小节点数是多少?网络是否必须覆盖特定的区域才有资格获得“边缘”地位?

我不能回答这些问题。对不起。但是我认为我们不需要这样做,只要我们明白我们的目标是通过减少用户和端点之间的距离来减少延迟。因此,设备的分布数量越多越好。

让我们来看一个不那么模糊的“边缘”是什么的例子。

内容传递网络

内容传递网路(CDN)是一个全球分布式服务器网络,旨在提供静态资产,如 CSS、 JavaScript、图像、字体等。可能有成千上万的服务器,每个服务器都有自己的资产副本。

当请求某个资产时,比如我的狗 Nugget 的照片,CDN 会计算出最近的服务器在哪里,并将请求发送到那里处理。图像被发送回用户 lickity-split。这适用于他们请求的任何静态资产,这是提高性能的极好方法。

CDN 已经存在很长时间了,它们与上面的 SSG 之类的东西是很好的配对。你可以预先生成您的网站和服务的整个事情从一个 CDN,它将是超级快速。

CDN 就像便利店

还记得上面的类比吗? 我们讨论了预先编织的狗帽子,这样只要有人来我们店里,就可以随时买到?现在想象一下我们做同样的事情,但是我们也把这些帽子分发到各个商店。

CDN 以同样的方式工作。人们不必开车穿过城市来买一顶狗帽子,他们只需走几个街区就可以到最近的便利店,我们已经在那里为需求进行了储备。

这对他们来说非常方便快捷。

(好吧,这个类比并不完美,因为从技术上讲,CDN 本身并不会耗尽库存,但关键在于延迟)

用户体验3D 生活

我到底想说什么? 听我说。

整个讨论中反复出现的主题是性能,当谈到速度时,有三个主要因素:

Distance 距离 请求和响应必须传输(也就是延迟)Download 下载 要解析和执行的响应的大小Device 装置 基于硬件、软件和可用资源的能力

这就引出了我的下一个技巧: 当表达一个观点时,头韵比连贯性更好。

但是说真的,这三个因素确实影响了我们应用程序的速度。作为开发人员,我们的工作就是找到衡量成本和收益的最佳地点,并找到进行计算的最佳地点。

今天一个非常现实的困境是,尽管客户端呈现的延迟很低,但实际呈现的速度很慢。尽管服务器端渲染速度很快,但它们可能会遇到高延迟。

为了获得完美的3D 体验,我们将:

把东西移到离用户更近的地方(比如 CDN)在服务器上工作(比如云服务器/功能)派更少的人去

基于你们的应用程序,最后一点是非常主观的,所以我不能特别为你们说太多,但是我们可以讨论前两点。

这最终让我们回答了主要问题。

什么是“边缘计算”

Edge 计算是一个可编程的运行时(如云函数) ,它是全球分布式的(如 CDN)ーー这非常棒,因为它可以为我们提供尽可能接近用户的动态服务器端功能。

另一个好处是,许多边缘计算平台可以提供关于请求处理位置的信息。对于传统的服务器或云功能,您已经知道服务器的位置,因为您选择了部署它的区域。它永远不会改变,也不是很有趣的信息。

但是它在边缘计算的上下文中很有用,因为我们知道这些服务器尽可能接近用户,通常在同一个城市。有了这些信息,我们可以根据用户位置在应用程序中应用逻辑。

当然,浏览器有能力通过 Geolocation API 提供用户信息,但是它需要用户交互,而且用户总是可以拒绝访问。有一个接近用户的位置选项是方便和隐私友好,可能是足够好的,甚至不需要要求更多的细节。

好处

我看到边缘计算的好处,边缘计算分为三个不同的组。

对使用者:

与服务器/云功能相比,延迟更少与客户端渲染相比,下载量更少保持工作关闭设备改善其他应用程序或电池寿命

对于开发商:

创建概念验证的低门槛 一致的执行环境(不同于浏览器)团队各司其职基于位置的逻辑没有要管理的服务器/基础设施秘密保密(与客户端相比)

利益相关者:

减少原始服务器上的负载可以提高原始服务器的性能、可靠性和成本 自动伸缩提高了整体性能和可靠性 只为你使用的东西付钱限制

所以我们已经证明了边缘计算是令人敬畏的,但它并不是没有它自己的粗糙边缘(° °)

目前,大多数平台都以自定义运行时(V8隔离版本)的形式支持 JavaScript。因此,尽管支持语言特性,但您可能只能访问一组非常有限的平台特性。它可能不支持在浏览器或 Node.js 中找到的所有相同的特性。

除了有限的平台特性之外,您可能会发现,与云函数之类的东西相比,边缘计算在计算资源或可用于计算的时间方面也受到更多的限制。这样你工作的时间就会减少,工作的力量也会减少。

当你深入研究实际情况时,这些限制是有意义的。如果您打算将服务器部署到世界各地的数万个位置,那么它们需要尽可能轻量和快速,而且由于计算成本高昂,平台提供商必须对资源和时间进行一些限制。

什么时候应该使用边缘计算?

决定在哪里进行计算已经很困难了。在做出决定之前,必须考虑到延迟、下载大小、设备功能等等。正如我们上面所概述的,每种产品都有自己的优点和缺点。

所以你可能会问自己,边缘计算在哪里适用。

首先,我们应该把边缘计算看作是兵工厂的一个补充,而不是任何一个部件的替代品。

过去我们在哪里:

Client-side JS -> Client-side service worker -> Cloud functions -> Traditional servers

我们现在有:

Client-side JS -> Client-side service worker -> Edge compute -> Cloud functions -> Traditional servers

看看我能不能帮你做决定。

标志你有一个很好的边缘计算用例:

无状态(不需要持久化内存或文件) 不会花很长时间Latency-sensitive 对延迟的敏感性高度本地化

标志你有一个糟糕的边缘计算用例:

有状态(需要持久化内存或文件系统) 需要大量的计算资源长时间运行的操作ーー顺序/瀑布请求(可能会增加延迟)

(注意,上面的无状态/有状态点不属于数据库等外部源。)

一些常见的用例:

地理定位快速自动建议/提前输入修改请求/响应重定向管理基于令牌的个性化(A/B 测试,特性标志)无状态认证(JSON Web 令牌) API 代理/编配我为什么要在乎?

现在我们来到了“如果它没有坏,就不要修理它”的部分。如果你已经建立网站没有边缘计算很好,为什么甚至担心它?

答案取决于性能。

我在上面概述了一些影响性能的因素,相关的事情是,无论我们作为一个社会如何改善网站(更快的网络、更好的设备、更小的应用程序) ,总会有一个问题我们无法解决。

光速问题

随着时间的推移,技术不断进步ーー计算机速度越来越快,存储空间越来越大,网络能够处理更多的数据。

如果我编写一个程序来计算我到底有多爱我的狗,那么今天的计算机可能需要10年才能计算出来。在10年内,计算机可能只需要10毫秒。然而,在这两种情况下,告诉我的狗我爱他所需要的时间将取决于他离我有多远。

因此,在我们找到通过虫洞发送“我这么爱你”的方法之前,我们将永远无法以超过光速的速度发送信息。这是一个宇宙常数。

那我们能做什么?很简单。把电脑移到离我的狗(或用户)更近的地方。这减少了距离,减少了延迟,减少了等待时间。因此,边计算的原因。关键是减少延迟。

这里有一个来自我的文章“利用边缘计算优化内容迁移”的例子它展示了边缘计算如何减少重定向的查找时间。

没有边缘计算:

旧服务器通过重定向指令响应新 URL,浏览器将请求重定向到新 URL,最后响应发送给用户

边缘计算:

用户请求旧的 URL,最接近用户的边缘服务器用重定向指令响应,浏览器将请求重定向到新的 URL,最后将响应发送给用户

你注意到我是如何用箭头的长度来表示物理距离的吗?聪明!我希望它能帮助我们理解这一点,但是除了图像上的箭头之外,在环球旅行中,我们实际上能在绝境求生手册上节省多少时间呢?

大概300毫秒左右。

这就引出了我的存在危机:

这一切真的只是为了速度吗?300毫秒有多重要?I 这么复杂值得吗?狗狗喜欢戴帽子吗?

简短的回答是: 是的; 这取决于; 有时; 可能不是,但他们看起来非常可爱。

强制性统计数据集

每当有人开始谈论性能的时候,它总是与一系列的统计数据联系在一起,这些数据支持他们从... ... 某些研究中得到的信息。

这篇文章没有什么不同(也许是另一个普遍常数?)人们喜欢数字,所以这里说:

2017年,Akamai 发布了他们的在线零售业绩报告,发现了以下内容:

100毫秒的延迟会导致销售额下降7%2秒延迟增加了103% 的弹跳率 如果加载时间超过3秒,53% 的智能手机用户不会转换对于大多数销售来说,最佳装载是1.8 -2.7秒28% 的用户不会再访问速度慢的网站销售额最高的网页加载速度比竞争对手快26%

想要更多的统计数据? 没问题。

沃尔玛发现他们每增加一秒载入时间,他们的销售额就增加2% 。想想沃尔玛在2021年的收入是5000亿美元。其中百分之二是100亿美元。这意味着他们可以雇佣133,000名开发人员来增加一秒钟的加载时间,他们仍然可以获利(基于2020年75,000美元的平均工资)。

绩效影响收入、认知、品牌忠诚度和参与度。对于一些公司来说,绩效比其他公司更重要。

这不仅仅是钱的问题

当我说人们应该为了钱做点什么的时候,我总是觉得有点恶心。金钱对于数据来说很重要,因为它很容易量化,人们理解它的价值,而且更多的人在乎它,但是还有其他理由在乎它吗?

我做了一些思考,虽然它更模糊,这里是我的想法。

边缘计算是关于速度和可靠性。这让我想到了获取信息的重要性。信息在危机时期变得越来越重要,今天我们有很多这样的例子。

我很幸运能够在我的办公室里写一篇轻松愉快的博客文章,但是在世界的其他地方,人们担心自己的生命安全,他们需要快速、可靠的信息来源。

可能是预约接种疫苗,战争的最新情况,或者让他们所爱的人知道他们没事。速度和可靠性是至关重要的,而且它与金钱毫无关系。

结束语

希望这有助于更多地解释什么是边缘计算,以及它为什么重要。如果你需要最后一个类比,你可以这样想。

就像训练有素的机器人在便利店织狗帽子。

很清楚,对吧?

我确实认为边缘计算是 web 开发的下一个阶段。是的,有限制,是的,他们增加了复杂性,是的,好处主要归结为削减数百毫秒,但这只是今天的图片。

我相信技术将继续进步,平台将减少限制。而且我相信框架作者会增加对边缘计算的更多支持。这样就消除了一些复杂性。我们今天已经看到了这种情况的发生:

Astro Remix Nuxt Next 11ty 甚至更多

太令人兴奋了! 每个人都有狗帽子!

- 值得吗?-看情况。

但我觉得这很酷,我希望你能试试。

以上内容为【边缘计算是什么?有点像编织狗帽子|边缘计算怎么使用】的相关内容,更多相关内容关注lot物联网。

LOT物联网

iot产品 iot技术 iot应用 iot工程

Powered By LOT物联网  闽ICP备2024036174号-1

联系邮箱:support1012@126.com