SpringCloud学习笔记

本文详细介绍了微服务架构的关键概念,包括微服务架构风格、SpringBoot与SpringCloud的关系。重点讲解了SpringCloud中的Nacos服务注册、Feign服务调用、Hystrix熔断机制的使用步骤,以及SpringCloud Gateway作为网关的角色。同时,提到了数据库同步技术Canal和配置中心Nacos的配置。内容涵盖了微服务中的服务注册、服务调用、服务熔断、负载均衡等多个核心环节。

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

1.微服务的概念

a.微服务是一种架构风格
b.把一个项目拆封成独立的多个服务,多个服务独立运行,每个服务占用进程

2.springCloud和SpringBoot的关系

Spring Boot是Spring的一套快速配置脚手架,可以基于SpringBoot快速开发单个微服务建构,SpringCloud是一个基于SpringBoot实现的开发工具,SpringBoot专注于快速,方便集成的单个微服务个体,Spring Cloud关注全局的服务治理框架,SpringBoot使用了默认大于配置的理念,很多集成方案已经帮你选择好了,能不配置就不配置,SpringCloud恒大一部分是基于SpringBoot实现的,必须基于Spring Boot开发,可以单独使用SpringBoot开发项目,但是SpringCloud离不开SpringBoot

3.SpringCloud相关基础服务组件

在这里插入图片描述

4.Nacos(服务注册)

a.Nacos的作用(注册中心)

在这里插入图片描述

b.Nacos的安装

1.官网上下载压缩包
2.打开压缩包,运行nacos
在这里插入图片描述
3.打开8848端口,访问nacos页面,初始账号和密码都是nacos

c.nacos的使用

1.添加依赖

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

2.在配置文件中配置服务名和nacos的地址

spring.cloud.nacos.discovery.server-add:localhost:8848
spring.name="服务名" //服务名不要加下划线

3.在对应模块启动类上添加@EnableDiscoveryClient
4.在nacos页面上查看服务类

5.Feign(服务调用)

1.引入依赖

        <!--服务调用-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>

2.在调用模块启动类上加入@EnableFeignClient
在这里插入图片描述

3.创建对应的Client

@FeignClient("service-vod")
@Component
public interface VodClient {

    @DeleteMapping(value = "/eduvod/video/{id}")
    public R removeAlyVideo(@PathVariable("id") String id);
}

4.调用接口,测试

6.springcloud调用接口的流程

在这里插入图片描述
(1)接口化请求调用当调用被@FeignClient注解修饰的接口时,在框架内部,将请求转换成Feign的请求
实例feign.Request,交由Feign框架处理。
(2)Feign
:转化请求Feign是一个http请求调用的轻量级框架,可以以Java接口注解的方式调用Http请
求,封装了Http调用流程。
(3)Hystrix:熔断处理机制 Feign的调用关系,会被Hystrix代理拦截,对每一个Feign调用请
求,Hystrix都会将其包装成HystrixCommand,参与Hystrix的流控和熔断规则。如果请求判断需要熔断,
则Hystrix直接熔断,抛出异常或者使用FallbackFactory返回熔断Fallback结果;如果通过,则将调用请求传递
给Ribbon组件。
(4)Ribbon:服务地址选择 当请求传递到Ribbon之后,Ribbon会根据自身维护的服务列表,根据服务的服
务质量,如平均响应时间,Load等,结合特定的规则,从列表中挑选合适的服务实例,选择好机器之
后,然后将机器实例的信息请求传递给Http
Client客户端,HttpClient客户端来执行真正的Http接口调用;
(5)HttpClient
:Http客户端,真正执行Http调用根据上层Ribbon传递过来的请求,已经指定了服务地
址,则HttpClient开始执行真正的Http请求

7.Hystrix

a.概念

Hystrix 是一个供分布式系统使用,提供延迟和容错功能,保证复杂的分布系统在面临不可避免的失败
时,仍能有其弹性。

b.使用步骤

1.导入maven依赖

    <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
        </dependency>
        <!--hystrix依赖,主要是用 @HystrixCommand -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
        </dependency>

2.开启熔断器

#开启熔断器
feign:
  hystrix:
    enabled: true
#配置访问时间
hystrix:
  metrics:
    polling-interval-ms: 6000

3.实现Client类

@Component
public class VodFileDegradeFeignClient implements VodClient {
    @Override
    public R removeAlyVideo(String id) {
        return R.error().message("调用删除单个视频接口出错");
    }

    @Override
    public R batchRemoveAlyVideo(List<String> ids) {
        return R.error().message("调用批量删除视频接口出错");
    }
}

4.在Client上进行配置

@FeignClient(name = "service-vod", fallback = VodFileDegradeFeignClient.class)
@Component
public interface VodClient {

8.canul(数据库同步技术)

1.现阶段只支持mysql
2.具体配置百度

9.gateway(网关)

9.1简述

基于Spring5.0,springboot2.0和Project Reactor等技术开发的网关,Spring Cloud Gateway旨在为微服务架构提供简单,有效和统一的API路由管理方式,目标是替代NetFilx Zuul,其不仅提供统一的路由方式,并且还基于Filer链的方式提供网关的基本的功能

9.2工作原理

在这里插入图片描述

9.3使用方式

1.导入jar包

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-gateway</artifactId>
        </dependency>

2.书写配置文件

#服务端口
server:
  port: 8222

#服务名
spring:
  application:
    name: service-gateway
  cloud:
    nacos:
      discovery:
        #配置nacos地址
        server-addr: ****
    gateway:
      discovery:
        locator:
          #使用服务发现路由
          enabled: true
      routes:
        - id: service-edu #服务名字
          uri: lb://service-edu #路由的url
          predicates:
            - Path=/eduservice/** #路径匹配
        - id: service-ucenter
          uri: lb://service-ucenter
          predicates:
            - Path=/ucenter/** #路径匹配

9.4负载均衡

gateway中是根据路径将请求平均到服务器集群上
常用的负载均衡方法:轮询,权重,最小请求时间

10springcloud配置中心

10.1作用:

对集群上的配置文件(application.properties,application.yml)进行统一化管理

10.2Nacos进行配置

https://achang.blog.csdn.net/article/details/114670001

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值