SpringCloud框架(二):整合Eureka作为注册中心、Feign进行远程调用、Ribbon实现负载均衡,底层源码解读

news2024/11/18 14:36:04

环境搭建 生产和消费 RestTemplate,底层源码解读

  • SpringCloud环境搭建:生产和消费 RestTemplate
  • 整合Eureka和Feign
    • 引入Eureka服务注解中心
    • 替代RestTemplate?通过openFegin进行调用
    • 当一个请求多次落到一个服务上,其他服务如何平衡这种关系那?Ribbon实现负载均衡
  • 基础学习
  • 底层源码解析

SpringCloud环境搭建:生产和消费 RestTemplate

Spring章节复习已经过去,新的章节SpringCloud开始了,这个章节中将会回顾微服务相关
主要依照以下几个原则

  1. 每一个组件的Demo和Coding上传到我的代码仓库
  2. 在原有基础上加入一些设计模式,stream+lamdba等新的糖
  3. 通过DeBug调试,进入组件源码去分析底层运行的规则和设计模式

相关的代码已经上传到
链接: SpringCloudServiceDemo
可以进入develop分支去看,觉得不错的博主记得一键三连支持下

整合Eureka和Feign

引入Eureka服务注解中心

先在微服务架构下构建一个子模块,专门调用Eureka服务
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

个人感觉,springcloud的东西就是配置注解,然后操作下相应的配置文件
基本上就可以跑起来了
但是底层东西就很多了,后面一起过一下

在这里插入图片描述

然后在子模块中加入
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
启动服务
点击10086进入到Eureka的ui界面

在这里插入图片描述
配置的服务就可以在这里发现了

如果我们想去调用
就需要用我们注册进入这个Eureka的端口名称 USERSERVICE

@Service
class OrderServiceImpl1 implements OrderService {


    @SuppressWarnings("SpringJavaInjectionPointsAutowiringInspection")
    @Autowired
    private OrderMapper orderMapper;

        @Autowired
        @Qualifier("curTemplate")
        private RestTemplate restTemplate;

        
    public Order queryOrderById(Long orderId) {

        Order order =  orderMapper.findById(orderId);
        String url = "http://USERSERVICE/user/" + order.getUserId();
        order.setUser(restTemplate.getForObject(url, User.class));


        return order;
    }
}

下面我们换一种方式进行调用

替代RestTemplate?通过openFegin进行调用

依旧是导包,注解,配置,多了一个接口导入

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

我们通过这个接口mock了用户模块的方法进行处理,实际上也是url调用的封装
在这里插入图片描述

最后调用方法即可

    @Autowired
    private OrderMapper orderMapper;

/*    @Autowired
    @Qualifier("curTemplate")
    private RestTemplate restTemplate;*/
    @Autowired
    private UserClient userClient;


    public Order queryOrderById(Long orderId) {

        Order order =  orderMapper.findById(orderId);
        order.setUser(userClient.findById(order.getUserId()));

        return order;
    }

当一个请求多次落到一个服务上,其他服务如何平衡这种关系那?Ribbon实现负载均衡

在这里插入图片描述
在这里插入图片描述
如果你用的RestTemplate,可以试试

@Component
public class BeanFactory {

    @Bean
    public static RestTemplate getRestTemplate(){
        return new RestTemplate();
    }


    @Bean("curTemplate")
    @LoadBalanced
    public RestTemplate RestTemplate(){
        return new RestTemplate();
    }
}

发送请求4次,看下结果
在这里插入图片描述
在这里插入图片描述
这里默认适用轮询负载均衡器,后面Debug看

基础学习

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

底层源码解析

后面一一更新下

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

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

相关文章

【Python项目】毕业设计必备——Python实现一个GUI版本的学生信息管理系统 | 附源码

前言 halo,包子们上午好 很多学计算机的小伙伴应该都知道,毕业设计是一个头疼的东西 今天的话小编这边给大家准备好了一个Python版本的毕业设计课题——学生管理系统 说实话操作起来还是有那么一点点的难度的,但是大家不用担心 作为一个宠粉…

SSM框架学习记录-Spring_day02

1.IOC/DI配置管理第三方bean 之前都是基于自己写的类,如果有需求去管理第三方Jar包中的类,该如何管理? 案例:数据源对象管理 使用Spring的IOC容器来管理Druid连接池对象 思路分析 要使用第三方的技术,需要在pom.xml添加依赖 在配置文件中将…

CloudKit教程之如何从 CloudKit 获取图像资源到 SwiftUI 应用程序

最近,我研究了 CloudKit API 文档,并尝试将数据库和资产集成到我的应用程序中。这是我的一些发现,希望对您有所帮助…… 想要从 iCloud 公共数据库获取图像资产到他们的 SwiftUI 应用程序的 Apple 开发人员而写的。 将 Sign in with Apple 集成到 CloudKit 新建 Xcode 项…

CSRF漏洞利用与防御

今天继续给大家介绍渗透测试相关知识,本文主要内容是CSRF漏洞利用与防御。 免责声明: 本文所介绍的内容仅做学习交流使用,严禁利用文中技术进行非法行为,否则造成一切严重后果自负! 再次强调:严禁对未授权设…

Spring更简单的存储和读取Bean

⭐️前言⭐️ 在上一篇文章【Spring的创建与使用】中,我们已经了解了Spring中bean对象的基本的创建和使用方法,这篇文章通过注解的方法,使得存储和读取对象更加简单。 🍉博客主页: 🍁【如风暖阳】&#x1…

[附源码]计算机毕业设计JAVA疫情背景下社区公共卫生服务系统

[附源码]计算机毕业设计JAVA疫情背景下社区公共卫生服务系统 项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术&#xff1a…

分布式事务最终一致性的方案

最终一致性的方案 知识储备 分布式系统中不可避免存在分布式事务带来的一致性问题。为了解决这个问题,需要熟悉业界相关的理论: ACID CAP BASE 2PC 3PC TCC 对于一致性的处理,分为强一致和最终一致性。强一致,对系统的吞吐…

cox回归RCS阈值效应函数cut.tab1.3发布

写在前面的话,本次只发布了cox回归RCS阈值函数,请看清楚再购买,觉得贵的可以等一等,这个函数最终会放在ggrcs包上面,免费供大家使用,急用的可以先看看。 接下来聊聊cox回归RCS阈值函数是干什么用的&#xf…

[附源码]Python计算机毕业设计SSM江西婺源旅游文化推广系统(程序+LW)

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

Python入门 函数 基础入门篇

一、什么是函数 函数是最基本的一种代码抽象的方式,是组织好的可重复使用的,用来实现单一或相关联功能的代码段。 函数是对做相似的事情或相似的动作进行封装,它能提高应用的模块性和代码的重复利用率。我们要封装好一个函数,首…

[附源码]计算机毕业设计设备运维平台出入库模块APPSpringboot程序

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

【STM32学习(3)】STM32——简述中断的基础知识

中断一、中断的定义二、中断的作用三、中断源(中断触发的硬件)四、中断类型五、中断优先级六、中断服务函数一、中断的定义 中断,即CPU在正常执行程序的过程中,遇到外部(IO引脚中断)/内部(定时…

Maven技术

目录 传统项目管理分析(导入jar包形式) maven组成部分 maven项目构建命令 maven高级 项目的聚合与继承 maven子父工程 需求:使用maven子父工程完成登录并跳转到首页列表 创建父工程 在父工程中以module的形式创建子模块 在父工程中以…

RocketMQ 5.0 可观测能力升级:Metrics 指标分析

作者:玄珏 从消息的生命周期看可观测能力 在进入主题之前先来看一下 RocketMQ 生产者、消费者和服务端交互的流程: message produce and consume process RocketMQ 的消息是按照队列的方式分区有序储存的,这种队列模型使得生产者、消费者和…

Matlab论文插图绘制模板第67期—三角网格图(Trimesh)

在之前的文章中,分享了Matlab网格曲面图的绘制模板: 以及一些特殊形式的网格曲面图: 这一次,再来分享一种特殊的网格曲面图:三角网格图。 先来看一下成品效果: 特别提示:Matlab论文插图绘制模板…

为初学者介绍轻量级目录访问协议——LDAP

如果您是刚接触Active Directory (AD)的初学者,那么当您发现LDAP这个术语时可能会感到十分迷茫。今天就让我们来您熟悉 LDAP,让您更加坚定学习AD域管理的信心。 LDAP 首先,让我们直面主题!什么是 LDAP? LDAP 是一种标…

[矩阵论] Unit 3. 矩阵的分解 - 知识点整理

注: 以下内容均由个人整理, 不保证完全准确, 如有纰漏, 欢迎交流讨论参考: 杨明, 刘先忠. 矩阵论(第二版)[M]. 武汉: 华中科技大学出版社, 2005 3 矩阵的分解 3.1 常见的矩阵标准形与分解 常见标准形 等价标准形: P,QP, QP,Q 可逆 AmnPmm[Ir000]QnnA_{m\times n}P_{m\times…

[附源码]Python计算机毕业设计SSM教师职称资料管理系统(程序+LW)

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

软件测试流程图!转行互联网职场必备!

今天给大家分享的是,在软件测试日常工作过程中,比较常见的几种测试流程图: 1.【测试立项】流程图 2.【测试计划】流程图 3.【单元测试】流程图 4.【整合测试】流程图 5.【系统测试】流程图 6.【性能测试】流程图 7.【验收测试】…

QTextStream(文本流)

QTextStream QTextStream 类为读取和写入文本提供了一个方便的接口可以在QIODevice、QBateArray、和QString中使用&#xff0c;QTextStream使用的是流运算符&#xff08;>> <<&#xff09;&#xff0c;可以更方便的读/写数据&#xff0c;QTextStream也支持对字段进…