01.Spring Cloud基本介绍
官方文档 https://spring.io/projects/spring-cloud
提出问题,引出微服务
- 先思考一个问题,没有微服务,是不是程序员就不能开发大型项目?
是可以的,对大型项目进行模块划分,对各个模块进行实现,模块之间 更多的是以API调用完成,耦合度较高,不利于扩展和维护 - 再思考,标准的微服务解决方案(springcloud和cloud alibaba)出现原因和价值是什么?
- 微服务可以根据业务不同,将一个大项目,分解成不同的服务(微服务,比如搜索服务/网关服务/配置服务/存储服务/发现服务等等)
- 各个服务通过分布式方式进行工作,从而可以高效,快速,稳定的完成复杂的功能
- 也可以理财成将原来大项目的某些模块->抽出形成微服务->配合分布式工作方式->从而高效,快速,稳定的完成复杂业务
系统架构的演变构成
单机架构
动静分离架构:静态缓存+文件存储
分布式架构:业务拆分+负载均衡
微服务架构:使用Spring Cloud
“微服务”一词源于Martin Fowler的名为Microservice的博文,简单的说,微服务是系统架构上的一种设计风格,它的主旨是将一个原本独立的系统拆分为多个小型服务,这些小型服务都在各自独立的进程中运行,服务之间通过基于HTTP的REstful API进行通信协作。
被拆分的每一个小型服务都围绕着系统中的某一项或一些耦合度较高的业务功能进行构建,并且每个服务都维护着自身的数据存储,业务开发,自动化测试案例以及独立部署机制,由于有轻量级的通信协作基础,所以这些微服务可以使用不同的语言来编写。
Spring Cloud 核心组件图
Spring Cloud 微服务 解读
- Spring Cloud是微服务的落地
- Spring Cloud 提醒了微服务的弹性设计
- 微服务的工作方式一般是基于分布式的
- Spring Cloud仍然是Spring家族的一员,可以解决微服务的分布式工作方式带来的各种问题
- Spring Cloud提供很多组件,比如服务发现,负载均衡,链路中断,分布式追踪和监控,甚至提供API Gateway功能
Spring Cloud 组件选型
服务注册中心
Erueka- Nacos
- Zookeeper
- Consul
服务负载均衡
- Ribbon
- LoadBalancer
服务熔断降级
Hystrix- Sentinel
服务调用
Feign- Oepn Feign
服务网关
Zuul- GateWay
服务配置
Config- Nacos
服务总线
Bus- Nacos
分布式微服务技术选型建议
Spring Cloud Alibaba组件为主
Spring Cloud为辅,比如(SpringCloud-Ribbon:负载均衡,SpringCloud-Oepn Feign:调用远程服务,SpringCloud-Gateway:API网关,SpringCloud-Sleuth:调用链监控 等)
Spring boot和spring Cloud版本对应关系