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

简介: SpringCloud源码阅读0-SpringCloud必备知识

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

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

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

  • 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,就是明确只能使用Spring Cloud Netflix EurekaDiscoveryClient

这也是@EnableDiscoveryClient@EnableEurekaClient的区别。

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


Spring Cloud Netflix


Netflix公司开源一套分布式服务框架,Netflix OSS。项目地址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 集合下还有很多项目,项目地址在:github.com/spring-clou…


总结:


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


相关文章
|
7月前
|
负载均衡 Dubbo Java
Spring Cloud Alibaba与Spring Cloud区别和联系?
Spring Cloud Alibaba与Spring Cloud区别和联系?
|
8月前
|
前端开发 Java Nacos
🛡️Spring Boot 3 整合 Spring Cloud Gateway 工程实践
本文介绍了如何使用Spring Cloud Alibaba 2023.0.0.0技术栈构建微服务网关,以应对微服务架构中流量治理与安全管控的复杂性。通过一个包含鉴权服务、文件服务和主服务的项目,详细讲解了网关的整合与功能开发。首先,通过统一路由配置,将所有请求集中到网关进行管理;其次,实现了限流防刷功能,防止恶意刷接口;最后,添加了登录鉴权机制,确保用户身份验证。整个过程结合Nacos注册中心,确保服务注册与配置管理的高效性。通过这些实践,帮助开发者更好地理解和应用微服务网关。
1252 0
🛡️Spring Boot 3 整合 Spring Cloud Gateway 工程实践
|
9月前
|
人工智能 安全 Java
AI 时代:从 Spring Cloud Alibaba 到 Spring AI Alibaba
本次分享由阿里云智能集团云原生微服务技术负责人李艳林主讲,主题为“AI时代:从Spring Cloud Alibaba到Spring AI Alibaba”。内容涵盖应用架构演进、AI agent框架发展趋势及Spring AI Alibaba的重磅发布。分享介绍了AI原生架构与传统架构的融合,强调了API优先、事件驱动和AI运维的重要性。同时,详细解析了Spring AI Alibaba的三层抽象设计,包括模型支持、工作流智能体编排及生产可用性构建能力,确保安全合规、高效部署与可观测性。最后,结合实际案例展示了如何利用私域数据优化AI应用,提升业务价值。
789 4
|
10月前
|
消息中间件 监控 Java
如何将Spring Boot + RabbitMQ应用程序部署到Pivotal Cloud Foundry (PCF)
如何将Spring Boot + RabbitMQ应用程序部署到Pivotal Cloud Foundry (PCF)
148 6
|
10月前
|
负载均衡 Java 开发者
深入探索Spring Cloud与Spring Boot:构建微服务架构的实践经验
深入探索Spring Cloud与Spring Boot:构建微服务架构的实践经验
532 5
|
10月前
|
Java 关系型数据库 MySQL
如何将Spring Boot + MySQL应用程序部署到Pivotal Cloud Foundry (PCF)
如何将Spring Boot + MySQL应用程序部署到Pivotal Cloud Foundry (PCF)
165 5
|
10月前
|
缓存 监控 Java
如何将Spring Boot应用程序部署到Pivotal Cloud Foundry (PCF)
如何将Spring Boot应用程序部署到Pivotal Cloud Foundry (PCF)
180 5
|
12月前
|
负载均衡 Java API
【Spring Cloud生态】Spring Cloud Gateway基本配置
【Spring Cloud生态】Spring Cloud Gateway基本配置
844 0
|
Java Spring
【Azure Spring Cloud】Spring Cloud Azure 4.0 调用Key Vault遇见认证错误 AADSTS90002: Tenant not found.
【Azure Spring Cloud】Spring Cloud Azure 4.0 调用Key Vault遇见认证错误 AADSTS90002: Tenant not found.
262 1
|
负载均衡 Java Spring
Spring cloud gateway 如何在路由时进行负载均衡
Spring cloud gateway 如何在路由时进行负载均衡
1766 15