欢迎光临
我们一直在努力

Spring Cloud学习笔记

目录

微服务架构核心组件笔记整理

一、微服务生态简介

主要解决方案

二、消费者与提供者模式

提供者

消费者

开发环境与依赖

三、Eureka 服务注册与发现

依赖与配置

自我保护机制

服务信息获取

四、Eureka 集群与 CAP 理论

服务端发布

CAP理论核心

五、Ribbon 负载均衡

基本使用

控制器层

负载均衡策略与自定义算法

六、Feign 声明式服务调用

基本使用

七、服务熔断 Hystrix

基本使用

服务降级

Hystrix Dashboard 监控

八、Zuul 路由网关

基本使用

九、Spring Cloud Config 配置中心

基本使用


微服务架构核心组件笔记整理

一、微服务生态简介

定义

微服务是一种生态系统,而非单一技术。

目的

主要解决微服务架构中的以下问题:

  • 服务数量庞大,客户端如何访问?
  • 众多服务之间如何通信?
  • 如何进行服务治理?
  • 服务宕机时如何应对?
  • 主要解决方案

  • Spring Cloud NetFlix(全家桶一站式)
    • API网关:Zuul
    • 远程调用:Feign(基于HttpClient,同步、阻塞)
    • 服务注册发现:Eureka
    • 熔断机制:Hystrix
  • Apache Dubbo + Zookeeper(半自动集成)
    • API:需借助第三方或自定义
    • 服务注册发现:Dubbo + Zookeeper
    • 熔断:可集成Hystrix
  • Spring Cloud Alibaba(全家桶一站式)
  • 二、消费者与提供者模式

    • Restful服务:实现服务间通信
    • 提供者:实现数据库交互,编写Controller层业务逻辑
    • 消费者:无需数据库交互,直接调用提供者方法

    提供者

    消费者

    开发环境与依赖

    <!– 管理依赖,子模块可继承 –>
    <dependencyManagement>
    <dependencies>
    </dependencies>
    </dependencyManagement>

    <!– 服务拆分思想:跨模块获取实体类 –>
    <dependency>
    <groupId>包名</groupId>
    <artifactId>模块名或pom文件名</artifactId>
    <version></version>
    </dependency>

    Spring Cloud开发规则:

    • 所有实体类需实现序列化
    • 数据库需有区分字段(如DATABASE())

    三、Eureka 服务注册与发现

    简介

    Eureka是Netflix设计的服务注册中心,遵循AP原则。

    作用

    • 支持服务注册与发现,便于微服务定位与故障转移
    • 只需服务标识符即可访问目标服务

    原理

    采用CS架构,EurekaServer作为注册中心。

    依赖与配置

    • 依赖:spring-cloud-starter-netflix-eureka-server

    eureka:
    instance:
    hostname: localhost
    instance-id: 描述信息
    prefer-ip-address: true
    client:
    register-with-eureka: false
    fetch-register: false
    service-url:
    defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
    info:
    app.name: app名称
    company.name: 公司名称

    • 注解:
      • 服务端:@EnableEurekaServer
      • 客户端:@EnableEurekaClient 或 @EnableDiscoveryClient

    自我保护机制

    • 异常断连或失效时(如心跳超时90秒),Eureka启动自我保护,保持服务信息。
    服务信息获取

    四、Eureka 集群与 CAP 理论

    • 支持多节点互联,提升可靠性

    服务端发布

    CAP理论核心

  • 分布式系统无法同时很好地满足一致性(C)、可用性(A)、分区容错性(P)
  • NoSQL数据库按CAP分为三类:
    • CA:如单点集群,扩展性差
    • CP:如Zookeeper,保证一致性与分区容错
    • AP:如Eureka,保证可用性与分区容错
  • 分区容错性必须保证,A与C需权衡
  • Zookeeper保证CP,Eureka保证AP。

    五、Ribbon 负载均衡

    简介

    Ribbon是Netflix开源的客户端负载均衡工具,集成于消费方进程,自动根据配置的规则分配请求。

    负载均衡分类

    • 集中式:如Nginx,独立设施负责转发
    • 进程式:如Ribbon,集成于消费方,由客户端决定调用目标

    基本使用

    • 依赖:spring-cloud-starter-netflix-ribbon

    @Configuration public class ConfigBean{ @Bean @LoadBalanced public RestTemplate getRestTemplate(){ return new RestTemplate(); } }

    • 消费者模块配置,使其可随机访问服务

    控制器层
    • 通过服务名访问,实现负载均衡

    负载均衡策略与自定义算法

    // IRule负责配置负载均衡策略
    @Bean
    public IRule myRule(){
    // 默认轮询,可改为随机
    return new RandomRule();
    }

    // 自定义算法
    @RibbonClient(name="服务名", configuration=自定义配置类名.class)

    @Configuration
    public class MyRule{
    @Bean
    public IRule myRule(){
    return new 自定义算法类名();
    }
    }

    六、Feign 声明式服务调用

    定义

    Feign是声明式Web Service客户端,简化了服务间的Http调用,集成了Ribbon,语法类似SpringMVC。

    作用

    让Java Http通信变得更简单。

    基本使用

    • 依赖:spring-cloud-starter-openfeign

    @FeignClient(value="服务名")
    public interface 接口名{
    @GetMapping("/dept/{id}")
    public 类 queryId(@PathVariable("id") Long id);
    }

    // 主启动类加注解
    @EnableFeignClients(basePackages="包路径")

    七、服务熔断 Hystrix

    定义

    Hystrix是用于应对“雪崩效应”的链路保护机制。

    作用

    • 当某微服务不可用或响应超时时,自动降级或熔断,快速返回错误,防止资源耗尽

    术语

    • 扇出:服务A调用B、C,B、C再调用其他服务
    • 雪崩:链路上服务不可用,导致资源耗尽,系统崩溃

    基本使用

    • 依赖:spring-cloud-starter-netflix-hystrix

    // 方法熔断
    @HystrixCommand(fallbackMethod="方法名")
    // 启用熔断
    @EnableHystrix 或 @EnableCircuitBreaker

    服务降级

    定义

    高并发下,选择性关闭部分服务,避免全部崩溃。

    public class 类名 implements FallbackFactory{
    // 实现降级逻辑
    }

    // Feign注解添加fallbackFactory
    @FeignClient(value="服务名", fallbackFactory=类名.class)

    Hystrix Dashboard 监控

    • 依赖:spring-cloud-starter-netflix-hystrix-dashboard
    • 主启动类注解:@EnableHystrixDashboard
    • 监控页面路径:/hystrix

    // 这是一个固定的

    八、Zuul 路由网关

    简介

    • 路由:外部请求转发到具体服务实例,实现统一入口
    • 过滤器:实现请求校验、服务聚合等

    作用

    实现路由与过滤。

    基本使用

    • 依赖:spring-cloud-starter-netflix-zuul
    • 主启动类注解:@EnableZuulProxy

    zuul:
    routes:
    mydept.serviceId: 服务名
    mydept.path: /别名/**
    ignored-services: 服务名 # 忽略指定服务
    prefix: /前缀名 # 添加访问前缀

    九、Spring Cloud Config 配置中心

    简介

    分为服务端与客户端,为微服务集中化管理外部配置。

    作用

    为各微服务应用提供中心化的外部配置。

    基本使用

    • 依赖:spring-cloud-config-server
    • 主启动类注解:@EnableConfigServer

    // 配置连接仓库

    • 配置成功后,可通过 url/文件名 访问仓库中的文件
    • bootstrap.yml 为系统级配置

    // 客户端获取配置

    • @Value 注入的均为GIT上的配置,实现远程管理

    补充

    Gateway 逐步取代Zuul,推荐学习Nacos与Spring Cloud Alibaba

    赞(0)
    未经允许不得转载:171主机测评 » Spring Cloud学习笔记
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址