如何在云中调试微服务

2021-04-21 10:04:21 浏览数 (1)

信息架构的增长促使许多组织采用云服务,并随着时间的推移而增长。微服务在这方面一直处于领先地位,并且在设计各种应用程序以使其成为可独立部署的服务方面,其受欢迎程度呈指数级增长。第三方工具可以通过中断或暂停服务来帮助DevOps团队设置不会影响调试过程执行的断点。

调试微服务对于工作人员来说似乎令人生畏,而采用正确的工具和策略可以使他们更轻松地开展工作。

信息架构的增长促使许多组织采用云服务,并随着时间的推移而增长。微服务在这方面一直处于领先地位,并且在设计各种应用程序以使其成为可独立部署的服务方面,其受欢迎程度呈指数级增长。

在O'Reilly公司的一项调查中,50%以上的受访者表示,他们组织中50%以上的新开发项目使用微服务。

在单片机系统中,整个应用程序可能会由于模块中的单个错误而失败。使用独立的模块为开发人员提供了更广泛的灵活性,可以编辑和部署可定制的代码,而不必担心影响独立的模块。

但是,当意外引发错误时,这种方法会带来独特的挑战。由于信息架构的复杂性以及从开发阶段到生产阶段的过渡,在云中调试微服务可能是一项艰巨的任务。

以下探讨一下面临的一些挑战以及如何无缝地应对这些挑战。

调试微服务的挑战

(1)追踪和可观察性不足

微服务需求的增长带来了基础设施的复杂性。每一个云组件、模块和无服务器调用通常都隐藏了基础设施的复杂性,这使得DevOps和运营团队很难根据输出跟踪和观察微服务的内部状态。独立运行的微服务难以跟踪异步模块中存在的任何用户请求,这可能会导致错误的链式复制。这也意味着检测相互交互的服务可能会受到这些错误的影响。这些因素使得查明任何错误或错误的根本原因对于开发人员来说是一项艰巨的任务。

(2)在复杂环境中监视状态

由于许多微服务聚集在一起来构建系统,因此监视其状态变得很复杂。随着更多的微服务组件添加到系统中,复杂的服务网格逐渐发展,而每个模块都独立运行。这也带来了任何一个模块随时可能发生故障,但不会影响其他模块运行的可能性。

开发人员可能发现调试某些特定微服务中的错误非常困难。其中的每一个都可以用不同的编程语言进行编码,具有独特的日志记录功能,并且大多独立于其他组件。

(3)从开发到生产可能是不可预测的

在将代码从开发阶段移动到生产阶段时,性能和状态错误也是不可预测的。即使在集成和单元测试之后,人们也无法预测代码在分布式服务器上处理成千上万个请求时的性能。如果代码扩展不充分或者数据库无法处理请求,那么开发人员几乎无法检测到系统中的潜在错误。

在云中调试微服务的方法

以下是一些特定于微服务的调试方法,这些方法可以帮助组织解决以下提到的挑战:

(1)非侵入式调试选项

与传统的调试方法不同,第三方工具可以通过中断或暂停服务来帮助DevOps团队设置不会影响调试过程执行的断点。这些方法是非侵入性的,允许开发人员查看全局变量和堆栈跟踪,这有助于他们更有效地监视和检测错误。它还允许开发人员在不停止代码运行或重新部署其代码库的情况下测试可能出现的有关问题。

(2)可观察性增强工具

任何具有大量微服务的系统都很难跟踪请求。尽管人们可能认为构建可观察性的自定义平台是解决这个问题的答案,但它在开发过程中会消耗大量的时间和资源。

幸运的是,许多现代的第三方工具旨在跟踪请求。并为微服务提供广泛的可观察性。这些工具提供了很多功能,例如分布式和无服务器计算功能。

例如,Thundra之类的工具可以帮助组织监视生产过程中遍历其基础设施的用户请求,帮助开发人员全面了解编码环境,查明错误源头,并快速调试。

(3)自治异常跟踪

对于系统而言,首先要意识到发现错误是一项艰巨的任务。系统必须自动跟踪发生的任何异常,从而帮助系统识别重复模式或破坏性行为,例如闰年错误、浏览器中特定版本的错误、奇数堆栈溢出等等。

但是,发现这些错误只是成功的一半。系统还需要跟踪变量和日志,以查明错误发生的时间和条件。这有助于开发人员找到最有效的解决方案以消除错误。全面的监视可以显著简化生产中的调试过程。

在云中调试不一定很困难

在现代微服务中,调试对任何人来说都是一个非常复杂的过程。跟踪用户请求和预测代码可扩展性的能力非常复杂。然而,现代工具可以使开发人员更容易地监视、检测和解决错误。

采用快速部署的微服务架构设计,并且使用正确的工具集,对于开发人员来说,可以使其调试变得更加简单。

0 人点赞