每日分享最新,最流行的软件开发知识与最新行业趋势,希望大家能够一键三连,多多支持,跪求关注,点赞,留言。本文介绍了AppSync,并列出了使用无服务器GraphQL开发实时仪表板的主要构建块。在这个快节奏的世界中,应用程序需要实时传播信息。一些示例是跟踪货物移动、跟踪股票价格、分析正在进行的足球比赛的数据等。此外,人们使用各种设备(如台式机、移动设备和标签)来访问这些应用程序。此外,一些应用程序需要此信息和警报是可操作的,即用户可以更新一个或多个属性。例如,货物处理设施可以通过执行到达扫描来更新货物的状态。因此,从本质上讲,我们正在寻找可以从多个设备访问的交互式实时仪表板。在本文中,我将讨论如何使用AWSAppSync构建这种控制面板。我将采用一个常见的用例并为该用例创建一个参考解决方案架构。 为不熟悉这项服务的人快速介绍AWSAppSync。AppSync是一种无服务器的GraphQL接口,具有强大的可扩展性。GraphQL是一种数据语言,旨在使应用程序能够从服务器获取数据。它具有声明式、自文档化的风格。在GraphQL操作中,客户端指定在服务器返回数据时如何构建数据。这使得客户端可以只查询它需要的数据,以它需要的格式。用例 让我们以互联网服务提供商为例。他们在广阔的地理区域开展业务。他们需要一个实时仪表板来显示所有活动的服务请求。一个区域的管理员可以查看整个区域。他们应该能够根据他们的位置向服务工程师分配开放工单。服务工程师将从他们的移动设备访问仪表板,并且应该能够将工单的状态更新为进行中、完成等管理员应该能够实时查看状态更新。需要考虑的另一种情况是,现场工程师的互联网连接通常很差没有。他们应该能够更新工单的状态,即使他们处于离线状态,一旦他们连接上,数据应该自动同步回服务器。解决方案该解决方案的主要组件是AppSyncAPI。AppSync可以连接到多个源,也可以有自定义解析器。但是,在此示例中,API使用DynamoDB作为其数据存储。AppSyncAPI支持三种操作变更、订阅和查询。突变用于插入更新记录。订阅以某种方式补充了变异操作,即只要有变异,订阅API的该应用程序的所有用户都会收到更新。这里值得一提的是,在DynamoDB数据库中进行简单的插入或更新不会向订阅者发送回任何通知。只有通过AppSyncAPI的变更才会流向订阅者。另一方面,Query是API上的简单GraphQL查询。 现在,让我们假设有一个系统可以提出服务请求,将请求放到EventBridge上。一旦EventBridge上有消息,就会触发Lambda函数,该函数使用突变操作将消息推送到AppSyncAPI。AppSync接收消息并将其保存在后备DynamoDB数据存储中。此时工单状态为open。 可以使用任何标准JavaScript框架构建此应用程序的UI。这将托管在AWSS3上并使用CloudFront分发进行分发。此应用程序的登录用户将根据某些参数订阅AppSyncAPI。例如,库克县的管理员可能会使用以下标准进行订阅 county:Cook,status:Open 列出县内所有未开票。然后,管理员可以将未结工单分配给现场工程师。这将导致对AppSyncAPI进行另一次变更操作,并且票证的状态将更改为已分配。 现场工程师登录到应用程序并订阅了条件 assignedTo:,status:Assigned 将能够看到他需要处理的工单列表。一旦他完成了工单的处理,他就会将工单的状态更改为完成。这将导致另一个更新记录的突变。每个感兴趣并订阅接收此票证更新的人都将在票证完成后立即收到有效的更新。在这里值得一提的是,AppSync也可以在离线模式下工作。因此,如果现场工程师由于某种原因离线,他的更新将在客户端排队。每当他重新上线时,所有未决的突变都将通过后端。这是基于AppSyncAPI上的变更和订阅的交互式仪表板的工作方式。 接下来,我将稍微讨论一下身份验证和授权。在这种情况下,最好的做法是使用公司的ActiveDirectory,假设存在一个来处理身份验证。Cognito可以设置为与企业AD联合。AppSync与Cognito本地连接。在这种情况下,每当用户登录到应用程序时,应用程序将使用相应的用户ID订阅AppSyncAPI,并将根据位置、角色、状态等自动过滤结果。其他授权方法,如自定义Lambda授权方、OpenId也可以使用连接、API密钥等。 保护AppSyncAPI的另一种方法是在API之上配置Web应用程序框架(WAF),以保护它免受常见的Web攻击,如跨站点脚本和SQL注入。WAF与AppSyncAPI原生集成。强烈建议使用所有面向公众的AppSyncAPI配置WAF。结论 AWSAppSync是一种多功能服务,可用于设计不同类型的应用程序。我已经讨论了我们可以多么轻松地设置交互式实时仪表板。AppSync还可用于在客户端和服务器之间创建网络套接字握手,以设计实时聊天应用程序。它还可以简单地用作后端服务API或聚合来自SQL、NoSQL、微服务等多个来源的数据。AWSAppSync可能很快成为许多数字产品和应用程序不可或缺的一部分。