前后端分离项目知识汇总(整合SpringCloud)

简介: 前后端分离项目知识汇总(整合SpringCloud)

整合SpringCloud


简介

Spring全家桶--SpringCloud(初级)_小蜗牛耶的博客-CSDN博客_springcloud开源项目

Spring全家桶--SpringCloud(中级)_小蜗牛耶的博客-CSDN博客_springcloud

Spring全家桶--SpringCloud(高级)_小蜗牛耶的博客-CSDN博客


Nacos


(1)Nacos是什么

Nacos 是阿里巴巴推出来的一个开源项目,主要用于动态服务发现、配置管理和服务管理的平台。

(2)常见的注册中心:

  1. Eureka(原生,2.0遇到性能瓶颈,现在已经停止维护)
  2. Zookeeper(支持,专业的独立产品。如:dubbo)
  3. Consul(原生,GO语言开发)
  4. Nacos

相对于 Spring Cloud Eureka 来说,Nacos 更强大。Nacos = Spring Cloud Eureka + Spring Cloud Config

(3)Nacos功能

Nacos主要提供以下四大功能:

  1. 服务发现和服务健康监测
  2. 动态配置服务
  3. 动态DNS服务
  4. 服务及其元数据管理

(4)Nacos结构图

image.png

安装

解压安装包,进入cmd运行nacos即可

image.png

image.png


服务注册


我们把后面要用的service-edu、service-oss、service-vod都加入到nacos中

怎么加呢?

1、配置依赖

<!--服务注册-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

2、添加服务配置信息

image.png

3、添加Nacos客户端注解

在客户端微服务启动类中添加注解

image.png

4、启动客户端微服务

启动注册中心

启动已注册的微服务,可以在Nacos服务列表中看到被注册的微服务

image.png


服务调用-Feign


feign 英 [feɪn] 美 [feɪn] v. 假装,装作,佯装(有某种感觉或生病、疲倦等)

Feign是一个声明式WebService客户端。使用Feign能让编写Web Service客户端更加简单。它的使用方法是定义一个服务接口然后在上面添加注解。


后端编码


删除课时的同时删除云端视频

哎,这不就出现了微服务之间互相调用的情况了吗

1、pom文件

引用feign实现远程调用

image.png

2、调用端的启动类添加注解

feign 是通过接口+注解实现微服务调用

消费者添加@EnableFeignClients开启feign

image.png

3、创建包和接口

业务逻辑接口+@FeignClient配置调用provider服务

创建client包

@FeignClient注解用于指定从哪个服务中调用功能 ,名称与被调用的服务名保持一致。

@GetMapping注解用于对被调用的微服务进行地址映射。

@PathVariable注解一定要指定参数名称,否则出错

@Component注解防止,在其他位置注入CodClient时idea报错

image.png

前提是我们vod微服务中批量删除是可以用的

image.png

4、调用微服务

课程微服务调用视频微服务

目的是删除课程同时删除视频

1、注入vod微服务中删除视频接口vodClient

image.png

2、具体流程

image.png


前端编码


还是和前面一样,我们每次点击添加小节弹框要清空

//添加小节弹框的方法
openVideo(chapterId) {
//弹框
this.dialogVideoFormVisible = true;
//清空
this.video = {};
this.fileList = [];
//设置章节id
this.video.chapterId = chapterId;
},

这次我们多添加几个小节来测试能不能同时删除

发布课程后删除课程,看视频点播还有没有视频


服务熔断-Hystrix


Spring Cloud 在接口调用上,大致会经过如下几个组件配合:

接口调用的流程很重要,我们一定要理解

自己用过这些组件的话还是很好理解的

Feign ----->Hystrix —>Ribbon —>Http Client(apache http components 或者 Okhttp)` 具体交互流程上,如下图所示:

image.png

当你调用被@FeignClient注解修饰的接口,它内部实际上是将这个调用转化成了一个feign.request。

feign框架实际上是一个http请求调用的,你这个请求发到feign了。它内部又做了http请求的封装,实际上又转化为了http请求继续发送。

发送到豪猪哥,进行流控和熔断。

之后呢豪猪哥在通过ribbon进行负载均衡,挑选合适的服务端进行发送,选择好机器之后,然后将机器实例的信息请求传递给Http Client客户端,HttpClient客户端来执行真正的Http接口调用;


Hystrix(豪猪哥)


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

比如一个系统中有很多服务,如果这个系统没有隔离机制,系统随时可能挂掉。因为当某些服务不稳定的时候,可能导致级联错误,从而带来很大的风险。

下图所示,当服务b出现故障的时候,会触发熔断器,阻止了级联失败

image.png


feign结合Hystrix使用


1、添加依赖

<dependency>
    <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>
<!--服务注册-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!--服务调用-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

2、配置文件中添加hystrix配置

image.png

3、在service-edu的client包里面创建熔断器的实现类

image.png

4、测试熔断器效果

我们模拟视频点播微服务宕机了,我们再去调用它,看看会不会触发hystrix

image.png

debug启动edu服务,关闭vod服务,会触发熔断器

image.png



相关文章
|
4月前
|
监控 Java API
Spring Boot 3.2 结合 Spring Cloud 微服务架构实操指南 现代分布式应用系统构建实战教程
Spring Boot 3.2 + Spring Cloud 2023.0 微服务架构实践摘要 本文基于Spring Boot 3.2.5和Spring Cloud 2023.0.1最新稳定版本,演示现代微服务架构的构建过程。主要内容包括: 技术栈选择:采用Spring Cloud Netflix Eureka 4.1.0作为服务注册中心,Resilience4j 2.1.0替代Hystrix实现熔断机制,配合OpenFeign和Gateway等组件。 核心实操步骤: 搭建Eureka注册中心服务 构建商品
803 3
|
2月前
|
负载均衡 Java API
《深入理解Spring》Spring Cloud 构建分布式系统的微服务全家桶
Spring Cloud为微服务架构提供一站式解决方案,涵盖服务注册、配置管理、负载均衡、熔断限流等核心功能,助力开发者构建高可用、易扩展的分布式系统,并持续向云原生演进。
|
3月前
|
应用服务中间件 Nacos nginx
黑马头条_SpringCloud项目阶段一:环境搭建(Mac版本)
本文为 Mac 用户介绍微服务项目环境搭建,含阿里云服务器用 Docker 装 Nacos 1.2.0,本地通过 brew 装 OpenJDK 8、Maven 3.6.1、Redis,Docker 部署 MySQL 5.7 并配字符集,及 Nginx 安装与反向代理设置,附命令与配置步骤。
263 4
黑马头条_SpringCloud项目阶段一:环境搭建(Mac版本)
|
9月前
|
Java Maven Android开发
微服务——SpringBoot使用归纳——Spring Boot开发环境搭建和项目启动
本文介绍了Spring Boot开发环境的搭建和项目启动流程。主要内容包括:jdk的配置(IDEA、STS/eclipse设置方法)、Spring Boot工程的构建方式(IDEA快速构建、官方构建工具start.spring.io使用)、maven配置(本地maven路径与阿里云镜像设置)以及编码配置(IDEA和eclipse中的编码设置)。通过这些步骤,帮助开发者顺利完成Spring Boot项目的初始化和运行准备。
798 0
微服务——SpringBoot使用归纳——Spring Boot开发环境搭建和项目启动
|
8月前
|
前端开发 安全 Java
Spring Boot 便利店销售系统项目分包设计解析
本文深入解析了基于Spring Boot的便利店销售系统分包设计,通过清晰的分层架构(表现层、业务逻辑层、数据访问层等)和模块化设计,提升了代码的可维护性、复用性和扩展性。具体分包结构包括`controller`、`service`、`repository`、`entity`、`dto`、`config`和`util`等模块,职责分明,便于团队协作与功能迭代。该设计为复杂企业级应用开发提供了实践参考。
321 0
|
9月前
|
Java 测试技术 微服务
微服务——SpringBoot使用归纳——Spring Boot中的项目属性配置——少量配置信息的情形
本课主要讲解Spring Boot项目中的属性配置方法。在实际开发中,测试与生产环境的配置往往不同,因此不应将配置信息硬编码在代码中,而应使用配置文件管理,如`application.yml`。例如,在微服务架构下,可通过配置文件设置调用其他服务的地址(如订单服务端口8002),并利用`@Value`注解在代码中读取这些配置值。这种方式使项目更灵活,便于后续修改和维护。
176 0
|
9月前
|
Java 微服务 Spring
微服务——SpringBoot使用归纳——Spring Boot使用slf4j进行日志记录——使用Logger在项目中打印日志
本文介绍了如何在项目中使用Logger打印日志。通过SLF4J和Logback,可设置不同日志级别(如DEBUG、INFO、WARN、ERROR)并支持占位符输出动态信息。示例代码展示了日志在控制器中的应用,说明了日志配置对问题排查的重要性。附课程源码下载链接供实践参考。
1063 0
|
5月前
|
Java 关系型数据库 数据库连接
Spring Boot项目集成MyBatis Plus操作PostgreSQL全解析
集成 Spring Boot、PostgreSQL 和 MyBatis Plus 的步骤与 MyBatis 类似,只不过在 MyBatis Plus 中提供了更多的便利功能,如自动生成 SQL、分页查询、Wrapper 查询等。
485 3
|
5月前
|
Java 测试技术 Spring
简单学Spring Boot | 博客项目的测试
本内容介绍了基于Spring Boot的博客项目测试实践,重点在于通过测试驱动开发(TDD)优化服务层代码,提升代码质量和功能可靠性。案例详细展示了如何为PostService类编写测试用例、运行测试并根据反馈优化功能代码,包括两次优化过程。通过TDD流程,确保每项功能经过严格验证,增强代码可维护性与系统稳定性。
256 0

热门文章

最新文章