背景
2008年以后,国内互联网行业飞速发展,我们对软件系统的需求已经不再是过去”能用就行”这种很low的档次了,像抢红包、双十一这样的活动不断逼迫我们去突破软件系统的性能上限,传统的IT企业”能用就行”的开发思想已经不能满足互联网高并发、大流量的性能要求。系统架构走向分布式已经是服务器开发领域解决该问题唯一的出路,然而分布式系统由于天生的复杂度,并不像开发单体应用一样把框架一堆就能搞定,因此各大互联网公司都在投入技术力量研发自己的基础设施。这里面比较有名的如阿里的开源项目dubbo, Netflix开发的一系列服务框架。在这种“百花齐放”、重复造轮子的状况下,必然要出现一种统一的标准来简化分布式系统的开发,Spring Cloud应运而生。
2 Spring Cloud是什么
Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。Spring并没有重复制造轮子,它只是将目前各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。 Spring Cloud正是对Netflix的多个开源组件进一步的封装而成,同时又实现了和云端平台,和Spring Boot开发框架很好的集成。 Spring Cloud是一个相对比较新的微服务框架,2016年才推出1.0的release版本. 虽然Spring Cloud时间最短, 但是相比Dubbo等RPC框架, Spring Cloud提供的全套的分布式系统解决方案。 Spring Cloud 为开发者提供了在分布式系统(配置管理,服务发现,熔断,路由,微代理,控制总线,一次性token,全居琐,leader选举,分布式session,集群状态)中快速构建的工具,使用Spring Cloud的开发者可以快速的启动服务或构建应用、同时能够快速和云平台资源进行对接。
不论企业面试还是实战开发,Spring Cloud 都成为后端工程师的必备技能之一。
SpringCloud学习思维导图缩略版
招聘情况
今天去看了一下,有关springcloud的在这些公司中面试都是会出现的, 所以还是需要努力增进的,无论是大厂、中游公司都是会有spring系列和算法系列:
学习笔记
市面上有关Springcloud的学习资料数不胜数,无论是文档还是面试题都是有的,但是很乱,没有系统的整理,这样学起来也很迷茫:(今天就小整理了一下Springcloud的学习笔记,总共四份学习进阶)
Day1——Springcloud微服务基础知识
随着互联网的发展,网站应用的规模不断扩大,常规的应用架构已无法应对,分布式服务架构以及微服务架构势在必行,亟需一个治理系统确保架构有条不紊的演进。
1微服务基础知识
- 1.1系统架构的演变
- 1.2分布式核心知识
-
1.3常见微服务框架
2SpringCloud概述
- 2.1微服务中的相关概念
- 2.2 SpringCloud的介绍
-
2.3 SpringCloud的架构
3案例搭建
- 3.1数据库表
- 3.2措建环境
- 3.3搭建商品微服务
- 3.4其他微服务
-
3.5服务调用
4服务注册Eureka基础
- 4.1微服务的注册中心
- 4.2 Eureka的概述
- 4.3搭建Eureka注册中心
- 4.4服务注册到Eureka注册中心
- 4.5 Eureka中的自我保护
-
4.6 Eureka中的元数据
5服务注册Eureka高级
- 5.1 Eureka Server高可用集群
- 5.2 Eureka中的常见问题
-
5.3 Eureka源码解析
6Eureka替换方案Consul
- 6.1 Eureka闭源的影响
- 6.2什么是consul
- 6.3 consul的基本使用
- 6.4基于consul的服务注册
- 6.5基于consul的服务发现
-
6.6 consul高可用集群
7服务调用Ribbon入门
- 7.1 Ribbon概述
- 7.2基于Ribbon实现订单调用商品服务
8服务调用Ribbon高级
- 8.1负彩均衡概述
- 8.2基于Ribbon实现负载均衡
-
8.3 Ribbon中负载均衡的源码解析
Day2——Springcloud服务调用Feign入门
1服务调用Feign入门
- 1.1 Feign简介
- 1.2基于Feign的服务调用
- 1.3 Feign和Ribbon的联系
-
1.4负裁均衡
2服务调用Feign高级
- 2.1 Feign的配置
- 2.2请求压缩
- 2.3日志级别
-
2.4源码分析
3服务注册与发现总结
- 3.1组件的使用方式
4微服务架构的高并发问题
- 4.1性能工具Jmetter
-
4.2系统负载过高存在的问题
5服务熔断Hystrix入门
- 5.1服务容错的核心知识
- 5.2 Hystrix介绍
- 5.3 Rest实现服务熔断
-
5.4 Feign实现服务熔断
6服务熔断Hystrix高级
- 6.1 Hystrix的监控平台
- 6.2熔断器的状态
- 6.3熔断器的隔离策略
-
6.4 Hysti的核心源码
7服务熔断Hystrix的替换方案
- 7.1替换方案介绍
- 7.2 Sentinel概述
- 7.3 Sentinel中的管理控制台
-
7.4基于Sentinel的服务保护
Day3——Springcloud微服务网关概述
1微服务网关概述
- 1.1服务网关的概念
- 1.2常见的API网关实现方式
-
1.3基于Nginx的网关实现
2微服务网关Zuul
- 2.1Zuul简介
- 2.2搭建Zuu网关服务器
- 2.3 Zuul中的路由转发
- 2.4 Zuul中的过滤器
- 2.5服务网关Zuul的核心源码解析
- 2.6 Zuul网关存在的问题
-
2.7 Zuu|网关的替换方案
3.微服务网关GateWay
- 3.1 Gateway简介
- 3.2入门案例
- 3.3过滤器
- 3.4统一鉴权
- 3.5网关限流
- 3.6网关高可用
-
3.7执行流程分析
4微服务的链路追踪概述
- 4.1微服务架构下的问题
- 4.2 Sleuth概述
- 4.3链路追踪Sleuth入门
- 4.4 Zipkin的概述
- 4.5 Zipkin Server的部署和配置
- 4.6客户端Zipkin+ Sleuth整合
- 4.7基于消息中间件收集数据
-
4.8存储跟踪数据
Day4——SpringcloudStream
1Spring Cloud Stream
- 1.1概述
- 1.2核心概念
- 1.3入门案例
- 1.4自定义消息通道
- 1.5消息分组
-
1.6消息分区
2SpringCloud Config
- 2.1什么是配置中心
- 2.2 Spring Cloud Config简介
- 2.3 Spring Cloud Config入门
- 2.4配置中心的高可用
- 2.5消息总线bus
-
2.6消息总线整合配置中心
3开源配置中心Apollo
- 3.1 Apollo概述
- 3.2 Apollo的实现方式
- 3.3搭建Apollo服务端
-
3.4客户端集成
当然只有这些笔记还是不够的,还整理了一些SpringCloud的学习文档:
写在最后
毫无疑问,Spring Cloud是目前微服务架构领域的翘楚,无数的书籍博客都在讲解这个技术。不过大多数讲解还停留在对Spring Cloud功能使用的层面,其底层的很多原理,很多人可能并不知晓。但是不能放弃对SpringCloud的学习。