目录
1. 认识微服务
1.1 单体架构
1.2 集群和分布式架构
1.3 集群和分布式
1.4 微服务架构
2. 什么是Spring Cloud?
2.1 Spring Cloud和Spring Boot的关系
2.2 Spring Cloud实现方案
总体内容方向:
- 什么是微服务?
- 什么是Spring Cloud ?
下图表示服务架构从单体单体应⽤逐渐转变为微服务应⽤的过程.
很多创业公司早期或者传统企业会把业务的所有功能实现都打包在⼀个项⽬,这就是单体架构.
这种架构开发简单,部署简单,⼀个项⽬就包含了所有的功能,省去了多个项⽬之间的交互和调⽤消耗.直接部署在⼀个服务器即可.
当网站的的用户量越来越大,需求量越来越多,请求量越来越大,服务器可能就会⾯临以下问题:
可以从两个方面进行优化:
集群(cluster)是将⼀个系统完整的部署到多个服务器上,每个服务器都能提供系统的所有服务,多个服务器通过负载均衡调度完成任务. 每个服务器称为集群的节点(node)。 (不同的服务器,功能相同).
分布式是将⼀个系统拆分为多个⼦系统,多个⼦系统部署在多个服务器上,多个服务器上的⼦系统
协同合作完成⼀个特定任务. (不同的服务器,共同完成一个工作)
比如: 刚成立的一个餐馆,只有一个厨师,这个厨师负责做饭相关的所有工作.(备菜,洗菜,切菜,炒菜)。随着这个饭店的⽣意越来越好,这个厨师忙不过来了. 出现问题就要解决问题.
- 横向:在招聘一个厨师,这两个厨师都是可以独立做饭的.。这两个厨师的关系就是集群.
- 纵向:招聘一个配菜师,负责备菜,洗菜,切菜。 厨师和配菜师的关系就是分布式.
在后来⼀个配菜师也忙不过来了, ⼜请了⼀个配菜师, 这两个配菜师的关系就是集群.
集群和分布式区别和联系
在分布式架构下,当部署的服务越来越多,重复的代码就会越来越多,服务的调⽤关系也会越来越复杂.我们可以把⼀些通⽤的,会被多个上层服务调⽤的共享业务,提取成独⽴的基础务,组成⼀个个微⼩的服务。这就是微服务.
简单来说,微服务就是很⼩的服务.⼩到⼀个服务只对应⼀个单⼀的功能,只做⼀件事.这个服务可以单独部署运⾏。
微服务之间可以采⽤REST和RPC协议进⾏通信.
从这个⻆度来看,微服务架构是分布式架构的⼀种拓展,这种架构模式下它拆分粒度更⼩,服务更独⽴.可以理解为:微服务是⼀种经过良好架构设计的分布式架构⽅案.分布式:服务拆分,拆了就⾏.
微服务: 不仅拆分,还拆分的很细,通常指不能再拆的服务.
优势
先看官网介绍:Spring Cloud
Spring Cloud 提供了⼀些可以让开发⼈员快速构建分布式服务的⼯具,⽐如配置管理,服务发现,熔断,智能路由等. 它们可以在任何分布式环境中很好的⼯作.
简单来说,Spring Cloud就是分布式微服务架构的⼀站式解决⽅案,是微服务架构落地的多种技术的集合.
- Distributed/versioned configuration分布式版本配置
- Service registration and discovery服务注册和发现
- Routing路由
- Service-to-service calls服务调⽤
- Load balancing负载均衡
- Circuit Breakers断路器
- Distributed messaging分布式消息
- .......
Spring Cloud 并不是Spring 团队研发的框架,它只是把⼀些⽐较优秀的解决微服务架构中常
⻅问题的开源框架基于SpringCloud规范进⾏了整合,并基于SpringBoot的⻛格,对这些组件
进⾏封装,屏蔽掉了复杂的配置和实现原理.为开发者提供了开箱即⽤的微服务开发验.
⽐如:SpringBoot3.2.X对应的SpringCloud版本是2023.0.X。
如果我们有⼀个SpringBoot项⽬,我们希望在这个项⽬中添加SpringCloud的⼀些组件,需要根据当前项⽬的SpringBoot版本,选择SpringCloud的版本。
在Spring Cloud的规范下,有很多实现,其中最为出名的是:
进。⾃Spring Cloud Netflix进⼊停更维护后,Spring Cloud Alibaba逐渐代替它成为主流的微服务框架.
Spring Cloud 实现对⽐
SpringCloud官⽅(默认) | Spring Cloud Netflix | Spring Cloud Alibaba | |
服务注册/发现 | Eureka | Eureka | Nacos |
服务调⽤ | OpenFeign | Feign | Dubbo |
配置中⼼ | SpringCloudConfig | Archaius | Nacos |
服务⽹关 | SpringCloudGateway | Zuul | SpringCloudGateway |
负载均衡 | SpringCloud LoadBalance | Ribbon | Dubbo |
注:黄色表示进入维护的组件.