目录
SpringCloud & SpringCloud Alibaba架构介绍
Spring Cloud 基本介绍
官方文档
提出问题, 引出微服务
单机架构
- 示意图
动静分离架构:静态缓存+ 文件存储
解析
分布式架构:业务拆分+负载均衡
解析
微服务架构:使用Spring Cloud
解读:
Spring Cloud 全面说明(重要)
Spring Cloud 核心组件图
spring cloud 核心组件一览图
一图胜千言
Spring Cloud 分布式示意图
一图胜千言
Microservice resilience with Spring Cloud
解读
SpringCloud 和SpringBoot 版本对应关系
Spring Cloud 组件选型
- 一图胜千言
Spring Cloud Alibaba 基本介绍
官方文档
Spring Cloud Alibaba 是什么
主要功能一览
Spring Cloud Alibaba 核心组件
分布式微服务技术选型
● Spring Cloud 原生组件的几大痛点
● Spring Cloud Alibaba 的优势
分布式微服务技术选型建议
SpringCloud & SpringCloud Alibaba架构介绍
Spring Cloud 基本介绍
官方文档
地址: https://spring.io/projects/spring-cloud
提出问题, 引出微服务
1、先思考一个问题, 没有微服务技术,是不是程序员就不能开发大型项目?
是可以的, 对大型项目进行模块划分, 对各个模块进行实现, 模块之间更多的是以API 调用完成, 耦合度较高, 不利于扩展和维护(题外话, 其实以前没有微服务技术时, 很多大型项目就已经使用了微服务的概念,只是当时不叫微服务)
2、再思考, 标准的微服务解决方案(springcloud 和cloud alibaba)出现原因和价值是什么?
(1) 微服务可以根据业务不同,将一个大项目, 分解成不同的服务(微服务,比如搜索服务/网关服务/配置服务/存储服务/发现服务等等)
(2) 各个服务通过分布式方式进行工作,从而可以高效,快速,稳定的完成复杂的功能.
(3) 如果小伙伴还不理解, 你也可以理解成就将原来大项目的某些模块->抽出形成微服务->配合分布式工作方式-> 从而高效,快速,稳定的完成复杂业务功系统架构的演变过程
单机架构
- 示意图
解析
这样是刚刚开始的架构这样的问题有 一个Service 根本支撑不住海量用户
而且只有一个数据库 如果操作非常频繁在高并发的情况下根本支撑不住
所以单体架构只能在少量用户的情况下使用 一旦用户量上来了 业务量变复杂了就支撑不住了
动静分离架构:静态缓存+ 文件存储
解析
动静分离架构 是为了解决 单机架构所存在的问题
加了一层Nginx服务器进行动静分离 如果你请求的资源是 静态资源 就去读取文件服务器 当然如果资源少的情况下可以放在Nginx服务器里面 看需求
为了防止单机架构的数据库压力 动静分离架构增加了 一层 缓存服务器 Redis 在服务器里面先判断缓存服务器里面有没有 然后在决定去不去数据服务器操作 在一定的程度上缓存了数据库的压力
分布式架构:业务拆分+负载均衡
解析
分布式架构优化了动静分离架构 将业务拆分开来实现了负载均衡 可以承担跟多的并发压力.
微服务架构:使用Spring Cloud
解读:
● "微服务" 一词源于Martin Fowler 的名为Microservices 的博文,简单地说, 微服务是系统架构上的一种设计风格,它的主旨是将一个原本独立的系统拆分成多个小型服务,这些小型服务都在各自独立的进程中运行,服务之间通过基于HTTP 的RESTfulAPI 进行通信协作。
● 被拆分成的每一个小型服务都围绕着系统中的某一项或一些耦合度较高的业务功能进行构建, 并且每个服务都维护着自身的数据存储、业务开发、自动化测试案例以及独立部署机制。
由于有轻量级的通信协作基础, 所以这些微服务可以使用不同的语言来编写, 这里我们使用java.
Spring Cloud 全面说明(重要)
1. SpringCloud 来源于Spring, 是更高层次的、架构视角的综合性大型项目, 目标旨在构建一套标准化的微服务解决方案, 让架构师在使用微服务理念构建系统的时, 面对各环节的问题都可以找到相应的组件来处理.
2. Spring Cloud 是Spring 社区为微服务架构提供的一个"全家桶" 套餐。套餐中各个组件之间的配合, 可以减少在组件的选型和整合上花费的精力,可以快速构建起基础的微服务架构系统,是微服务架构的最佳落地方案.
3. Spirng Cloud 天然支持Spring Boot(有版本对应要求),使用门槛较低
4. 解决与分布式系统相关的复杂性– 网络问题,延迟开销,带宽问题,安全问题
5. 处理服务发现的能力– 服务发现允许集群中的进程和服务找到彼此并进行通信
6. 解决冗余问题– 冗余问题经常发生在分布式系统中
7. 解决负载平衡– 改进跨多个计算资源(例如计算机集群,网络链接,中央处理单元)的工作负载分布
Spring Cloud 核心组件图
1. 文档: https://spring.io/projects/spring-cloud
spring cloud 核心组件一览图
2、spring cloud Alibaba 文档地址: https://github.com/alibaba/spring-cloud-alibaba
3、spring cloud Netflix 地址: https://github.com/Netflix
一图胜千言
Spring Cloud 分布式示意图
文档: https://spring.io/microservices
一图胜千言
Microservice resilience with Spring Cloud
The distributed nature of microservices brings challenges. Spring helps you mitigate these.
With several ready-to-run cloud patterns, Spring Cloud can help with service discovery,
load-balancing, circuit-breaking, distributed tracing, and monitoring. It can even act as an API
gateway
解读
1. Spring Cloud 是微服务的落地
2. Spring Cloud 体现了微服务的弹性设计
3. 微服务的工作方式一般是基于分布式的.
4. Spring Cloud 仍然是Spring 家族一员,可以解决微服务的分布式工作方式带来的各种问题
5. Spring Cloud 提供很多组件,比如服务发现, 负载均衡, 链路中断, 分布式追踪和监控,甚至提供API gateway 功能.
SpringCloud 和SpringBoot 版本对应关系
1. 地址: https://spring.io/projects/spring-cloud
Spring Cloud 组件选型
- 一图胜千言
X是不建议使用 ✔是建议使用
Spring Cloud Alibaba 基本介绍
官方文档
英文地址: https://github.com/alibaba/spring-cloud-alibaba
英文地址: 中文文档:
https://github.com/alibaba/spring-cloud-alibaba/blob/master/README-zh.md
Spring Cloud Alibaba 是什么
主要功能一览
Spring Cloud Alibaba 核心组件
分布式微服务技术选型
● Spring Cloud 原生组件的几大痛点
1. Spring Cloud 部分组件停止维护和更新, 给开发带来不便
2. Spring Cloud 部分环境搭建复杂,没有完善的可视化界面,我们需要大量的二次开发和定制
3. Spring Cloud 配置复杂,难以上手
● Spring Cloud Alibaba 的优势
1. 阿里使用过的组件经历了考验[高并发,高性能,高可用],性能强悍,设计合理,现在开源
出来供大家使用.
2. 搭配完善的可视化界面, 给开发运维带来极大的便利搭建简单,学习曲线低
分布式微服务技术选型建议
1. Spring Cloud Alibaba 组件为主
2. Spring Cloud 为辅, 比如(SpringCloud- Ribbon∶ 负载均衡、SpringCloud-OpenFeign∶ 调用远程服务、SpringCloud-Gateway∶ API 网关、SpringCloud-Sleuth∶ 调用链监控等) 还是非常不错的.