SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈

news2025/1/11 9:04:36

http客户端Feign

(一)基于Feign远程调用

1、RestTemplate方式调用存在的问题

在这里插入图片描述

2、Feign的介绍

在这里插入图片描述

3、定义和使用Feign客户端

在这里插入图片描述
在这里插入图片描述

这个接口里面将来的封装的就是所有对userservice发起的远程调用

1、orderserivce的pom

<!--feign客户端依赖-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

2、开启自动装配功能,找到启动类OrderApplication添加注解
在这里插入图片描述
3、编写客户端,做接口说明
clients/UserClient接口
在这里插入图片描述

@FeignClient("userservice")
public interface UserClient {

    @GetMapping("/user/{id}")
    User findById(@PathVariable("id") Long id);
}

3、替代之前写的RestTemplate
找到之前orderservice中写的queryOrderById注释掉
在这里插入图片描述
4、OrderService中代码改造

@Autowired
private UserClient userClient;

public Order queryOrderById(Long orderId) {
    // 1.查询订单
    Order order = orderMapper.findById(orderId);
    // 2.用Feign远程调用
    User user = userClient.findById(order.getUserId());
    // 3.封装user到Order
    order.setUser(user);
    // 4.返回
    return order;
}

在这里插入图片描述
测试order/101多次,在IDEA中发现无论是8081还是8082都被调用了多次,说明我们不仅实现了远程调用,还实现了负载均衡
说明Feign内部已经集成了负载均衡的功能

4、总结

在这里插入图片描述

(二)自定义配置

(三)性能优化

(四)最佳实践分析

(五)实现Feign最佳实践

统一网关Gateway

(一)网关作用介绍

1、为什么需要网关

在这里插入图片描述

2、网关的技术实现

在这里插入图片描述

3、总结

在这里插入图片描述

(二)快速入门

1、搭建网关服务

在这里插入图片描述
创建一个全新的module,做一个独立的服务

因为网关本身也是一个微服务,因此也需要把自己注册到nacos,或者从nacos拉取服务,所以要有服务注册发现依赖
在这里插入图片描述

<dependencies>
    <!--nacos服务注册发现依赖-->
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    </dependency>
    <!--网关gateway依赖-->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-gateway</artifactId>
    </dependency>
</dependencies>

当然我们知道一个服务要想启动还需要main函数,所以我们现在给网关创建一个main函数
在这里插入图片描述

@SpringBootApplication
public class GatewayApplication {
    public static void main(String[] args) {
        SpringApplication.run(GatewayApplication.class, args);
    }
}

接下来我们在网关中实现请求的路由

在这里插入图片描述

请求路由是通过配置来实现的

server:
  port: 10010 # 网关端口
spring:
  application:
    name: gateway # 服务名称
  cloud:
    nacos:
      server-addr: localhost:8848 # nacos地址
    gateway:
      routes: # 网关路由配置
        - id: user-service # 路由id,自定义,只要唯一即可
          # uri: http://127.0.0.1:8081 # 路由的目标地址 http就是固定地址
          uri: lb://userservice # 路由的目标地址 lb就是负载均衡,后面跟服务名称
          predicates: # 路由断言,也就是判断请求是否符合路由规则的条件
            - Path=/user/** # 这个是按照路径匹配,只要以/user/开头就符合要求
        - id: order-service
          uri: lb://orderservice
          predicates:
            - Path=/order/**

然后启动GatewayApplication
在这里插入图片描述
注意到我们的网关没有做任何业务逻辑,但是却能查用户信息,其实这就是把请求从网关路由到了服务。同理访问localhost:10010/order/101

在这里插入图片描述

2、总结

在这里插入图片描述

(三)路由断言工厂

(四)路由的过滤器设置

(五)全局过滤器

(六)过滤器链执行顺序

(七)网关的cors跨域配置

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/436541.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Dsq: 用于针对JSON、CSV、Excel、Parquet等运行SQL查询的命令行工具

目录 About Install macOS Homebrew macOS、Linux和WSL上的二进制文件 Windows上的二进制文件&#xff08;非WSL&#xff09; 从源代码生成和安装 Usage Pretty print dsq的管道数据 多个文件和连接 无需查询即可将数据转换为JSON 嵌套在对象中的对象数组 嵌套对象…

ASRock Z690 Extreme WiFi 6E i7 13700KF电脑 Hackintosh 黑苹果efi引导文件

原文来源于黑果魏叔官网&#xff0c;转载需注明出处。&#xff08;下载请直接百度黑果魏叔&#xff09; 硬件型号驱动情况 主板ASRock Z690 Extreme WiFi 6E 处理器Intel Core i7 13700KF已驱动 内存KINGBANK 2x32GB DDR4-3600CL18已驱动 硬盘Predator SSD GM7000 1TB已驱动…

qt5.15.2配置android

qt安装安卓编译器就直接跳过&#xff0c;我们开始将如何进行配置。 如果专门开发的app&#xff0c;则应该使用android进行开发&#xff0c;qt是熟悉qt语言&#xff0c;或者app需要进行跨平台的话则使用qt for android比较好。 下载 首先安装jdk&#xff0c;最好安装 jdk11&am…

[Java] Socket (UDP , TCP)

目录 什么是Socket ? TCP api 与 UDP api 的特点 : UDP api 使用UDP Socket 实现一个单词翻译 : TCP api 使用TCP协议来实现一个回显服务 什么是Socket ? 应用层和传输层之间的桥梁 . 程序猿写网络代码 (应用层) , 要想发送这个数据 , 就需要去调用下层协议 , 应用层…

uniapp图片转base64及JS各文件类型相互转换

uniapp图片转base64及JS各文件类型相互转换 1、chooseImage request arrayBufferToBase642、chooseImage getFileSystemManager3、chooseImage FileReader4、扩展-JS各文件类型相互转换4.1 File 转成 ArrayBuffer4.2 File 转成 blob4.3 File 转成 base644.4 ArrayBuffer 转…

【数据结构】前序遍历,中序遍历,后序遍历(二叉树)

一&#xff1a;给图求前序&#xff0c;中序&#xff0c;后序 前序遍历&#xff08;先序遍历&#xff09; 核心思想&#xff1a;根左右 前序序列&#xff1a;ABDEFCGH 先访问根结点A&#xff0c;打印A&#xff0c;然后访问左子树&#xff0c;此时左子树B又作为根节点&#xf…

JAVAWeb05-xml、DOM4J

1. xml概述 1.1 官方文档 地址: https://www.w3school.com.cn/xml/index.asp 1.2 为什么需要 XML 需求 1 : 两个程序间进行数据通信&#xff1f;需求 2 : 给一台服务器&#xff0c;做一个配置文件&#xff0c;当服务器程序启动时&#xff0c;去读取它应当监听的端口号、还有…

【数字人】使用Metahuman创建数字人模型(上)

这两年数字人类的概念可谓是风头正盛&#xff0c;市面上也流行起各式各样的数字人技术&#xff0c;效果能力及实现成本各不相同。本系列介绍基于Unreal Engine的Metahuman工具低成本构建一个拥有完整的控制权、免费、可商用、高仿真的数字人。本篇为构建基础人物模型 MetaHuma…

PHP快速入门14-Composer包管理安装与使用,附常见的20个使用例子

文章目录 前言一、关于Composer二、如何安装Composer2.1 Windows安装Composer2.2 Linux安装Composer 三、Composer常见的20个使用例子3.1 查找并安装依赖包3.2 更新依赖包3.3 安装指定版本的依赖包3.4 卸载依赖包3.5 查看当前项目依赖包列表3.6 初始化composer.json文件3.7 安装…

FAT32文件系统学习

FAT32文件系统组成及介绍 FAT32文件系统结构图&#xff1a; 下图演示了FAT32文件系统的DBR&#xff1a; 1.DBR及其保留扇区&#xff1a;含义是DOS引导记录&#xff0c;也称为操作系统引导记录&#xff0c;在DBR之后往往有一些保留扇区 跳转指令&#xff1a;跳转指令本身占用2字…

python程序打包成可执行文件【进阶篇】

python程序打包成可执行文件【进阶篇】 提示:博主取舍了很多大佬的博文并亲测有效,分享笔记邀大家共同学习讨论 文章目录 python程序打包成可执行文件【进阶篇】[TOC](文章目录) 前言安装PyInstaller包打包深度学习模型生成spec文件修改spec文件运行spec文件进行打包执行exe可执…

为什么倒谱可以分析回声

一个有趣的现象&#xff1a;倒谱上的第一个峰&#xff0c;恰好对应回声相比原声的延时。回声 y y y 是原始声音 x x x 延迟 t 0 t_0 t0​ 秒后的、带有衰减 α α α 的副本 y α x ( t − t 0 ) y αx (t - t_0) yαx(t−t0​) 方便起见&#xff0c;这里取 α 1 α …

抖音强势入局服装生意,出手就是1个亿,服装实体店出路在哪?

最近&#xff0c;抖音盯上了服装生意。 据悉&#xff0c;抖音近期组建了一个自营服装团队&#xff0c;在APP推出了一家“飞云织上”的店铺&#xff0c;店铺主体公司是“上海歆湃信息科技有限公司”。 根据爱企查显示&#xff0c;这家公司由抖音集团&#xff08;香港&#xff09…

RabbitMQ-消息模型

什么是MQ MQ全称是Message Queue,即消息对列&#xff01;消息队列是典型的&#xff1a;生产者、消费者模型。生产者不断向消息队列中生产消息&#xff0c;消费者不断的从队列中获取消息。因为消息的生产和消费都是异步的&#xff0c;而且只关心消息的发送和接收&#xff0c;没…

IPV4与IPV6是什么?有什么区别?

目录 一. IPV4是什么&#xff1f; 二. IPV6是什么 三. IPv4和IPv6有什么区别&#xff1f; 1.地址类型 2.数据包大小 3.header区域字段数 4.可选字段 5.配置 6.安全性 7.与移动设备的兼容性 8.主要功能 IP协议&#xff08;互联网协议&#xff09;是互联网协议群&#…

USB TO SPI / USB TO I2C 软件概要 6--- 专业版调试器

所需设备&#xff1a; 1、USB转SPI_I2C适配器(专业版); 软件概述&#xff1a; SPI类: USB TO SPI 1.0-Slave SPI从机软件&#xff0c;适合单步调试&#xff0c;支持SPI工作模式0、1、2、3&#xff0c;自动跟随主机通讯速率&#xff0c;自动接收数据&#xff1b; USB TO S…

大城市的IT岗位,饱和了么?

现在学或即将更要学习IT专业的同学&#xff0c;经常会考虑这样一个问题&#xff1a;现在的计算机专业到处都有&#xff0c;大学里有、职业学校有&#xff0c;就连社会上的培训机构也有&#xff0c;而且专业分类更细化&#xff0c;有这么多的地方都在培训计算机相关专业&#xf…

二本4年测龄年仅25岁,五面阿里(定薪25K).....

体验了一下阿里的面试&#xff0c;不愧是大厂&#xff0c;考察范围既有深度也有宽度。努力回想了下面试的内容和自己当时的回答&#xff0c;这里给大家分享下自己的经验&#xff0c;也给自己做个归档&#xff0c;希望能给正在准备跳槽&#xff0c;找工作的朋友一点帮助&#xf…

每一个软件测试工程师都有要牢记的误区

最近跟一些刚刚进入软件测试行业的朋友去交流&#xff0c;发现了一个有趣的现象&#xff0c;就是对于这个行业的很多问题的认识都是一致的片面&#xff0c;当然也可以理解为误区。自己利用一点时间&#xff0c;把他们对于这个行业的认识误区都罗列出来&#xff0c;然后结合自己…

【Python从入门到进阶】16、文件的打开和关闭

接上篇《15、函数的定义和使用》 上一篇我们学习了Python中函数的定义和使用&#xff0c;包括函数的参数、返回值、局部变量和全景变量等操作。从本篇开始我们来开始学习Python对文件的一些操作&#xff0c;本篇我们主要讲解如何使用Python打开和关闭文件。 一、打开/创建文件…