首页 > 资讯 > [译]Node.js应用如何添加健康检测?随着应用程序用户量的增多,软件的可用性将面临巨大的考验。让我们来看一看为什么应

[译]Node.js应用如何添加健康检测?随着应用程序用户量的增多,软件的可用性将面临巨大的考验。让我们来看一看为什么应

原文链接:How To Add a Health Check to Your Node.js App 原文作者:Ali Kamalizade 仓库地址:github

快速检测应用程序的运行情况而无需深挖代码。

随着应用程序用户量的增多,软件的可用性将面临巨大的考验。让我们来看一看为什么应用程序需要高可用性。

我们为什么需要应用程序的高可用性。

在SLAS,你经常指定一个你可用达到的特定可用性(比如 99.9%)。 对于B2C应用(比如网上店铺),宕机可能意味着高额的经济损失。 除了经济影响,意外宕机还会损害你的声誉。

现在我们明白为什么我们需要高可用性了。我们将研究可能导致宕机的常见问题。

可用性如何能受到负面影响?

一些妨碍你应用程序正常运行的关键问题(比如,连接数据库失败)。 第三方基础服务问题(比如,你的云服务供应商异常宕机)。

显然,我们应该对确保我们的应用程序高可用非常感兴趣。

但是问题是:“应用程序什么时候才是真正的健康?”。这很难去说清楚,也很难实现。这取决于你对健康的定义。所以你必须自己去定义这件事情。

如何去定义应用程序的健康度?

服务可以响应请求 服务可以响应请求并且连接数据库。 服务可以响应请求,连接数据库并且连接其他第三方系统和集成系统。

API测试可以作为启动健康检测的入口。然而,也有专门的服务,如Pingdom、New Relic和Freshping,可以持续监控网站和服务的可用性。

这些工具提供通用的数据和功能:

可用性 宕机实际 事件数 平均响应时间(通常为毫秒级别) 事故摘要 根据时间查询相关数据 与其他流行软件工具集成:Slack、Jira、PagerDuty等。

为什么要在软件工程里使用健康检测?

健康检测很容易去实现。如上所述,你必须去定义健康对你的意义。 不宕机发布,如发布平台在发布应用程序时,自动调用健康检测路由。 及时发现宕机。这里有很多免费和收费的工具,能够提供运行时持续监控,如Pingdom、New Relic和Freshping。 当问题出现时,健康检测提供了一个完善的检查。如果你有即将执行的任务,而且出了一些问题(如:一个实例停止运行了),那么最首要,也最简单的事情是在无须深挖当前代码的情况下,去检查服务的健康度。因此,即使最基础的健康检测也有一定的价值。 在这篇教程中,我们将使用Express.js这个热门的Node.js框架。不过,如果你使用其他框架或者编程预言,如:C#、Java或者Python,步骤也是一样的。

Node.js应用如何进行健康检测?

创建一个新的路由(如:healthcheck.routes.js)。 在app.js中注册你的路由。我推荐使用healthcheck命名这个路由。 在你的健康检测路由中,如果一切正常你需要,发送一个成功响应。如果你的应用程序不健康,你需要发送一个错误响应。 如果你有的很多微服务,你应该给每个都添加一个健康检测。 可选项:添加身份验证以限制对你的健康检查路由的访问。 可选项:添加一个调用新路由的API测试。

// app.js: register the route. In our case, we don't want authorization for this route app.use('/healthcheck', require('./routes/healthcheck.routes')); // healthcheck.routes.js: return a 2xx response when your server is healthy, else send a 5xx response import express from 'express'; const router = express.Router({}); router.get('/', async (_req, res, _next) => {// optional: add further things to check (e.g. connecting to dababase)const healthcheck = {uptime: process.uptime(),message: 'OK',timestamp: Date.now()};try {res.send();} catch (e) {healthcheck.message = e;res.status(503).send();} }); // export router with all routes included module.exports = router; // healthcheck.spec.js (services like Pingdom or Freshping do a similar approach to check whether your server is healthy) describe('Healthcheck', () => {it('returns 200 if server is healthy', async () => {const res = await get(`/healthcheck`, null).expect(200);expect(res.body.uptime).toBeGreaterThan(0);}); });

我们如何使用健康检测的工具呢,这些工具也如何支持我们的应用?

在这篇教程中,我将使用Freshping去监控托管API的运行情况。以下报告显示了2019年10月的数据。

让我们仔细的看一看这篇报告:

在选择的时间表里,可用性达到了96.58%。通常情况下,你应该以把达到99.90%的可用性为目标。很多软件库保证至少99.90%的可用性,特别是对于企业用户。

乍一看96.58%的可用性听起来不错,但你必须注意宕机时间:将近19个小时的连续停机时间对你的业务而言可能是非常糟糕的。 因此,重要的是在事件发生时及早通知您,以便您快速解决问题。

因此,当事故发送时,及早通知是非常重要的,那样你将能够快速的修复问题。

在所选的时间范围内出现了一个事故。当然,你应该尝试尽可能的使这个数字越小越好。在事故确实发生的情况下,应该尽可能快的解决问题,去减小事故带来的影响。

平均响应时间是539ms,相当稳定。这种一致性是一个好兆头,因为这意味着我们的健康检查工作可靠。

尽管平均响应时间不算太慢,但是也不算太快。因此你应该尽可能缩短响应时间。这可能表明应用程序的健康涉及到很多环节。另一方面,这可能只是基础架构问题(例如,服务器离客户端太远或硬件功能不够强大)。

结语

感觉你阅读这篇文章。你可以看到,Node.js添加健康检测是非常简单的。当然,你也可以(或许应该)添加健康检测,如果你正在使用其他服务端编程语言。像Pingdom或者Freshping这样的工具经常能够检查我们应用程序的健康,同时帮助我们及早的发现问题。

你是如何实现健康检测的呢?还有,你使用什么样的工具?

相关知识

iOS 15健康应用程序添加数据共享功能,可远程监测他人健康
iOS10将增强Health应用程序中的Health Records功能
移动健康应用的用户体验设计
如何在 iPhone 上的健康应用程序中手动添加数据
如何在不使用第三方应用程序的情况下,查看iPad电池的健康状况
iOS8健康怎么用?苹果iOS8健康应用数据添加教程
用什么软件检测手机电池容量
Mac版健康应用程序在哪里?我可以在 Mac 上查看我的健康数据吗?
电池健康用什么软件检测好
基于用户体验评价移动健康类应用程序的研究进展

网址: [译]Node.js应用如何添加健康检测?随着应用程序用户量的增多,软件的可用性将面临巨大的考验。让我们来看一看为什么应 https://m.trfsz.com/newsview1554339.html