SpringCloud 2020 学习笔记-序言
SpringCloud 2020 学习笔记-序言
一、前言
学习、工作使用java已经有一段时间了,前段时间粗略的学习了一下Dubbo
框架,作为第一次使用微服务框架的小白的我来说,在它的服务治理
、服务调用
等功能上深受感慨,也是感受到了微服务
和单体应用
之间的差异,喜欢其功能模块的拆分,降低了整体系统的耦合性,这也许是大家说的低耦合,高内聚
的思想吧。第一次接触便让我迫不及待的想去了解它,掌握它,所以也是决定再去系统的学习下springcloud的体系。为了提高学习效果、加深学习印象,我打算在学习过程中写系列笔记的博客,以此来辅助我的学习,也分享我的过程,希望能帮助到一些和一样的小白,同时也希望看到我文章的大佬们能指出我的不足,非常感谢 (▽)!
二、体系组成
虽然才开始准备写学习笔记,其实网上学习springcloud
的相关知识也有段时间了,但是这是粗略的了解了下比较浅层的知识,大致了解了下这个框架的有那些组成以及那些组件的更新换代,因为在之前的版本springcloud
的组件有许多组件也停更进维
了,对于我这种刚学的小白来说,需要了解它的过去,也要了解其的现在,因为很多组件都是承上启后,思想理念都是一脉相承的,这里我也是抱着学习的态度多去了解了下。
springcloud
发展也有很长一段时间了,随着它的快速发展,springcloud的组成也发生了很大的变化,我也是基于网上的资料,以2020年为分界线,整理了下旧版和新版的springcloud
的组成
2.1 前期组成
springCloud旧版我们可以看到,旧版的springcloud的框架主要是由Eureka
、RIbbon
、Feign
、Hystrix
、SpringCloud Config
、SpringBoot
组成。主要的模块划分为服务注册与发现
、服务负载与调用
、服务熔断与降级
、服务网关
、服务分布式配置
、服务开发
,可以看到还是涵盖的比较全的。
2.2 最新组成
2020年新的组成 经过springcloud的快速发展,springcloud的组件也是百花齐放,各个模块都有许多可替换的组件,可以根据实际的业务需求来做技术选型。
三、注册中心�
springcloud是一个非常优秀的微服务框架,要管理众多的服务,就需要对这些服务进行治理,也就是我们说的服务治理
,服务治理
的作用就是在传统的rpc远程调用框架中,管理每个服务与每个服务之间的依赖关系,可以实现服务调用、负载均衡、服务容错、以及服务的注册与发现。
如果微服务之间存在调用依赖,就需要得到目标服务的服务地址,也就是微服务治理的服务发现
。要完成服务发现,就需要将服务信息存储到某个载体,载体本身即是微服务治理的服务注册中心
,而存储到载体的动作即是服务注册
。
springcloud支持的注册中心有Eureka
、Zookeeper
、Consul
、Nacos
组件名称 | 所属公司 | 组件简介 |
---|---|---|
Eureka | Netflix | springcloud最早的注册中心,目前已经进入停更进维 了 |
Zookeeper | Apache | zookeeper是一个分布式协调工具,可以实现注册中心功能 |
Consul | Hashicorp | Consul 简化了分布式环境中的服务的注册和发现流程,通过 HTTP 或者 DNS 接口发现。支持外部 SaaS 提供者等。 |
Nacos | Alibaba | Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。 |
四、负载均衡
负载均衡构建在原有网络结构之上,它提供了一种透明且廉价有效的方法扩展服务器和网络设备的带宽、加强网络数据处理能力、增加吞吐量、提高网络的可用性和灵活性。
目前springcloud支持两个负载均衡组件:Ribbon
、LoadBalance
组件名称 | 所属公司 | 组件简介 |
---|---|---|
Ribbon | Netflix | Ribbon是一个基于HTTP和TCP的客户端负载均衡工具 |
LoadBalancer | - | - |
五、服务调用
微服务将传统的单体应用拆分成了多个微服务,也考虑了服务之间如何相互调用,旧版的springcloud使用的Feign
来支持rpc调用,现在Feign已经停更进维了,由OpenFeign
来提供服务调用
组件名称 | 所属公司 | 组件简介 |
---|---|---|
Feign | - | - |
OpenFeign | SpringCloud | 是一个声明式的webService客户端,定义接口添加注解即可使用 |
六、服务保护
对于目前互联网常见的高并发的场景,虽然我们可以提供集群的方式来对服务请求进行容错,不过也难免会遇到不可预见的故障,比如宕机等情况,作为一个完善的微服务框架来说,springcloud考虑了这些情况,可选用Hystrix
、seilience4j
、sentinel
来对服务进行保护,提供服务降级
、服务熔断
、服务限流
的功能
组件名称 | 所属公司 | 组件简介 |
---|---|---|
Hystrix | Netflix | 分布式系统的延迟和容错方案,已经停更进维
|
Resilience4j | - |
Resilience4j 是一款轻量级,易于使用的容错库,其灵感来自于Netflix Hystrix ,但是专为Java8和函数式编程而设计,是官方推荐的Hystrix 的替代方案。 |
Sentinel | Alibaba | Alibaba出品的面向分布式服务架构的流量控制组件 |
七、服务网关
在微服务众多的服务的治理过程中,服务网关的作用在微服务框架中可以提供统一入口
、鉴权校验
、动态路由
、降低耦合度
的功能
组件名称 | 所属公司 | 组件简介 |
---|---|---|
zuul | Netflix | 停更进维 |
zuul2 | Netflix | zuul核心开发人员离职了3人,神仙打架,出路不明 |
gateway | springcloud | springcloud自研的一套非阻塞的网络异步网关 |
八、服务配置
Spring Cloud官方自身提供了Spring Cloud Config分布式配置中心,由它来提供集中化的外部配置支持,它分为客户端和服务端两个部分。其中服务端称作配置中心,是一个独立的微服务应用,用来连接仓库(如Git、Svn)并未客户端提供获取配置的接口;而客户端是各微服务应用,通过指定配置中心地址从远端获取配置内容,启动时加载配置信息到应用上下文中。因Spring Cloud Config实现的配置中心默认采用了Git来存储配置信息,所以版本控制管理也是基于Git仓库本身的特性来支持的 。目前springcloud可使用springcloud config
和Nacos
组件名称 | 所属公司 | 组件简介 |
---|---|---|
Config | springcloud | Config为分布式系统中的外部化配置提供服务器端和客户端支持。 |
Nacos | Alibaba | 易于使用的动态服务发现,配置和服务管理平台,用于构建云本机应用程序。 |
九、服务总线
Spring Cloud Bus 将分布式的节点用轻量的消息代理连接起来。它可以用于广播配置文件的更改或者服务之间的通讯,也可以用于监控。本文要讲述的是用Spring Cloud Bus实现通知微服务架构的配置文件的更改。
组件名称 | 所属公司 | 组件简介 |
---|---|---|
Bus | springcloud | - |
Nacos | Alibaba | - |
十、springcloud 和springcloud alibaba
Spring Cloud 是基于 Spring Boot 设计的一套微服务规范,并增强了应用上下文。Spring Cloud Alibaba 采用阿里中间件作为基础,实现了 Spring Cloud 的微服务规范。
2018-12-12 Netflix 宣布停止开发Spring Cloud的相关服务:Ribbon、Feign、Eureka、Hystrix,继续使用风险自负
这篇文章是基于我目前对springcloud的认识所写的,文章中肯定还有很多不好的地方以及错误的地方,也请各位如果看到能给予指正。