微服务架构入门教程

简介: 微服务架构入门教程

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

事实上,即使是亚马逊、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月前
|
Cloud Native Serverless API
微服务架构实战指南:从单体应用到云原生的蜕变之路
🌟蒋星熠Jaxonic,代码为舟的星际旅人。深耕微服务架构,擅以DDD拆分服务、构建高可用通信与治理体系。分享从单体到云原生的实战经验,探索技术演进的无限可能。
微服务架构实战指南:从单体应用到云原生的蜕变之路
|
弹性计算 API 持续交付
后端服务架构的微服务化转型
本文旨在探讨后端服务从单体架构向微服务架构转型的过程,分析微服务架构的优势和面临的挑战。文章首先介绍单体架构的局限性,然后详细阐述微服务架构的核心概念及其在现代软件开发中的应用。通过对比两种架构,指出微服务化转型的必要性和实施策略。最后,讨论了微服务架构实施过程中可能遇到的问题及解决方案。
|
Cloud Native Devops 云计算
云计算的未来:云原生架构与微服务的革命####
【10月更文挑战第21天】 随着企业数字化转型的加速,云原生技术正迅速成为IT行业的新宠。本文深入探讨了云原生架构的核心理念、关键技术如容器化和微服务的优势,以及如何通过这些技术实现高效、灵活且可扩展的现代应用开发。我们将揭示云原生如何重塑软件开发流程,提升业务敏捷性,并探索其对企业IT架构的深远影响。 ####
467 3
|
12月前
|
Java 数据库连接 微服务
若依微服务的Mybatis-plus集成过程:一份详细的入门教程。
以上就是Spring Boot项目中集成MyBatis Plus的详细步骤。集成成功后,你就可以使用Mybatis-plus提供的强大功能,让你的增删改查操作更为简单。以上步骤简单易懂,非常适合初学者使用。希望对您有所帮助。
1039 20
|
10月前
|
缓存 Cloud Native Java
Java 面试微服务架构与云原生技术实操内容及核心考点梳理 Java 面试
本内容涵盖Java面试核心技术实操,包括微服务架构(Spring Cloud Alibaba)、响应式编程(WebFlux)、容器化(Docker+K8s)、函数式编程、多级缓存、分库分表、链路追踪(Skywalking)等大厂高频考点,助你系统提升面试能力。
1243 0
|
Java 开发者 微服务
从单体到微服务:如何借助 Spring Cloud 实现架构转型
**Spring Cloud** 是一套基于 Spring 框架的**微服务架构解决方案**,它提供了一系列的工具和组件,帮助开发者快速构建分布式系统,尤其是微服务架构。
2321 71
从单体到微服务:如何借助 Spring Cloud 实现架构转型
|
Cloud Native Serverless 流计算
云原生时代的应用架构演进:从微服务到 Serverless 的阿里云实践
云原生技术正重塑企业数字化转型路径。阿里云作为亚太领先云服务商,提供完整云原生产品矩阵:容器服务ACK优化启动速度与镜像分发效率;MSE微服务引擎保障高可用性;ASM服务网格降低资源消耗;函数计算FC突破冷启动瓶颈;SAE重新定义PaaS边界;PolarDB数据库实现存储计算分离;DataWorks简化数据湖构建;Flink实时计算助力风控系统。这些技术已在多行业落地,推动效率提升与商业模式创新,助力企业在数字化浪潮中占据先机。
674 12
|
运维 监控 持续交付
微服务架构解析:跨越传统架构的技术革命
微服务架构(Microservices Architecture)是一种软件架构风格,它将一个大型的单体应用拆分为多个小而独立的服务,每个服务都可以独立开发、部署和扩展。
3697 37
微服务架构解析:跨越传统架构的技术革命
|
传感器 监控 安全
智慧工地云平台的技术架构解析:微服务+Spring Cloud如何支撑海量数据?
慧工地解决方案依托AI、物联网和BIM技术,实现对施工现场的全方位、立体化管理。通过规范施工、减少安全隐患、节省人力、降低运营成本,提升工地管理的安全性、效率和精益度。该方案适用于大型建筑、基础设施、房地产开发等场景,具备微服务架构、大数据与AI分析、物联网设备联网、多端协同等创新点,推动建筑行业向数字化、智能化转型。未来将融合5G、区块链等技术,助力智慧城市建设。
764 1