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

news2024/12/23 11:15:45

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/450460.html

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

相关文章

花生壳内网穿透步骤详解,感兴趣的小伙伴可以自己去尝试哦~

花生壳是什么&#xff1f; 花生壳是款具备内网穿透功能的软件。是通过云服务器快速与内网服务器建立连接&#xff0c;同时把内网端口映射到云端&#xff0c;实现各类基于域名的互联网应用服务。花生壳能够实现反向代理应用&#xff0c;支持TCP、HTTP、HTTPS协议&#xff0c;端…

数据结构基础day3

题目&#xff1a;119. 杨辉三角II 我的解法&#xff1a;先将杨辉三角存储起来&#xff0c;取出第rowIndex行 class Solution { public:vector<int> getRow(int rowIndex) {vector<vector<int>> ans(rowIndex1); //初始化rowIndex1行的杨辉三角for(int i0; …

贾其萃 : 笃行实践 筑梦扬帆 | 提升之路系列(二)

导读 为了发挥清华大学多学科优势&#xff0c;搭建跨学科交叉融合平台&#xff0c;创新跨学科交叉培养模式&#xff0c;培养具有大数据思维和应用创新的“π”型人才&#xff0c;由清华大学研究生院、清华大学大数据研究中心及相关院系共同设计组织的“清华大学大数据能力提升项…

如何开发一款用户体验优秀的语音交友app?

在数字时代&#xff0c;人们越来越依赖智能手机上的应用程序来与他人进行交流。其中&#xff0c;语音交友app成为了最受欢迎的应用之一。然而&#xff0c;开发一款成功的语音交友app需要深入了解用户需求与体验。本文将探讨如何开发一款用户体验优秀的语音交友app。 着眼于用户…

微信小程序uniapp基于Android的大学生社交论坛交流app系统

实现一个基于Android的社交APP小程序,一共3个身份&#xff0c;包括老师、学生和管理员&#xff0c;其中老师和学生在手机端注册登录&#xff0c;管理员在web端后台登录。学生和老师登录后可以查询通知新闻信息&#xff0c;收藏信息&#xff0c;查看好友推荐&#xff0c;论坛发帖…

短视频app开发:如何实现实时短视频录制功能

简介 在当今的移动互联网时代&#xff0c;短视频app已经成为了人们生活中不可或缺的一部分。短视频app的数量和用户量都在不断增加。如今&#xff0c;越来越多的人开始关注短视频app的开发&#xff0c;尤其是如何实现实时短视频录制功能。本文将分享如何开发短视频app并实现实…

【TS】1660- 4 个 TypeScript 5.1 Beta 版重要更新内容

TypeScript 5.1 在 5.0 发布后不久就发布了测试版&#xff0c;但测试版不代表最终正式版。 官方原文 Announcing TypeScript 5.1 Beta(https://devblogs.microsoft.com/typescript/announcing-typescript-5-1-beta/) 中提供了完整的更新内容&#xff0c;以下是我梳理了 4 个 T…

总结829

学习目标&#xff1a; 4月&#xff08;复习完高数18讲内容&#xff0c;背诵21篇短文&#xff0c;熟词僻义300词基础词&#xff09; 学习内容&#xff1a; 暴力英语&#xff1a;背完第5轮核心词&#xff0c;那些没掌握的还是没掌握&#xff0c;必须重点揪出来&#xff0c;单独…

QT QPainter坐标系统和坐标变换

一、坐标变换函数 QPainter 在窗口上绘图的默认坐标系统如图下图所示&#xff0c;这是绘图设备的物理坐标。为了绘图的方便&#xff0c;QPainter 提供了一些坐标变换的功能&#xff0c;通过平移、旋转等坐标变换&#xff0c;得到一个逻辑坐标系统&#xff0c;使用逻辑坐标系统…

021:Mapbox GL加载arcgis地图(影像瓦片图)

第020个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+mapbox中加载arcgis地图(影像瓦片图)。 直接复制下面的 vue+mapbox源代码,操作2分钟即可运行实现效果 文章目录 示例效果配置方式示例源代码(共80行)相关API参考:专栏目标示例效果 配置方式 1)查看基础设置…

【数据库】MySQL的聚合查询,联合查询及关键字的执行顺序

目录 1.聚合查询 1.1聚合函数 1.2GROUP BY子句 1.3HAVING 2.联合查询 联合查询步骤 2.1内连接 2.2外连接 2.3自连接 2.4子查询 单行子查询 多行子查询 2.5合并查询 UNION UNION ALL 3.SQL关键字的使用顺序 3.1语法顺序 3.2执行顺序 1.聚合查询 聚合查询是SQ…

快速将PDF转换为图片:使用在线转换器的步骤

PDF文件是一种常见的文档格式&#xff0c;但在某些情况下需要将其转换为图片格式&#xff0c;例如将PDF文件插入PPT演示文稿中。此时&#xff0c;使用在线PDF转换器是一种快速且简便的方法。 本文将介绍如何使用在线转换器将PDF文件转换为图片格式。 步骤1&#xff1a;选择合…

Three.js+TypeScript+Webpack学习记录(三)

使用环境参考 Node.js v16.19.1 正文 独立功能文件 我们不可能一直在 index.ts 中写代码&#xff0c;分离文件&#xff1a; // init.ts import * as THREE from threeexport const initScene () > {const scene new THREE.Scene()scene.background new THREE.Color(wh…

【多线程】Java中是如何保证多线程间的数据共享的?

文章目录 前言一、Java的内存模型二、保证可见性的方式volatilesynchronizedlockfinal 三、volatile的底层实现总结 前言 在讨论这个问题之前&#xff0c;我们可以先瞅瞅Java的内存模型JMM&#xff0c;JMM可不要和JVM混为一谈。我们说的是内存模型JMM&#xff08;Java Memory …

JavaSE-06 [面向对象OOP + 封装]

JavaSE-06 [面向对象OOP 封装] 第一章 面向对象思想 1.1 面向过程和面向对象 面向过程&#xff1a; 面向过程就是分析出解决问题所需要的步骤&#xff0c;然后用函数把这些步骤一步一步实现&#xff0c;使用的时候一个一个依次调用就可以了面向对象&#xff1a; 面向对象是…

博弈论(NIM游戏——取石子)相关的题目

1.异或的性质 &#x1f3f3;️‍&#x1f308;&#x1f3f3;️‍&#x1f308;&#x1f3f3;️‍&#x1f308;&#x1f3f3;️‍&#x1f308;&#x1f3f3;️‍&#x1f308;&#x1f3f3;️‍&#x1f308; 2.nim游戏 &#xff08;基础&#xff09; 891. Nim游戏 - AcWin…

直播软件app开发:如何处理直播延迟问题?

随着直播技术的发展&#xff0c;直播软件app的开发变得越来越普遍。然而&#xff0c;直播延迟问题一直是直播软件app开发中的一个挑战。在本文中&#xff0c;我们将探讨如何解决直播延迟问题&#xff0c;提高用户体验。 直播延迟的原因 直播延迟的原因是多方面的。其中最主要…

【Mycat2】介绍、安装、部署、配置、测试与 Bugs

文章目录 一、MyCat 概览1.1 简介1.2 官网网址1.3 仓库地址1.4 Mycat1.x 与 Mycat2 功能对比1.5 下载1.5.1 先决条件1.5.2 Mycat2 安装包&#xff08;以下二选一&#xff09; 1.6 Mycat2权威指南1.7 原型库什么是兼容性 SQL&#xff1f;什么是 Prototype 服务器&#xff1f;原型…

shell第二次作业

一、编写脚本for1.sh使用for循环创建20账户&#xff0c;账户名前缀由用户从键盘输入&#xff0c;账户初始密码由用户输入。 1、创建脚本for1.sh [rootlocalhost ~]# vim for1.sh2、编辑脚本内容 3.运行 [rootlocalhost ~]# bash for1.sh 请用户输入账户名的前缀&#xff1a…

WPS AI 再次引爆办公软件行业,以后写文档可由AI代笔

国内外办公软件两大巨头聚齐&#xff0c;使用AI助力再次成标配。 2023年3月16日&#xff0c;微软发布了 Microsoft 365 Copilot&#xff0c;Microsoft 365 这个名字听起来比较陌生&#xff0c;它集成了Office 365 企业版、Windows 10 企业版以及企业移动性安全性&#xff0c;以…