怎样对GraphQL APIs实现监控
发布时间:2022-07-25 08:41:17 所属栏目:安全 来源:互联网
导读:作为REST的另一种选择,GraphQL自2015年发布以来,为前端开发人员提供了他们渴望已久的灵活性。他们可以通过一次性查询,来定义所有需要的数据,并能够一次性地打包获取,进而大幅减少了等待的时间。 除了简化前端,REST也让监控等方面变得更加简单。据此,
作为REST的另一种选择,GraphQL自2015年发布以来,为前端开发人员提供了他们渴望已久的灵活性。他们可以通过一次性查询,来定义所有需要的数据,并能够一次性地“打包”获取,进而大幅减少了等待的时间。 除了简化前端,REST也让监控等方面变得更加简单。据此,后端团队可以考量每一个端点的状态,并能够及时地发现当前出现的问题。当然,在使用的过程中,我们需要考虑清楚的最关键问题是:如何使用GraphQL来准确地监控到目标系统的重要位置。下面,让我们一起来讨论那些有关GraphQL APIs监控的优秀实践。 有了上面的理论基础,我们就可以根据自己的架构,在如下多个位置监控GraphQL API了: HTTP端点:针对那些影响到我们API的所有流量。 GraphQL查询:针对每个特定的查询。 GraphQL解析器或数据加载器:针对数据源的每个访问。 全栈追踪:针对每个查询所影响到的解析器和数据加载器。 1. HTTP端点 在GraphQL架构中,通常只有一个HTTP端点,因此在该REST API级别上的监控,往往只能让我们了解到有关API总体状态的信息。 当然,这只是我们监控的一个起点。如果能够提供低延迟、低错误率的全量信息,而且客户端并无任何投诉产生的话,那么这些指标完全可以为我们节约后续花在深度监控上的大量时间和精力。但是,如果某个地方出现了问题,我们就需要更深入地进行探究了。 2. GraphQL查询 下面,我们需要监控每一个查询,当然主要针对的是那些静态使用模式(static usage patterns)的API。 如果我们仅将API与自己的客户端一起使用的话,那么针对固有查询的变化一般不会经常发生。而如果我们的API需要处理不同客户端的不同请求,那么查询请求不但多,而且杂。这些只有细微差别的请求往往会拖慢整体的速度。而消除此类问题的一种做法是:检查那些最常见的查询,并对它们实施综合监控。这就意味着我们需要事先定义一整套查询和变量的组合,然后从测试客户端运行之,以获悉它们的用时。在此基础上,我们能够减少在更新时产生的,严重影响性能的风险因素。由于持久化查询(Persisted queries,https://blog.apollographql.com/persisted-graphql-queries-with-apollo-client-119fd7e6bba5)可以缓存那些最常用的查询,因此我们可以用它来解决此类问题。 (编辑:开发网_开封站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |