起初,在瑞士地下室的桌子上只有一台电脑。它有一个红色的标签:
这台机器是服务器。 不要断电!!
32 年后,全世界有数亿个版本的计算机,有些甚至默认都是关闭的。
很长一段时间,我们的 web 开发感觉就像只有一台机器。我们的开发就像我们的代码部署在一个大型数据中心的某个服务器的单个实例上一样。
过去任何静态的东西可以都来自全球各地靠近用户的 CDN。现在,动态 Web 应用程序也开始出现这种情况,您可以在各个地方部署它。
边缘计算是什么?
当人们说“边缘”时,他们的意思是网站或应用程序将同时托管在全球多台靠近用户的服务器上。当有人请求网站或应用程序时,他们将被定向到地理上最接近他们的网站服务器。这些分布式服务器不仅提供静态资源,还可以执行自定义代码,并且可以执行 动态 web 。
将服务器移近最终用户也是优化的一种就佳方法。这意味着每个页面加载的延迟更低。因为页面加载时间越长,用户离开的可能性就越大。根据 Google 的研究,当加载速度从 1 秒变为 3 秒时,离开的可能性增加 32%。当延迟从 1 秒变为 5 秒时,可能性增加 90%。用户在 2 秒延迟的情况下,可能会访问 9 个页面,但在 7 秒的延迟情况下,最多只会访问 3 个页面。
集中式服务器模型
集中式服务器模型有效并继续适用于许多应用程序。但是未来网络的规模正在与这种模式作斗争。让我们来看看这种架构是如何形成的,以及多年来它是如何发生变化的。
服务器作为一个概念是在 1969 年网络工作组的 RFC 中引入的。Tim Berners-Lee 办公室的 NeXT 机器是第一台 Web 服务器,但到那时,互联网已经运行了 20 多年。
缓存靠近用户的内容,这种架构已经运行了很长时间。但是到了 90 年代末和 2000 年代初,当网络开始变得庞大时,分裂开始出现。
第一个是 Akamai 在 1998 年推出第一个内容交付网络 (CDN) 时所称的“热点”。基本上,服务器因受欢迎程度过多或 90 年代黑客的早期 DDoS 攻击 而崩溃。
Akamai 的 CDN 将内容缓存在分布式服务器系统中。请求被路由到最近的这些服务器。但是,这些仅限于静态文件:您网站的 HTML 和 CSS,或者上面的图像、视频或其他内容。任何动态仍然必须由您的核心服务器处理。
CDN 仍然是现代网络的核心套件。大多数静态文件都缓存在某处。第一次访问网站时,您可能会直接从源服务器中提取 HTML、CSS 或图像,但随后它们将被缓存在靠近您的节点上,因此您(和您所在网络区域的其他人)以后将访问缓存上的内容。
服务器也存在与过载相反的问题:效用不足。一台服务器,比如 Tim Berners-Lee 的机器,不能“断电”,必须 100% 的时间处于启动状态。即使您的应用程序每天获得 10 秒的访问,您仍然需要为其他 86,390 次访问付费。
无服务器缓解了这个问题。它们可以随时挂起和断电。无服务器意味着您没有始终处于运行状态的专用服务器。相反,服务器是事件驱动的,只有在发出请求时才会生效。
尽管有更早的版本,但 AWS Lambda 是第一个得到广泛使用的无服务器框架。
无服务器的好处有两个:
- 你只需为你使用的东西付费,也就是程序需要运行的时间——大概只要 10 秒.
- 您不必担心服务器的所有运维方面。没有管理,没有维护。
它的缺点主要来自于性能。
无服务器功能存在“冷启动”问题,每次都必须配置资源,从而增加延迟。
而且,serverless 的服务器仍然是中心化的,所以你仍然需要很长的往返时间。
集中式服务器没有消失,但是离消失也不远了。CDN 将您的内容缓存在靠近用户的位置,但仅限于静态内容;无服务器意味着更少的 DevOps 和(可能)更低的成本,但冷启动的延迟更高。
边缘计算的好处
边缘的美妙之处在于它利用了 CDN 的最佳部分(靠近用户)和无服务器的最佳部分(运行功能)并将它们结合在一起。
CDN + Serverless = 边缘
使用边缘,您可以执行靠近用户的自定义代码。
边缘计算有着更好的性能,由于站点或应用程序由附近的边缘服务器提供服务,因此它会比在集中式服务器上响应更快。
由于计算是在边缘执行的,而不是由用户的浏览器执行,因此该应用程序在最终用户的计算机上占用的资源较少,因此 CPU 和内存的使用较少,浏览器挂起的可能性也较小。
发送给终端用户的资源更少,因此使用的带宽更少。
由于函数在受控环境中运行,因此函数和 API 的行为是一致的。
将计算从客户端设备转移到无服务器边缘还可以减少对您的应用程序的潜在攻击。
您的设备不必对后端服务进行 API 调用。您发送的只是 HTML 和 CSS,那么您已经消除了这个问题。唯一离开你的网络的是你想呈现给客户的东西。
此外,DDoS 攻击难度更大。任何攻击者都不会只关闭一台服务器,他们需要在全球范围内关闭数十台、数百台甚至数千台服务器。即使他们成功地使 10 台服务器离线,仍然可能有 20 台可用服务器可以将流量重新路由。
现在,编写边缘代码非常复杂。在很大程度上,这是由于边缘开发的混合性质。大多数实现它的框架都不是边缘优先的,因此开发人员必须选择任何给定的功能或页面是在边缘呈现服务器端还是在浏览器中呈现。
但是较新的框架,例如 Fresh,默认情况下向客户端提供零 JavaScript,通过采用服务器端渲染和孤岛架构简化了边缘代码开发。将 Fresh 与全球分布式 JavaScript 无服务器边缘网络 Deno Deploy 一起使用的开发人员可以获得边缘和延迟优化的好处。
边缘将会是 web 的未来,从 NeXT 单个机器,到 CDN,再到 serverless,再到边缘。web 从未停止它前行的脚步。
如若转载,请注明出处:https://www.hanjifoods.com/23822.html