目录
1.认识微服务
1.1 单体架构
1.2 集群和分布式
1.3 微服务架构
1.4 分布式架构和微服务架构区别
1.5 小结
2.微服务解决方案 --- SpringCloud
2.1 什么是Springcloud
2.2 SpringCloud版本
2.3 SpringCloud实现方案
Spring Cloud Netflix
Spring Cloud Alibaba
Spring Cloud 实现对比
3.总结
1.认识微服务
下图表示了服务架构从单体应用逐渐转变为微服务应用的过程
1.1 单体架构
我们在一开始的学习过程中,在完成一个业务的时,通常会在一个项目中实现所有的功能模块,这个就是单体架构,业务的所有功能实现都打包在一个jar中,这个方式就称为单体架构.
⽐如我的上一篇博客中的在线oj的项目,前端+后端+数据库实现, 都在⼀个项⽬中, 这种架构就称为单体架构

1.2 集群和分布式
我们在上面的单体架构的弊端引出了两个名称,在下面我们先对这两个词解释一下
集群(cluster): 是将一个系统完整的部署到多个服务器上,每个服务器都能提供系统的所有的访问,多个服务器通过负载均衡调度完成任务,每个服务器称为集群的节点(node)
分布式: 将一个系统拆分为多个子系统,多个子系统都部署在多个服务器上,多个服务器上的子系统协同合作完成一个特定任务

我开了一家猫猫餐馆:
1.一开始人流量不大,我只请了一个厨师(牛马),整个厨师的工作内容为(洗菜,切菜,配菜,炒菜)2.随着餐馆的生意起来了,人流量大了,现在一个厨师忙不过来了1)横向:招聘一个厨师,两个厨师都可以独立做饭2)纵向:招聘一个配菜师负责洗菜,切菜,配菜. 厨师就炒菜即可3.生意更加火爆了,再招聘多个配菜师,多个厨师

1.从概念上,集群是多个计算机做同样的事(相互之间可以进行替代),分布式是多个计算机做不同的事(相互之间不能替代-- 配菜师和厨师)
2.从功能上,集群的每一个节点功能是相同的,并且可以替代的;分布式也是多个节点组成的系统,但是每个节点完成的业务师不同的,一个节点出问题,这个业务就不可以访问了
3.从关系上,分布式和集群在实践中,很多时候是互相配合使用的,比如分布式的某一个节点,可能由一个集群来代替,分布式架构大多是建立在集群上的,所以实际的分布式架构设计中并不会把分布式和集群单独区分,而是统称: 分布式架构
1.3 微服务架构
在分布式架构下,当部署的服务越来越多,重复的代码就会越来越多,服务的调用关系也会越来越复杂.我们可以把一些通用的,会被多个上层服务调用的共享业务,提取成独立的基础服务,组成一个个微小的服务,这就是微服务.

简单来说,微服务就是很小的服务,小到一个服务只能对应一个单一的功能,只做一件事,这个服务可以单独部署运行 -- 一个微服务只做一件事,微服务之间可以采用REST和RPC协议进行通信
从这个角度来看,微服务架构是分布式架构的一种拓展,这种架构模式下它拆分粒度更小,服务更独立,可以理解为: 微服务是一种经过良好架构设计的分布式架构方案.
1.4 分布式架构和微服务架构区别
1.5 小结
上述我们简述了4种开发架构, 单体架构 --> 垂直架构 --> 分布式架构 --> 微服务架构 ,这里的所有的架构并没有什么哪种更加适合开发的,所有架构都是为了更好的服务产品,适合当前项目开发的架构才是最好的.
2.微服务解决方案 --- SpringCloud
2.1 什么是Springcloud

Distributed/versioned configuration 分布式版本配置
Service registration and discovery 服务注册和发现
Routing 路由
Service-to-service calls 服务调用
Load balancing 负载均衡
Circuit Breakers 断路器
Distributed messaging 分布式消息
......
2.2 SpringCloud版本

2.3 SpringCloud实现方案
Spring Cloud Netflix
Eureka : 服务注册和发现Zuul: 服务⽹关Ribbon: 负载均衡Feign: 服务调⽤组件Hystrix: 断路器, 提供服务熔断和限流Hystrix Dashboard: 监控⾯板...
Spring Cloud Alibaba
Spring Cloud 实现对比
SpringCloud官方 | Spring Cloud Netflix | Spring Cloud Alibaba | |
---|---|---|---|
服务注册/发现 | Eureka | Eureka | Nacos |
服务调⽤ | OpenFeign | Feign | Dubbo |
配置中⼼ | SpringCloudConfig | Archaius | Nacos |
服务网关 | SpringCloudGateway | Zuul | SpringCloudGateway |
负载均衡 | SpringCloudLoadBalance | Ritton | Dubbo |
3.总结
通过上面的文章学习,现在可能对于SpringCloud的概念和用法还会有点模糊,我们这个系列的下一篇文章我们就以实现一个电商平台为例(功能很简单的)去详细讲解,微服务架构开发到底是长什么样子的,如果有什么关于文章的问题欢迎到评论区进行留言哦