SpringCloud源码阅读0-SpringCloud必备知识

本文深入探讨SpringCloud作为微服务框架的体系结构,包括其核心项目如SpringCloudCommons和SpringCloudNetflix的功能与作用。SpringCloudCommons提供通用抽象层,支持服务注册、负载均衡等,而SpringCloudNetflix则封装了Netflix的分布式服务工具,适应SpringCloud生态。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在开始源码阅读前,我觉得有必要先讲讲springcloud的体系。

SpringCloud 是一系列微服务工具项目的集合。这个集合包含如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等工具。

这些项目地址在:https://github.com/spring-cloud
包含:

  • Spring Cloud Commons
  • SpringCloud Netflix
  • SpringCloud Stream
  • SpringCloud Config

本文着重讲讲两个项目:

Spring Cloud commons

此项目非常重要,因为他包含两个重要的子模块:
1.Spring Cloud Context:为项目提供:引导上下文,加密,刷新范围和环境端点等功能。SpringCloud在构建上下文 (即ApplicationContext实例)时,采用了Spring父子容器的设计,会在 SpringBoot构建的容器(后面称之为应用容器)之上创建一父容器 Bootstrap Application Context 。

2.Spring Cloud Commons
看其名字也可以看出他是一个通用功能的项目,会被其他项目引入。

主要对微服务中的服务注册与发现、负载均衡、熔断器等功能提供一个抽象层代码,这个抽象层与具体的实现无关。这样这些功能具体的实现上可以采用不同的技术去实现,并可以做到在使用时灵活的更换。

列如:DiscoveryClient的使用,我们可以选择使用Spring Cloud Netflix Eureka,Spring Cloud Consul发现和Spring Cloud Zookeeper发现

  • 当我们使用@EnableDiscoveryClient来引入DiscoveryClient时,具体引入哪种DiscoveryClient,会根据你具体引入哪个项目有关。如果我们用了Spring Cloud Netflix Eureka。那就会引入Spring Cloud Netflix EurekaDiscoveryClient

  • 当我们用用@EnableEurekaClient来引入DiscoveryClient,就是明确只能使用Eurka的DiscoveryClient

这也是@EnableDiscoveryClient@EnableEurekaClient的区别。

由此我们能看出Spring Cloud Commons作为一个公共项目的目的。

Spring Cloud Netflix

Netflix公司开源一套分布式服务框架,Netflix OSS。项目地址https://github.com/Netflix

Spring Cloud Netflix 项目对其进行了二次封装,使其更加适应springcloud体系。
Spring Cloud Netflix下包含了与Netflix OSS对应 子项目

  • SpringCloud-Eureka – Netflix Eureka
  • SpringCloud-Ribbon – Netflix Ribbon
  • SpringCloud-Hystrix – Netflix Hystrix

当我们一想到springcloud ,就是Eureka,Ribbon。我认为这样是不对的,Eureka,Ribbon 只是作为Springcloud体系下Spring Cloud Netflix项目的子项目存在,他们只是微服务组件中的一种实现。

因为我们常用Spring Cloud Netflix 项目下的这些实现,客观认为Eureka,Ribbon 就是springcloud。

因此在阅读源码前,理清这些关系springcloud,Spring Cloud Netflix ,Netflix OSS是非常有必要的。

最重要的: 当我们阅读SpringCloud-Eureka,SpringCloud-Ribbon等源码时,参考Netflix OSS的wiki文档,对于我们理解他们很有帮助


springcloud文档地址:

Netflix Eureka 英文地址

Spring Cloud xxx

springcloud 集合下还有很多项目,项目地址在:https://github.com/spring-cloud

总结:

理解其中的一些关系后,后面开始对其中一些关键组件进行源码阅读。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值