有状态应用程序:边缘计算环境中数据设计考虑事项
Suda srinivasan 【hudson译】
2022年7月18日
如果您正在为有状态边缘应用程序设计体系结构,那么这里有一些您应该了解的关键原则和设计模式。
以下文本摘自白皮书边缘计算中的有状态应用.
数据生命周期
首先,考虑数据产生于何处,需要对其进行什么处理(分析、存储和转发、长期存储等),以及在何处消费数据。跨区域移动数据会导致高延迟。因此,将数据放在靠近产生和消费数据的地方可以确保以更低的延迟和更高的吞吐量访问数据。
数据通常在云和边缘位置之间或层内复制。一些常见的部署模式包括:
- 中心辐射模式–在这种模式中,数据生成并存储在边缘。云中的中心集群从边缘聚集数据。这是物联网用例和零售中的常见模式,其中设备或商店位置生成数据,然后在云中聚合数据进行分析。
- 配置模式–数据存储在云中,读取副本位于一个或多个边缘位置。设备的配置设置就是一个很好的例子。
- 边缘到边缘模式–当数据需要在层内同步或异步复制或分区时,这是一种常见模式。使用此模式的应用程序包括穿越不同边缘位置的车辆、漫游模式下的移动用户或在国家之间进行金融交易的用户。

应用程序工作负载类型
有状态边缘应用程序通常结合以下工作负载类型:
1.流数据–流数据来自设备、用户和“事物”,如车辆遥测、位置数据等。这些数据可能需要在使用前清洗。流数据需要高写入吞吐量和快速查询。
2.流数据分析–应用于流数据的实时分析,以生成警报。这应该由数据库本身支持,或者与数据库一起使用Spark或Presto。
3.事件数据–根据原始流计算的事件,然后存回数据库,并保证ACID。
4.具有大量只读查询的较小数据集–这包括配置和元数据工作负载。
5.事务性、关系性工作负载–示例包括身份识别、访问控制、安全和隐私,其中事务语义很重要。
6.全面的数据分析–一些应用程序需要分析聚合不同位置的数据。
7.需要保留长期数据的工作负载–在某些情况下,组织希望将数据存储在数据仓库或数据湖中,以分析长期趋势和事件。出于审计和法规遵从性目的。他们也可能需要将数据存储起来。
以上工作负载的组合可以在不同的位置运行–近/远边缘或云。然而,基于规模,某些工作负载在某些位置工作得更好。工作负载1-4通常发生在边缘,而5-7发生在云端。
缩放需求
您的数据增长速度有多快?这意味着有多少用户、设备等正在生成数据?处理数据需要多少计算能力?例如,边缘位置通常没有对大量数据进行深入分析所需的计算和存储资源。因此,边缘的OLTP数据库可能需要扩展吞吐量以处理大量写入。
延迟和吞吐量需求
您需要写入和读取多少数据?数据是以突发方式还是以单个数据点的形式出现?它应该以多快的速度提供给用户和应用程序?例如,对于联网车辆和信用卡欺诈检测等实时应用程序,将遥测或交易数据发送回云应用程序以确定下一步是不切实际的。在这些情况下,实时分析作用于边缘位置的原始数据,以生成警报。
网络分区
对于许多近边缘和远边缘位置来说,网络连接不良是一个现实。因此,应用程序应该考虑如何处理网络分区。根据边缘和云之间的网络质量,可能有不同的操作模式:
-
大多数连接上: 这意味着应用程序大多数时间都可以连接到远程位置来执行API调用(即查找数据)。这些API调用中的一小部分可能会因为网络分区(即几个小时内几秒钟的分区)而失败。
-
半数连接上: 在这种情况下,可能会有一个扩展的网络分区–持续数小时。应用程序需要能够识别分区窗口期间发生的更改,并在分区修复后将其状态与远程应用程序同步。
-
断开: 这是主要的操作模式。在这种情况下,应用程序独立于任何外部站点运行。可能偶尔会出现连接,但这只是例外,而非常规。
在远端运行的应用程序和数据库应该为断开连接或半连接操作而设计。近边缘应用应假定为半连接或大部分连接操作。云以连接最多的模式运行。因此,当公共云服务出现中断时,影响是严重的,可能会持续数小时。
其他故障
除网络分区外,其他位置也可能发生基础设施中断。从节点/pod故障到完全的区域性停机,一切都可能发生在遥远的边缘。虽然节点或者pod中断在近边缘和云中很常见,但应用程序可以使用机架和分区实现高弹性。即使局部有了这种故障隔离,也可能发生区域级停机。
并非所有故障都是停机;它们还可以包括资源争用和资源耗尽。
软件堆栈考虑事项
在为软件堆栈挑选组件时,考虑灵活性和易用性很重要。业务服务涉及一套应用程序,因此工程团队必须为快速应用程序迭代进行设计。您可以通过使用支持即时开发人员生产力的知名框架(Spring、GraphQL等)来实现这一点。您还应该采用知名且功能丰富的开源数据库来帮助开发人员提高生产力。开源软件提供了部署灵活性。例如PostgreSQL和YugabyteDB 。
安全
无论应用程序是在云中运行还是在边缘运行,安全性都至关重要。特别是由于体系结构固有的分布式特性,存在较大的攻击表面积。因此,对于所有服务和组件,必须考虑在任何地方都具有最低特权、零信任和零接触供应。
涉及的其他安全问题包括:
- 传输中加密
- 静态加密
- 数据库层的多租户支持和每租户加密
- 数据的区域位置,以确保合规性并实现随之而来的任何地理访问控制
探索在构建有状态应用程序时面临的问题、挑战和机遇。免费阅读我们最新的白皮书:边缘计算中的有状态应用程。 立即下载您的副本!