1.提出问题
-
先思考一个问题,没有微服务技术,是不是程序员就不能开发大型项目?
是可以的,对大型项目进行模块划分,对各个模块进行实现。但模块之间更多地是以API调用完成,耦合度较高,不利于拓展和维护(在没有微服务技术时,很多大型项目就已经使用了微服务的概念)
-
标准化的微服务解决方案(SpringCloud 和 SpringCloud Alibaba)出现的原因和价值是什么?
(1)微服务可以根据业务不同,将一个大项目分解成不同的服务(比如搜索服务/网关服务/配置服务/存储服务/发现服务等等)
(2)各个服务通过分布式方式进行工作,从而可以高效,快速,稳定地完成复杂的功能
(3)可以理解为:原来大项目的某些模块->抽出形成微服务->配合分布式工作方式->从而高效,快速稳定地完成复杂功能
2.系统架构的演变过程
- 单机架构
- 动静分离架构:静态缓存+文件存储
- 分布式架构:业务拆分+负载均衡
- 微服务架构:使用SpringCloud
-
”微服务“一词源于 Martin Fowler 的名为 Microservices 的博文。简单地说,微服务是系统架构上的一种设计风格,它的主旨是将一个原本独立的系统拆分成多个小型服务,这些小型服务都在各自独立的进程中运行,服务之间通过基于HTTP的Restful API进行通信协作。
-
被拆分的每一个小型服务,都围绕着系统中的某一项,或一些耦合度较高的业务功能进行构建,并且每个服务都维护着自身的数据存储、业务开发、自动化测试案例以及独立部署机制。由于有轻量级的通信协作基础,所以这些微服务可以使用不同的语言来编写。
3.SpringCloud全面说明
- SpringCloud 来源于 Spring,是更高层次的、架构视角的综合性大型项目,目标旨在构建一套标准化的微服务解决方案,让架构师在使用微服务理念构建系统时,面对各个环节都可以找到相应的组件来处理
- SpringCloud 是 Spring 社区为微服务架构提供的一个 “全家桶” 套餐。套餐中各个组件之间的配合,可以减少组件选型和整合上花费的精力,可以快速构建起基础的微服务架构系统,是微服务架构的最佳落地方案
- SpringCloud 天然支持 SpringBoot(有版本对应要求),使用门槛较低
- SpringCloud 解决了与分布式系统相关的复杂性——网络问题,延迟开销,带宽问题,安全问题
- 有处理服务发现的能力——服务发现允许集群中的进程和服务找到彼此并进行通信
- 可以处理冗余问题——冗余问题经常发生在分布式系统中
- 能够解决负载平衡——改进跨多个计算资源(例如计算机集群、网络连接、中央处理单元)的工作负载分布
4.SpringCloud核心组件图
-
SpringCloud 核心组件一览图,文档 : Spring Cloud
-
Spring Cloud Alibaba 文档地址: GitHub - alibaba/spring-cloud-alibaba: Spring Cloud Alibaba provides a one-stop solution for application development for the distributed solutions of Alibaba middleware.
-
Spring Cloud Netflix 地址: Netflix, Inc. · GitHub
5.SpringCloud分布式示意图
- SpringCloud 是微服务概念的落地实现
- SpringCloud 体现了微服务的弹性设计
- 微服务的工作方式一般是基于分布式的
- SpringCloud 仍然是 Spring 家族一员,可以解决微服务的分布式工作方式带来的各种问题
- SpringCloud 可以帮助解决服务发现、负载平衡、断路、分布式跟踪和监视的问题,甚至可以充当 API 网关
- SpringCloud和SpringBoot版本的对应关系