微服务架构入门教程

本文涉及的产品
云原生网关 MSE Higress,422元/月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
注册配置 MSE Nacos/ZooKeeper,118元/月
简介: 微服务架构入门教程

微服务架构是目前讨论最多的软件架构趋势之一,它永远改变了企业应用程序的构建方式。与过去缓慢、复杂的单一方法不同,各地的开发人员和公司都在转向微服务架构来简化和扩展他们的结构。

事实上,即使是亚马逊、Netflix、Spotify 和 Uber 等公司也已经完成了转型。

无论您是想开始使用微服务,还是只是对围绕它的争论感到好奇,您都来对地方了。今天,我将向您介绍您需要了解的有关微服务的所有内容,从实际示例到[架构模式]等等。

什么是微服务架构?

术语微服务没有通用的定义。微服务的最简单定义,也称为微服务架构,是一种使用松耦合服务构建应用程序的架构风格。这些集合或模块可以独立开发、部署和维护。

网络异常,图片无法展示
|

与传统上复杂的整体应用程序相比,它们以更快、更可靠的速度运行。使用微服务架构,任何规模的组织都可以发展为其能力量身定制的技术堆栈。

使用微服务有很多切实的好处,我们将在后面讨论,但是对于公司是否应该从单体架构转向微服务架构仍然存在一些争议。让我们检查一下两者之间的区别以了解辩论。

网络异常,图片无法展示
|

单体与微服务

单体架构是构建和部署应用程序的传统方式。这种结构基于一个单一的、不可分割的单元的概念,包括服务器端、客户端和数据库。所有方面都统一并作为一个单元和代码库进行管理。这意味着必须对同一代码库进行任何更新,因此必须更改整个堆栈。随着整体应用程序的扩展,它们会变得相当复杂,因此总体开发时间通常会更长。

另一方面,微服务架构将该单元分解为独立的单元,作为单独的服务运行。这意味着每个服务都有自己的逻辑和代码库。它们通过 API(应用程序编程接口)相互通信。

那么,您应该选择哪种架构?让我们分解一下。

选择单体架构

  • 如果你的公司是一个小团队。 这样,您就不必处理部署微服务架构的复杂性。
  • 如果你想要更快的启动。 单体架构需要更少的启动时间。该系统稍后需要更多时间来更新您的系统,但初始启动速度更快。

选择微服务架构

  • 如果你想开发一个更具扩展性的应用程序。 扩展微服务架构要容易得多。可以非常轻松快速地添加新功能和模块。
  • 如果您的公司更大或计划发展。 使用微服务对于计划发展的公司来说非常有用,因为随着时间的推移,微服务架构的可扩展性要高得多,也更容易定制。

网络异常,图片无法展示
|

微服务的优点和缺点

微服务架构成为贵公司更好选择的原因有很多。让我们讨论最显着的好处,然后检查一些缺点。

好处

提高可扩展性和生产力

大型团队通常必须在复杂的项目上协同工作。借助微服务,项目可以划分为更小的独立单元。这意味着团队可以根据领域逻辑独立行动,从而最大限度地减少协调和工作量。最重要的是,负责每个微服务的团队可以根据自己的需要做出自己的技术决策。

例如,只要接口功能正常,每个单元或容器的内部结构并不重要。因此,任何编程语言都可以用来编写微服务,因此负责的团队可以为队友选择最好的语言。

与遗留系统很好地集成

单体系统很难维护。许多遗留系统结构不良、测试不当或依赖过时的技术。幸运的是,微服务可以与遗留系统一起工作以改进代码并替换系统的旧部分。集成很容易,并且可以解决许多使单一系统成为过去的问题。

可持续发展

微服务架构创建的系统从长远来看保持可维护性,因为各个部分都是可更换的。这意味着可以轻松地重写微服务,而不会影响整个系统。只要适当地管理微服务之间的依赖关系,就可以轻松地进行更改以优化团队需求和性能。

跨功能

微服务最适合分布式团队。如果您的团队或多个部门遍布世界各地,微服务可提供必要的自由和灵活性以自主工作。可以快速做出技术决策,并在瞬间与其他服务集成。跨功能从未如此简单。

缺点

部署需要更多努力

微服务系统的操作通常需要更多的努力,因为有更多的可部署单元必须每个都被部署和监控。必须实施对接口的更改,以便仍然可以独立部署各个微服务。

测试必须是独立的

由于所有微服务必须一起测试,一个微服务可以阻塞测试阶段并阻止其他微服务的部署。需要测试的接口比较多,接口两边的测试要独立。

难以更改多个微服务

影响多个微服务的更改可能更难实施。在微服务系统中,更改需要多个协调部署。

网络异常,图片无法展示
|

微服务和 Docker

Docker和微服务几乎是同义词。微服务必须是可单独部署、可扩展的独立单元。但是,如果您为您的应用程序创建多个微服务呢?Docker 是用于部署微服务的轻量级解决方案。微服务可以打包到 Docker 镜像中,并作为 Docker 容器隔离。这样,您就可以构建独立于宿主环境的应用程序。

Docker 容器不是拥有自己的完整虚拟机,而是共享 Docker 主机上的操作系统内核。来自容器的进程出现在运行 Docker 容器的操作系统的进程表中。

要将 Docker 与微服务一起使用,您需要通过名为Dockerfile. Dockerfile 易于编写,因此推出软件也很容易。查看 Java 微服务的 Dockerfile 示例。

FROM openjdk:11.0.2-jre-slim
COPY target/customer.jar .
CMD /usr/bin/java -Xmx400m -Xms400m -jar customer.jar
EXPOSE 8080
复制代码

一个典型的微服务系统包含多个 Docker 容器。协调多个 Docker 容器的系统需要配置虚拟网络。容器必须能够找到彼此才能进行通信。Docker Compose 环境可以通过链接联系另一台服务器,提供服务发现系统。

网络异常,图片无法展示
|

技术栈和架构模式

了解微体系结构的工作原理是一回事,而实际构建和实施它又是另一回事。这就是为什么我们要专注于为整个微服务系统提供的各种技术。让我们通过一些不同的技术堆栈、模式和设计来创建可执行的微服务架构。

微观和宏观架构决策

建议将您的架构分为微观和宏观架构。微架构涉及为每个微服务做出的所有决策。宏架构涉及在全局级别做出的所有决策,这些决策适用于所有微服务。

可以将微观和宏观架构的概念扩展到技术决策。 技术决策可以在宏观或微观架构的框架内做出。例如,看看要在数据库的微观和宏观层面做出的技术决策:

  • 微: 每个微服务都可以有自己的数据库实例。如果数据库是在微架构中定义的,那么一个数据库的崩溃只会导致一个微服务的崩溃。这使得整个应用程序更加健壮。
  • 宏: 数据库也可以定义为宏架构的一部分。多个微服务不得共享数据库架构。

网络异常,图片无法展示
|

独立系统

自包含系统 (SCS) 是一种微服务架构,它指定了宏架构的元素。这意味着它们不代表整个系统。由于 SCS 是独立的,它提供了实现域逻辑的一部分所需的一切,例如日志数据和 UI。SCS 也有一个可选的 API。

例如,用于微服务支付的 SCS 会将与该支付相关的信息存储为有界上下文。它还将实现 UI 以显示支付历史记录,并且有关客户的数据将从其他 SCS 复制。

将这些视为最佳实践的集合;SCS 提供基于既定模式的精确规则,为如何构建微服务架构提供参考点。所有这些规则确保一个 SCS 实现一个域,因此添加的功能只会改变一个 SCS。

网络异常,图片无法展示
|

我们可以将 SCS 视为微服务架构,因为它可以独立部署并将系统划分为独立的 Web 应用程序。事实上,一个SCS甚至可以拆分成多个微服务。它们在三个主要方面与微服务不同:它们比微服务更大,它们专注于松散耦合,并且它们必须具有 UI。

前端整合

微服务也可以与 Web 前端集成。将前端划分为不同的模块有助于解决将其视为整体的一些问题。模块化前端由可单独部署的微服务组成。这可以为您的前端带来很多好处。

例如,模块化的前端可以有独立的领域逻辑,领域的改变可以通过只修改一个微服务来实现。要组合单独的前端,必须将它们集成,因此需要一个集成系统。

网络异常,图片无法展示
|

这可以通过链接来实现,其中一个前端显示另一个前端读取和处理的链接。这也可以通过重定向来完成,例如 OAuth2 如何处理前端集成。重定向将数据传输与前端集成相结合。

但是,当前端应作为整体部署时,也有一些例外。例如,本机移动应用程序应该是部署单体,或者如果有一个单独的团队负责前端开发。

异步微服务

同步微服务在处理请求并等待结果的同时向其他微服务发出请求。异步通信协议发送接收者做出反应的消息,但没有直接响应。如果一个微服务在处理时不向其他微服务发出请求,或者它发出请求但不等待结果,则可以定义为异步微服务。

网络异常,图片无法展示
|

异步微服务为同步微服务提供了几个显着的优势,并解决了分布式系统的许多挑战。处理微服务请求所需的逻辑不依赖于结果,使它们更加独立。

同样,如果通信伙伴出现故障,它不会使整个系统崩溃,从而为您的系统提供整体弹性。最重要的是,加工和交付几乎总是有保证的。

异步微服务技术的一些常见示例是 Kafka(一种常用于消息传递的 MOM)、REST 和 Atom 数据格式(用于附加基础设施)。

微服务平台

微服务平台,如 PaaS 和 Docker 调度程序,支持微服务的运行和通信。这些技术支持微服务之间的通信以进行部署、日志分析和监控。

例如,这些平台支持具有负载平衡和服务发现功能的 HTTP 和 REST。微服务的实现只需要有限的运维支持,可以快速部署,支持多种微服务。

网络异常,图片无法展示
|

微服务平台代表了常见问题的简化和解决方案。一些著名的平台是[Kubernetes]和 Docker,这对于微服务操作非常重要。PaaS 和 Cloud Foundry 也很有用,但没有那么流行。

值得注意的是,迁移到这些平台需要更改应用程序的操作和安装,这可以使微服务平台的使用成为一个重要且及时的步骤。这是微服务平台的主要缺点。

相关文章
|
7天前
|
弹性计算 Kubernetes Cloud Native
云原生架构下的微服务设计原则与实践####
本文深入探讨了在云原生环境中,微服务架构的设计原则、关键技术及实践案例。通过剖析传统单体架构面临的挑战,引出微服务作为解决方案的优势,并详细阐述了微服务设计的几大核心原则:单一职责、独立部署、弹性伸缩和服务自治。文章还介绍了容器化技术、Kubernetes等云原生工具如何助力微服务的高效实施,并通过一个实际项目案例,展示了从服务拆分到持续集成/持续部署(CI/CD)流程的完整实现路径,为读者提供了宝贵的实践经验和启发。 ####
|
30天前
|
缓存 监控 API
探索微服务架构中的API网关模式
【10月更文挑战第5天】随着微服务架构的兴起,企业纷纷采用这一模式构建复杂应用。在这种架构下,应用被拆分成若干小型、独立的服务,每个服务围绕特定业务功能构建并通过HTTP协议协作。随着服务数量增加,统一管理这些服务间的交互变得至关重要。API网关作为微服务架构的关键组件,承担起路由请求、聚合数据、处理认证与授权等功能。本文通过一个在线零售平台的具体案例,探讨API网关的优势及其实现细节,展示其在简化客户端集成、提升安全性和性能方面的关键作用。
70 2
|
1月前
|
存储 缓存 监控
探索微服务架构中的API网关模式
【10月更文挑战第1天】探索微服务架构中的API网关模式
85 2
|
4天前
|
监控 安全 应用服务中间件
微服务架构下的API网关设计策略与实践####
本文深入探讨了在微服务架构下,API网关作为系统统一入口点的设计策略、实现细节及其在实际应用中的最佳实践。不同于传统的摘要概述,本部分将直接以一段精简的代码示例作为引子,展示一个基于NGINX的简单API网关配置片段,随后引出文章的核心内容,旨在通过具体实例激发读者兴趣,快速理解API网关在微服务架构中的关键作用及实现方式。 ```nginx server { listen 80; server_name api.example.com; location / { proxy_pass http://backend_service:5000;
|
6天前
|
缓存 监控 API
探索微服务架构中的API网关模式
随着微服务架构的兴起,API网关成为管理和服务间交互的关键组件。本文通过在线零售公司的案例,探讨了API网关在路由管理、认证授权、限流缓存、日志监控和协议转换等方面的优势,并详细介绍了使用Kong实现API网关的具体步骤。
22 3
|
7天前
|
运维 NoSQL Java
后端架构演进:微服务架构的优缺点与实战案例分析
【10月更文挑战第28天】本文探讨了微服务架构与单体架构的优缺点,并通过实战案例分析了微服务架构在实际应用中的表现。微服务架构具有高内聚、低耦合、独立部署等优势,但也面临分布式系统的复杂性和较高的运维成本。通过某电商平台的实际案例,展示了微服务架构在提升系统性能和团队协作效率方面的显著效果,同时也指出了其带来的挑战。
40 4
|
6天前
|
存储 缓存 监控
探索微服务架构中的API网关模式
探索微服务架构中的API网关模式
20 2
|
6天前
|
JavaScript 持续交付 Docker
解锁新技能:Docker容器化部署在微服务架构中的应用
【10月更文挑战第29天】在数字化转型中,微服务架构因灵活性和可扩展性成为企业首选。Docker容器化技术为微服务的部署和管理带来革命性变化。本文探讨Docker在微服务架构中的应用,包括隔离性、可移植性、扩展性、版本控制等方面,并提供代码示例。
30 1
|
13天前
|
监控 Cloud Native Java
云原生架构下微服务治理策略与实践####
【10月更文挑战第20天】 本文深入探讨了云原生环境下微服务架构的治理策略,通过分析当前技术趋势与挑战,提出了一系列高效、可扩展的微服务治理最佳实践方案。不同于传统摘要概述内容要点,本部分直接聚焦于治理核心——如何在动态多变的分布式系统中实现服务的自动发现、配置管理、流量控制及故障恢复,旨在为开发者提供一套系统性的方法论,助力企业在云端构建更加健壮、灵活的应用程序。 ####
59 10
|
8天前
|
Kubernetes Cloud Native API
云原生架构下微服务治理的深度探索与实践####
本文旨在深入剖析云原生环境下微服务治理的核心要素与最佳实践,通过实际案例分析,揭示高效、稳定的微服务架构设计原则及实施策略。在快速迭代的云计算领域,微服务架构以其高度解耦、灵活扩展的特性成为众多企业的首选。然而,伴随而来的服务间通信、故障隔离、配置管理等挑战亦不容忽视。本研究聚焦于云原生技术栈如何赋能微服务治理,涵盖容器编排(如Kubernetes)、服务网格(如Istio/Envoy)、API网关、分布式追踪系统等关键技术组件的应用与优化,为读者提供一套系统性的解决方案框架,助力企业在云端构建更加健壮、可维护的服务生态。 ####