实时接口数据也能就近访问?细说如何用CDN提升App性能
来源:James 时间:2022-08-01 09:13:34阅读:0
边缘计算是在物体或数据源附近提供计算服务。其应用程序在边缘侧启动,产生更快的网络服务响应,以满足行业在实时业务、应用智能、安全和隐私保护方面的基本需求。作者介绍了这篇文章CDN实时数据处理的一些方法值得架构师学习。
CDN-ContentDeliveryNetwork
先定义一下什么是CDN。内容分发网络(CDN)它是一个由分布式服务器组成的系统,根据用户的地理位置和数据内容(通常是网页)的来源向用户分发网页内容。但在这个互联网发展的时代,CDN不仅仅是分发网页内容。
以CloudflareWorkers【1】例如,除了使用其网络分发内容外,您甚至可以在其边缘节点上部署运行代码。可以部署或运行Javascript代码可以帮助您解耦代码和用户终端设备,如支持路由、过滤等功能。
在当前爆炸式发展的互联网时代,高可扩展性是至关重要的能力。CDN和边缘计算(EdgeComputing)将进一步融合发展。
获取实时数据-推拉
目前,许多强调实时应用程序需要推送和提取的数据。被动推送和主动一个非常常见和简单的工程问题,如应用程序初始化CDN提取历史数据,然后通过其他服务推送更新数据。
但是,让我们考虑一下这两种机制是否可以结合在一起。
通过代理连接Fastly和Fanout
Fastly边缘计算平台(EdgeCloudPlatform),它可以在网络的边缘节点执行和提供服务。本质上,它提供高度可扩展的数据提取响应服务,可以实时监控和响应用户的要求。与传统相比CDN,Fastly静态内容也可以缓存,应用逻辑可以部署和运行。
另一方面,Fanout它是一种高度可扩展的数据推送服务,如用作高性能反向代理服务,通过长链接实时推送客户数据。
Fastly和Fanout可组合使用。作为一个整体,它们可以作为源服务器的反向代理Fastly来代理到Fanout客户端不需要直接要求您的源服务器。这将带来一些好处:
毫无疑问,高可用性和高可扩展性
初始数据缓存
缓存Fanout这需要特别说明:Fanout有些行为是通过指令来配置的。比如传输模式,订阅channel等等。通常,这些指令是通过源服务器使用的response获取(一种特殊的header,被称为Grip)。Fastly获得一次response后缓存这些指令。
映射网络流
组合使用Fanout和Fastly,我们可以推-拉模型中,我们可以重络数据流,让我们仔细看看它们是如何工作的:
假设我们有一个HTTPEndpoint是/stream,它将返回一些初始数据,并在生成新数据后将其推送到连接的客户端Fanout,我们可以让这个Endpoint返回带有instruction的response:(以responseheader为例)
HTTP/1.1200OK
Content-Type:text/plain
Content-Length:29
Grip-Hold:stream
Grip-Channel:updates
{"data":"currentvalue"}
当Fanout这是从源服务器中收到的response,它将被转换成HTTPstreaming的response:
HTTP/1.1200OK
Content-Type:text/plain
Transfer-Encoding:chunked
Connection:Transfer-Encoding
{"data":"currentvalue"}
这样,Fanout到源服务器的请求已经完成,但客户端到Fanout请求(连接)仍然是open用这样的时序图来表示状态:
高效实现流控
理想的数据读写模型是:
数据访问:每秒读几个新的
数据更新:每分钟写几次
数据分发:毫秒投递
如果您的数据每秒都在变化,最好不要在每次数据变化中删除缓存。(容忍一定程度的数据不一致性)
例如,在高峰期,我们可以限制清除的频率,大多数读取请求仍然由缓存数据响应,然后稍后更新数据。
Demo
托管在这里提供GitHub上的demo它使用应用源代码fastly和fanout提供一个live
counter服务。
请求会先到fanout,然后到fastly,最后传递到一个原因Django实现的backendserver。当计数器的值更新时,该服务实现了简单的计数器逻辑,fastly在通过之前,将清除缓存fanout发送。流控限制了清除和更新过程,以尽可能提高缓存效率。
脑洞一下
我们可以设计一个由几组完全分布在地理位置的新闻内容分发网络server构成,可提供近实时动态内容和静态内容分发。
这种新型CDN无论应用本身的源服务在哪里,网络都可以将数据处理延伸到网络边缘。这将是移动应用和IoT应用形式带来巨大的想象空间。
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:shawn.lee@vecloud.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。
本站原创内容未经允许不得转载,或转载时需注明出处:https://news.kd010.com/fwqjs/12206.html