From 2f8d16a93502b549ee634c4e73daa9e8f7256882 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Sun, 6 Sep 2020 20:50:55 +0800 Subject: [PATCH 1/2] PRF @geekpi --- ...an API gateway to monitor microservices.md | 56 +++++++++---------- 1 file changed, 26 insertions(+), 30 deletions(-) diff --git a/translated/tech/20200828 Use GraphQL as an API gateway to monitor microservices.md b/translated/tech/20200828 Use GraphQL as an API gateway to monitor microservices.md index a6531140ef..907acc0b5a 100644 --- a/translated/tech/20200828 Use GraphQL as an API gateway to monitor microservices.md +++ b/translated/tech/20200828 Use GraphQL as an API gateway to monitor microservices.md @@ -1,6 +1,6 @@ [#]: collector: (lujun9972) [#]: translator: (geekpi) -[#]: reviewer: ( ) +[#]: reviewer: (wxy) [#]: publisher: ( ) [#]: url: ( ) [#]: subject: (Use GraphQL as an API gateway to monitor microservices) @@ -9,10 +9,12 @@ 使用 GraphQL 作为 API 网关来监控微服务 ====== -在一个问题使一个关键的微服务瘫痪之前,使用 GraphQL 的监控功能,帮助你及早发现问题。 -![Net catching 1s and 0s or data in the clouds][1] -[微服务][2]和 [GraphQL][3] 就像面包和黄油一样,是一个很好的组合。它们本身都很好,结合起来就更好了。了解你的微服务的健康状况是很重要的,因为它们运行着重要的服务。如果等到某个关键的服务崩溃了才诊断问题,那是很愚蠢的。让 GraphQL 帮助你及早发现问题并不需要花费太多精力。 +> 在问题导致关键的微服务瘫痪之前,使用 GraphQL 的监控功能帮助你及早发现问题。 + +![](https://img.linux.net.cn/data/attachment/album/202009/06/205052ve8eebyamcace4v8.jpg) + +[微服务][2]和 [GraphQL][3] 就像面包和黄油一样,是一个很好的组合。它们本身都很棒,结合起来就更棒了。了解你的微服务的健康状况是很重要的,因为它们运行着重要的服务。如果等到某个关键的服务崩溃了才诊断问题,那是很愚蠢的。让 GraphQL 帮助你及早发现问题并不需要花费太多精力。 ![GraphQL in Microservices][4] @@ -20,15 +22,13 @@ 以下是我在设计服务检查时考虑的因素: -**服务器健康检查的要求:** +服务器健康检查的要求: 1. 我需要了解我的微服务的可用性状态。 2. 我希望能够管理服务器的负载。 3. 我希望对我的微服务进行端到端(e2e)测试。 4. 我应该能够预测中断。 - - ![Service health in microservices][5] ### 做服务器健康检查的方法 @@ -39,22 +39,19 @@ 2. **脚本化浏览器:**脚本化浏览器比较高级。像 [Selenium][6] 这样的浏览器自动化工具可以让你实现自定义的监控规则集。 3. **API 测试:**API 测试用于监控 API 端点。这是 ping 检查模型的高级版本,你可以根据 API 响应来定义监控计划。 - - ### 使用 GraphQL 进行健康检查 在一个典型的基于 REST 的微服务中,你需要从头开始构建健康检查功能。这是一个时间密集型的过程,但使用 GraphQL 就不用担心了。 -根据它的[网站][7]: +根据它的[网站][7]称: -> “GraphQL 是一种用于 API 的查询语言,也是一种用现有数据完成这些查询的运行时。GraphQL 为你的 API 中的数据提供了一个完整的、可理解的描述,让客户有能力精确地仅查询他们所需要的东西,让 API 更容易随着时间的推移而进化,并实现强大的开发者工具。” +> “GraphQL 是一种用于 API 的查询语言,也是一种用现有数据完成这些查询的运行时环境。GraphQL 为你的 API 中的数据提供了一个完整的、可理解的描述,让客户有能力精确地仅查询他们所需要的东西,让 API 更容易随着时间的推移而进化,并实现强大的开发者工具。” - -当你启动一个 GraphQL 微服务时,你还可以获得监控微服务的运行状况的预置。这是一个隐藏的宝贝。 +当你启动一个 GraphQL 微服务时,你还可以获得监控微服务的运行状况的供给。这是一个隐藏的宝贝。 正如我上面提到的,你可以用 GraphQL 端点执行 API 测试以及 ping 检查。 -Apollo GraphQL Server 提供了一个默认的端点,它可以返回有关你的微服务和服务器健康的信息。它不是很复杂:如果服务器正在运行,它就会返回状态码 200。 +Apollo GraphQL 服务器提供了一个默认的端点,它可以返回有关你的微服务和服务器健康的信息。它不是很复杂:如果服务器正在运行,它就会返回状态码 200。 默认端点是 `/.well-known/apollo/server-health`。 @@ -66,27 +63,26 @@ Apollo GraphQL Server 提供了一个默认的端点,它可以返回有关你 Apollo GraphQL 在定义服务器的同时,通过声明一个 `onHealthCheck` 函数来有效地管理这种情况。 - ``` * Defining the Apollo Server */ const apollo = new ApolloServer({ -  playground: process.env.NODE_ENV !== 'production', -  typeDefs: gqlSchema, -  resolvers: resolver, -  onHealthCheck: () => { -    return new Promise((resolve, reject) => { -      // Replace the `true` in this conditional with more specific checks! -      if (true) { -        resolve(); -      } else { -        reject(); -      } -    }); -  } + playground: process.env.NODE_ENV !== 'production', + typeDefs: gqlSchema, + resolvers: resolver, + onHealthCheck: () => { + return new Promise((resolve, reject) => { + // Replace the `true` in this conditional with more specific checks! + if (true) { + resolve(); + } else { + reject(); + } + }); + } }); ``` -当你定义一个 `onHealthCheck` 方法时,它返回一个 promise,如果服务器准备好了,它就会返回 _resolve_,如果有错误,它就会返回 _reject_。 +当你定义一个 `onHealthCheck` 方法时,它返回一个 promise,如果服务器准备好了,它就会返回 `resolve`,如果有错误,它就会返回 `reject`。 GraphQL 让监控 API 变得更容易。此外,在你的服务器基础架构中使用它可以使代码变得可扩展。如果你想尝试采用 GraphQL 作为你的新基础设施定义,请参见我的 GitHub 仓库中的[示例代码和配置][9]。 @@ -97,7 +93,7 @@ via: https://opensource.com/article/20/8/microservices-graphql 作者:[Rigin Oommen][a] 选题:[lujun9972][b] 译者:[geekpi](https://github.com/geekpi) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 From 71c3c09d79f3b790addda02fe367656c6ec2e035 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Sun, 6 Sep 2020 20:51:52 +0800 Subject: [PATCH 2/2] PUB @geekpi https://linux.cn/article-12588-1.html --- ... Use GraphQL as an API gateway to monitor microservices.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename {translated/tech => published}/20200828 Use GraphQL as an API gateway to monitor microservices.md (98%) diff --git a/translated/tech/20200828 Use GraphQL as an API gateway to monitor microservices.md b/published/20200828 Use GraphQL as an API gateway to monitor microservices.md similarity index 98% rename from translated/tech/20200828 Use GraphQL as an API gateway to monitor microservices.md rename to published/20200828 Use GraphQL as an API gateway to monitor microservices.md index 907acc0b5a..a9daa6a877 100644 --- a/translated/tech/20200828 Use GraphQL as an API gateway to monitor microservices.md +++ b/published/20200828 Use GraphQL as an API gateway to monitor microservices.md @@ -1,8 +1,8 @@ [#]: collector: (lujun9972) [#]: translator: (geekpi) [#]: reviewer: (wxy) -[#]: publisher: ( ) -[#]: url: ( ) +[#]: publisher: (wxy) +[#]: url: (https://linux.cn/article-12588-1.html) [#]: subject: (Use GraphQL as an API gateway to monitor microservices) [#]: via: (https://opensource.com/article/20/8/microservices-graphql) [#]: author: (Rigin Oommen https://opensource.com/users/riginoommen)