微服务架构 | 1. 微服务相关基础知识

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
云原生网关 MSE Higress,422元/月
任务调度 XXL-JOB 版免费试用,400 元额度,开发版规格
简介: 本篇主要介绍一些通用概念概述、组件对比与系列笔记的目录结构说明;

前言

参考资料
《Spring Microservices in Action》
《Spring Cloud Alibaba 微服务原理与实战》
《B站 尚硅谷 SpringCloud 框架开发教程 周阳》

本篇主要介绍一些通用概念概述、组件对比与系列笔记的目录结构说明;


1. 分布式相关理论

1.1 分布式计算系统的 CAP 理论

https://www.runoob.com/w3cnote/zookeeper-tutorial.html

1.2 BASE 理论

https://www.runoob.com/w3cnote/zookeeper-tutorial.html


2. 微服务架构发展历程

2.1 单体架构

  • 通常来说,如果一个 war 包或者 jar 包里包含一个应用的所有功能,则称为单体架构;
  • 优点:架构简单、能快速开发与上线;
  • 缺点:后端服务器负载越来越高、业务场景复杂;

商城系统单体架构

2.2 集群与垂直化

  • 当业务量扩大时,服务负载过高,维护和部署成本增加,可以从两个方面优化:

    • 横向增加服务器,把单台机器变成多机集群;
    • 按照业务的垂直领域进行拆分,减少业务的耦合度,以及降低单个 war 包带来的伸缩性困难问题;

商城系统集群架构

2.3 SOA(面向服务架构)

  • SOA 核心目标是把一些通用的、会被多个上层服务调用的共享业务提取成独立的基础服务,这些被提取出来的共享服务相对来说比较独立,并且可以重用;
  • SOA 架构主要解决了两个问题:信息孤岛、共享业务的重用;

商城系统 SOA 架构

2.4 微服务架构

  • 面向服务(SOA)和微服务本质上都是服务化思想的一种体现;
  • 如果 SOA 是面向服务开发思想的雏形,那么微服务就是针对可重用业务服务的更进一步优化;
  • 可以把 SOA 看成微服务的超集,也就是多个微服务可以组成一个SOA服务;
  • 实施微服务的前提是软件交付链路及基础设施的成熟化;
  • 因此微服务本质上是服务化思想的最佳实践方向;

商城系统微服务架构

2.4.1 SOA 与微服务架构的关注点

  • SOA:服务的重用性及解决信息孤岛问题;
  • 微服务架构:解耦,降低业务之间的耦合度。微服务会更多地关注在 DevOps 的持续交付上,微服务与容器化技术的结合更加紧密;


3. 云计算概述

3.1 云计算的几种模式

三种核心基本模式

  • 基础设施即服务(Infrastructure as a Service, IaaS);
  • 平台即服务(Platform as a Service, PaaS);
  • 软件即服务(Software as a Service, SaaS);

    • Spring Cloud 讨论的是基于 IaaS 的微服务;

两种新兴模式

  • 函数即服务(Functions as a Service, FaaS);
  • 容器即服务(Container as a Service, CaaS)


4. 微服务架构概述

4.1 一个简单的微服务架构图

一个简单的微服务架构图

4.2 微服务架构的五大特性

微服务架构的五大特性

  • 位置透明;
  • 大小适当;
  • 可伸缩;
  • 可重复;
  • 有弹性;

4.3 微服务架构讨论了什么

微服务架构讨论了什么

  • 服务粒度;
  • 通信协议;
  • 接口设计;
  • 配置管理;
  • 事件处理;

4.4 按模式分的微服务组件

在这里插入图片描述
按模式分的微服务组件

4.5 微服务架构的优点与挑战

微服务架构的优点让我们选择微服务作为企业级架构方案,微服务的技术挑战则要通过学习、设计甚至开发一些组件去解决;
  • 架构优点

    • 复杂度可控;
    • 技术选型更灵活;
    • 独立部署;
    • 容错性;
  • 架构挑战

    • 故障排查;
    • 分布式架构的复杂性;
    • 服务依赖;
    • 运维成本;
  • 技术挑战

    • 分布式配置中心;
    • 服务路由;
    • 负载均衡;
    • 熔断限流;
    • 链路监控;

4.6 本系列笔记将讨论什么

本系列笔记将在介绍微服务架构需要什么功能同时给出市面上常见的几种解决方案,他们通常被称为组件;

五大核心功能及其组件

  • 配置中心;
  • 注册中心;
  • 服务调用;
  • 服务容灾与降级;
  • 网关路由;

其他特色扩展功能及其组件

  • 安全保护;
  • 事件驱动;
  • 服务总线;
  • 分布式追踪;
  • 分布式事务;
  • RPC 通信;
  • 等...


5. 主流 Spring Cloud 组件

  • Spring Cloud 不是一个框架,而是一套规范。其对 Spring Boot 在次封装后屏蔽复杂的配置,给开发者提供了良好的开箱即用的微服务规范;
  • Spring Cloud Netflix、Spring Cloud Condul、Spring Cloud Alibaba 才是 Spring Cloud 规范的实现;
  • 目前主流的 Spring Cloud 治理方案主要由 Spring Cloud Netflix 和 Spring Cloud Alibaba 提供;
  • 相比 Spring Cloud Netflix,Spring Cloud Alibaba 在服务治理方面更适用于国内技术场景;

5.1 组件对比图

大致为 Netflix 版与 Alibaba 版的对比;

组件对比图

5.2 Spring Cloud五大组件:

  • 注册中心 Netflix Eureka;
  • 客服端负载均衡 Netflix Ribbon;
  • 断路器 Netflix Hystrix;
  • 服务网关 Netflix Zuul;
  • 布式配置 Config;

5.3 Spring Cloud Alibaba 技术架构图

Spring Cloud Alibaba 技术架构图

5.4 各厂商 Spring Cloud 技术架构图

各厂商 Spring Cloud 技术架构图


6. 一些资源链接

7. 本系列笔记的编写思想

7.1 目录结构

  • 主要分有一级标题和二级标题,一二级标题都是一篇文章;

    • 为方便说明,下面用 XXX 代表:配置中心、注册中心、服务调用等功能;
    • 用 YYY 代表:Eureka、Spring Cloud Config、Zuul 等细分组件;
  • 其中一级标题表示概述,目录结构如下:

    • XXX 基础知识:对微服务(注册中心、配置、网关等)做系统的概述;
    • YYY 组件分析:里面有个链接,可以跳转至对应细分文章;
  • 二级标题为组件实战,目录结构如下:

    • YYY 基础知识:介绍一些 YYY 组件的理论知识与面试考点;
    • 使用 YYY 组件构建服务:实战部分;
    • 其中 YYY 组件实战部分又可大致总结为:

      • 引入 pom.xml 依赖文件;
      • 修改 .yml 配置文件;
      • 在主程序类上添加注解;
      • 编写业务类(Config、Service、Controller 等);


相关文章
|
1月前
|
弹性计算 API 持续交付
后端服务架构的微服务化转型
本文旨在探讨后端服务从单体架构向微服务架构转型的过程,分析微服务架构的优势和面临的挑战。文章首先介绍单体架构的局限性,然后详细阐述微服务架构的核心概念及其在现代软件开发中的应用。通过对比两种架构,指出微服务化转型的必要性和实施策略。最后,讨论了微服务架构实施过程中可能遇到的问题及解决方案。
|
2月前
|
Cloud Native Devops 云计算
云计算的未来:云原生架构与微服务的革命####
【10月更文挑战第21天】 随着企业数字化转型的加速,云原生技术正迅速成为IT行业的新宠。本文深入探讨了云原生架构的核心理念、关键技术如容器化和微服务的优势,以及如何通过这些技术实现高效、灵活且可扩展的现代应用开发。我们将揭示云原生如何重塑软件开发流程,提升业务敏捷性,并探索其对企业IT架构的深远影响。 ####
64 3
|
2月前
|
Cloud Native 安全 数据安全/隐私保护
云原生架构下的微服务治理与挑战####
随着云计算技术的飞速发展,云原生架构以其高效、灵活、可扩展的特性成为现代企业IT架构的首选。本文聚焦于云原生环境下的微服务治理问题,探讨其在促进业务敏捷性的同时所面临的挑战及应对策略。通过分析微服务拆分、服务间通信、故障隔离与恢复等关键环节,本文旨在为读者提供一个关于如何在云原生环境中有效实施微服务治理的全面视角,助力企业在数字化转型的道路上稳健前行。 ####
|
1月前
|
Java 开发者 微服务
从单体到微服务:如何借助 Spring Cloud 实现架构转型
**Spring Cloud** 是一套基于 Spring 框架的**微服务架构解决方案**,它提供了一系列的工具和组件,帮助开发者快速构建分布式系统,尤其是微服务架构。
207 69
从单体到微服务:如何借助 Spring Cloud 实现架构转型
|
1月前
|
运维 监控 持续交付
微服务架构解析:跨越传统架构的技术革命
微服务架构(Microservices Architecture)是一种软件架构风格,它将一个大型的单体应用拆分为多个小而独立的服务,每个服务都可以独立开发、部署和扩展。
313 36
微服务架构解析:跨越传统架构的技术革命
|
2天前
|
人工智能 安全 Java
微服务引擎 MSE:打造通用的企业级微服务架构
微服务引擎MSE致力于打造通用的企业级微服务架构,涵盖四大核心内容:微服务技术趋势与挑战、MSE应对方案、拥抱开源及最佳实践。MSE通过流量入口、内部流量管理、服务治理等模块,提供高可用、跨语言支持和性能优化。此外,MSE坚持开放,推动云原生与AI融合,助力企业实现无缝迁移和高效运维。
|
1月前
|
设计模式 负载均衡 监控
探索微服务架构下的API网关设计
在微服务的大潮中,API网关如同一座桥梁,连接着服务的提供者与消费者。本文将深入探讨API网关的核心功能、设计原则及实现策略,旨在为读者揭示如何构建一个高效、可靠的API网关。通过分析API网关在微服务架构中的作用和挑战,我们将了解到,一个优秀的API网关不仅要处理服务路由、负载均衡、认证授权等基础问题,还需考虑如何提升系统的可扩展性、安全性和可维护性。文章最后将提供实用的代码示例,帮助读者更好地理解和应用API网关的设计概念。
78 8
|
2月前
|
Dubbo Java 应用服务中间件
服务架构的演进:从单体到微服务的探索之旅
随着企业业务的不断拓展和复杂度的提升,对软件系统架构的要求也日益严苛。传统的架构模式在应对现代业务场景时逐渐暴露出诸多局限性,于是服务架构开启了持续演变之路。从单体架构的简易便捷,到分布式架构的模块化解耦,再到微服务架构的精细化管理,企业对技术的选择变得至关重要,尤其是 Spring Cloud 和 Dubbo 等微服务技术的对比和应用,直接影响着项目的成败。 本篇文章会从服务架构的演进开始分析,探索从单体项目到微服务项目的演变过程。然后也会对目前常见的微服务技术进行对比,找到目前市面上所常用的技术给大家进行讲解。
78 1
服务架构的演进:从单体到微服务的探索之旅
|
2月前
|
负载均衡 Java 持续交付
深入解析微服务架构中的服务发现与负载均衡
深入解析微服务架构中的服务发现与负载均衡
114 7
|
2月前
|
消息中间件 运维 Kubernetes
后端架构演进:从单体到微服务####
本文将探讨后端架构的演变过程,重点分析从传统的单体架构向现代微服务架构的转变。通过实际案例和理论解析,揭示这一转变背后的技术驱动力、挑战及最佳实践。文章还将讨论在采用微服务架构时需考虑的关键因素,包括服务划分、通信机制、数据管理以及部署策略,旨在为读者提供一个全面的架构转型视角。 ####
50 1