特此注明 :
Designed By :长安城没有风
Version:1.0
Time:2025.09.06
Location:辽宁 · 大连

📕1. 认识微服务

在这里插入图片描述

✏️1.1 单体架构

很多创业公司早期或者传统企业会把业务的所有功能实现都打包在⼀个项⽬(业务的所有功能实现都打包在⼀个war包或者Jar包中)。例如:我们之前练习的博客系统,图书管理系统,前端,后端,数据库实现都在一个项目中。这种⽅式就称为单体架构。

以⼤家都很熟悉的电商系统为例,电商系统包括 : ⽤⼾管理,商品管理,订单管理,⽀付管理,库存管理,物流管理等等,项⽬早期我们会把这些模块都写在⼀个web项⽬中,然后统⼀部署到⼀个Web服务器中。这种架构开发简单,部署简单,⼀个项⽬就包含了所有的功能,省去了多个项⽬之间的交互和调⽤消耗,直接部署在⼀个服务器即可。
在这里插入图片描述

✏️1.2 集群和分布式架构

当⽹站的⽤⼾量越来越⼤,需求也会越来越多,流量也会越来越⼤,服务可能就会⾯临以下问题 :

  1. 后端服务器的压⼒就会越来越⼤,负载越来越⾼,甚⾄出现⽆法访问的情况。
  2. 业务场景逐渐复杂,为了满⾜⽤⼾的需求,单体应⽤也会越来越⼤,各个业务代码之间的耦合度也会越来越⾼,任何⼀个问题,都需要整个项⽬重新构建,发布。
  3. ⼀个微⼩的问题,可能会导致整个应⽤挂掉。

我们从两个⽅⾯进⾏优化 :

  1. 横向 : 添加服务器,把单台机器变成多台机器的集群。
  2. 纵向 : 把⼀个应⽤,按照业务进⾏拆分,拆分为多个项⽬,此架构也称为垂直架构。

在这里插入图片描述
集群

是将⼀个系统完整的部署到多个服务器上,每个服务器都能提供系统的所有服务,多个服务器通过负载均衡调度完成任务,每个服务器称为集群的节点(node)。

分布式

是将⼀个系统拆分为多个⼦系统,多个⼦系统部署在多个服务器上,多个服务器上的⼦系统协同合作完成⼀个特定任务。

举个例子:
⼀个饭店只有⼀个厨师,这个厨师负责备菜,洗菜,切菜,炒菜。随着这个饭店的⽣意越来越好,这个厨师忙不过来了,饭店⼜请了⼀个厨师,新厨师和⽼厨师做⼀样的事情,也是洗菜,切菜,炒菜。这两个厨师的关系就是集群。为了让厨师专⼼炒菜,饭店⼜请了⼀个配菜师,负责备菜,洗菜,切菜。 厨师和配菜师的关系就是分布式。后来⼀个配菜师也忙不过来了,⼜请了⼀个配菜师,这两个配菜师的关系就是集群。
在这里插入图片描述

✏️1.3 微服务架构

在分布式架构下,当部署的服务越来越多,重复的代码就会越来越多,服务的调⽤关系也会越来越复杂。我们可以把⼀些通⽤的,会被多个上层服务调⽤的共享业务,提取成独⽴的基础服务,组成⼀个个微⼩的服务,这就是微服务。简单来说,微服务就是很⼩的服务,⼩到⼀个服务只对应⼀个单⼀的功能,只做⼀件事,这个服务可以单独部署运⾏,微服务之间可以采⽤REST和RPC协议进⾏通信。微服务架构是分布式架构的⼀种拓展,这种架构模式下它拆分粒度更⼩,服务更独⽴,可以理解为 : 微服务是⼀种经过良好架构设计的分布式架构⽅案。

分布式架构与微服务架构的关系:
分布式 : 服务拆分,拆了就⾏。
微服务 : 指⾮常微⼩的服务,更细粒度的垂直拆分,通常指不能再拆的服务。

分布式架构侧重于压⼒的分散,强调的是服务的分散化。微服务侧重于能⼒的分散,更强调服务的专业化和精细分⼯。从实践的⻆度来看,微服务架构通常是分布式服务架构,反之则未必成⽴。所以,选择微服务通常意味着需要解决分布式架构的各种难题。

✏️1.4 微服务带来的挑战

随着产品的复杂性和流量的增加,技术架构也在不断的发⽣变化。不论是早期的单体架构,还是现在⼴泛使⽤的微服务架构,都是为了更好的服务产品,解决问题。微服务架构带来好处的同时,也⾯临着⼀些挑战,从单体服务转向微服务意味着管理更加复杂。接下来我们从优势和挑战两个⽅⾯分析⼀下微服务架构。

优势

  1. 易开发和维护:每个微服务负责的业务⽐较清晰,体量⼩,开发和维护成本降低。
  2. 容错性⾼:⼀个服务发⽣故障,可以使故障隔离在单个服务中,不影响整体服务故障。
  3. 扩展性好:每个服务都是独⽴运⾏的,我们可以结合项⽬实际情况进⾏扩展,按需伸缩。
  4. 技术选型灵活:每个微服务都是单独的团队来运维,可以根据业务特点和团队特点,选择适合的技术栈。

挑战

  1. 服务依赖:随着服务的数量增多,服务之间的关系也会变得更加复杂,⼀个服务的更改,需要考虑对其他服务的影响。
  2. 运维成本:⼀个业务流程会涉及多个微服务共同完成,有更多的服务需要编译,部署,运⾏,甚⾄可能是不同的编程语⾔,不同的运⾏环境,当然也需要集群来处理故障转移等,这对于运维⼈员而⾔,是巨⼤的挑战。
  3. 开发和测试:⼀个业务流程可能涉及多个微服务共同完成,服务调⽤引⼊⽹络延迟,不可靠的⽹络,如何进⾏容错处理等问题,这对开发和测试⽽⾔,难度也会提升。
  4. 服务监控:在⼀个单体结构中,很容易实现服务的监控。因为所有功能都在⼀个服务中,微服务架构下,不仅需要对整个链路进⾏监控,还需要对每⼀个服务实现监控。
  5. 负载均衡:微服务架构中的服务实例数量可能⾮常庞⼤,因此需要有效的服务发现和负载均衡机制来管理请求流量和保证⾼可⽤性。

📕2. 微服务解决⽅案 — Spring Cloud

Spring Cloud 就是分布式微服务架构的⼀站式解决⽅案,是微服务架构落地的多种技术的集合。Spring Cloud 提供了⼀些可以让开发⼈员快速构建分布式服务的⼯具,⽐如配置管理,服务发现,熔断,智能路由等。它们可以在任何分布式环境中很好的⼯作。

Spring Cloud 并不是Spring 团队研发的框架,它只是把⼀些⽐较优秀的解决微服务架构中常⻅问题的开源框架基于SpringCloud规范进⾏了整合,并基于SpringBoot的⻛格,对这些组件进⾏封装,屏蔽掉了复杂的配置和实现原理。为开发者提供了开箱即⽤的微服务开发体验,这些开源技术的框架是由各个公司来维护的,Spring Cloud 就是这些微服务的⼤管家。

✏️2.1 Spring Cloud实现⽅案—Spring Cloud Netflix

Spring Cloud Netflix是 Netflix OSS(Netflix Open Source Software)在Spring Cloud规范下的实现。在很⻓的⼀段时间⾥,Spring Cloud ⼀度被泛指 Spring Cloud Netflix。Spring Cloud⼀直以来把Netflix OSS 套件作为其官⽅默认的⼀站式解决⽅案,然⽽,Netflix公司在2018年前后宣布其核⼼组件Hystrix、Ribbon、Zuul等均进⼊维护状态,Spring Cloud 也被迫宣布删除这些维护模块。Spring Cloud Netflix 在很多公司都有⼤规模使⽤,⼀旦停⽌更新,短期看影响不⼤,但⻓期显然是不合适的,Spring Cloud官⽅也提供了⼀些替换建议。

在这里插入图片描述

✏️2.2 Spring Cloud实现⽅案—Spring Cloud Alibaba

Spring Cloud Alibaba 是阿⾥巴巴集团下的开源组件和云产品在Spring Cloud规范下的实现。虽然Spring Cloud Alibaba⽬前并不是Spring Cloud官⽅推荐的默认⽅案,但是Spring Cloud Alibaba是阿⾥中间件团队主导的⼀个新⽣项⽬,正处于⾼速迭代中。甚⾄在Alibaba的开源组件还没有植入SpringCloud⽣态之前,就已经在各⼤公司⼴泛使⽤了。如果说Spring Cloud Netflix 是 Spring Cloud 的第⼀代实现,那么Spring Cloud Alibaba 也可以看做是Spring Cloud 的第⼆代实现,主要由 Nacos、Sentinel、Seata 等组件组成。Spring Cloud Alibaba 官方网站

在这里插入图片描述

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐