like me ilikeoj


关键要点

  • 在开发微服务架构时,需要解决一些新的挑战,例如可扩展性、安全性和可观察性 。
  • 微服务提供了正确实现微服务的横切关注点列表 。
  • Kubernetes 是实现这些微服务的良好开端,但存在一些差距 。
  • 服务网格是一个专用的基础设施层,用于使服务到服务的通信安全、快速和可靠 。
  • Istio 是一个服务网格,以非侵入性的方式实现了一些所需的微服务 。
在微服务架构中,一个应用程序由多个相互连接的服务组成,所有这些服务协同工作以产生所需的业务功能 。所以一个典型的企业微服务架构是这样的:
like me ilikeoj

文章插图

一开始,使用微服务架构实现应用程序似乎很容易 。但是正确地做到这一点并不是一件容易的事,因为有一些挑战需要解决,而这些挑战是单体架构所没有的 。其中一些是容错、服务发现、扩展、日志记录或跟踪,仅举几例 。
为了解决这些挑战,每个微服务都应该实施我们在红帽称为“微服务功能”的东西 。该术语指的是服务必须在业务逻辑之外实现以解决这些挑战的横切关注点列表 。
下图总结了这些担忧:
like me ilikeoj

文章插图

业务逻辑可以用任何语言(Java、Go、JavaScript)或任何框架(Spring Boot、Quarkus)实现,但围绕业务逻辑,还应实现以下关注点:
API:可以通过一组定义的 API 操作访问该服务 。例如,在 RESTful Web API 的情况下,HTTP 被用作协议 。此外,可以使用Swagger等工具记录 API。
发现:服务需要发现其他服务 。
调用:发现服务后,需要使用一组参数调用它,并可选择返回响应 。
弹性:微服务架构的关键特性之一是每个服务都是弹性的,这意味着它可以根据系统的关键性或当前工作负载等一些参数独立地扩大和/或缩小 。
弹性:在微服务架构中,我们应该在开发时考虑到失败,尤其是在与其他服务通信时 。在单体应用程序中,应用程序作为一个整体是向上或向下的 。但是当这个应用程序被分解成一个微服务架构时,这个应用程序是由几个服务组成的 。所有这些都通过网络互连,这意味着应用程序的某些部分可能正在运行,而其他部分可能会失败 。包含故障以避免通过其他服务传播错误非常重要 。弹性(或应用程序弹性)是应用程序/服务对问题做出反应并仍然提供最佳结果的能力 。
like me ilikeoj

文章插图

管道:服务应该独立部署,没有任何类型的部署编排 。因此,每个服务都应该有自己的部署管道 。
身份验证:微服务架构的关键方面之一是如何对内部服务之间的调用进行身份验证/授权 。Web 令牌(以及一般的令牌)是在内部服务中安全地表示声明的首选方式 。
日志记录:日志记录在单体应用程序中很简单,因为所有组件都在同一个节点中运行 。组件现在以服务的形式分布在多个节点上;因此,需要一个统一的日志记录系统/数据收集器来完整查看日志记录跟踪 。
监控:一种衡量系统性能、了解应用程序整体健康状况或在出现问题时发出警报以保持基于微服务的应用程序正常运行的方法 。监控是控制应用程序的一个关键方面 。
跟踪:跟踪用于可视化程序的流程和数据进程 。当我们作为开发人员/操作员需要检查用户在整个应用程序中的旅程时,这尤其有用 。
Kubernetes正在成为部署微服务的事实上的工具 。它是一个用于自动化、编排、扩展和管理容器的开源系统 。


特别声明:本站内容均来自网友提供或互联网,仅供参考,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。