微服务系列<3>---微服务的调用组件 rpc 远程调用

什么是rpc调用,让我们调用远程方法就像调用本地方法一样  这就属于rpc调用
rpc是针对于本地来说的
调用远程方法根调用本地方法一样 如果能达到这种效果 就是rpc调用

在这里插入图片描述

如果达到一种效果 调用远程和调用本地一样 他就是一种rpc框架

在这里插入图片描述

2个微服务 之间发的调用 我们之前通过ribbon的方式发起调用 

需要构建一个url 然后再利用我们加了@Lb的restTemplalte做的负载均衡策略

在这里插入图片描述

  如果我可以根据本地方法一样 order.findById()一样的话就很方便 的完成一次调用
我可以基于jdk的动态代理拿一个代理对象  然后我可以调用一个方法
第二就是通过协议层进行 加密 解密 (对请求进行编码 或者序列化 )

第三就是 一定有远端通信(传输层面) nio/bio、netty、grpc
发数据  接受数据(解码) 反射执行 真正的服务

代理层
协议层
传输层
微服务之间完成feign,springcloud 提供了一个rpc框架 feign



在这里插入图片描述

不用像ribbon一样构建一个url  然后restTemplate 发起一个请求
ribbon和feign的对比

在这里插入图片描述

ribbon 是构建一个url 然后基于restTemplate发起的调用(@Lb提供负载均衡的能力)
feign 需要做个标记  记录这是一个Feign调用



代理层   动态代理层

协议层   加密 解密 编码 解码

网络通信层  发起http请求

feign就是一种rpc架构,在springcloud中是怎么应用的

在这里插入图片描述

feign的使用,Feign 底层也实现了负载均衡
rpc 框架的负载均衡怎么实现的
feign底层整合了ribbon


feign的扩展
1. 比如说用户下单,扣减库存的时候可能会涉及到分布式事务,分布式事务可能就会有一个全局的事务id(pid),有时候要做授权
https://blog.csdn.net/qq_41885819/article/details/121955452
怎么在feign的请求头中添加东西
还有rpc框架数据在网络中传输,数据越小效率越高,这时候我们要对数据进行压缩
在feign中也可以配置对数据进行压缩,这些都是我们要考虑的

springcloud中的feign的扩展点 
1.feign的日志组件 logger 帮助我们记录日志请求日志
并且它可以定义我们的日志级别

在这里插入图片描述

可以将请求日志打印出来  发一个请求会打印很多请求日志、

在这里插入图片描述

配置日志级别------FULL  (全部级别)
默认没有任何日志  不利于我们生产排查问题
生产配置BASIC  帮助我们在生产环境追踪问题

在这里插入图片描述

默认是没有任何日志输出的,不利于我们排查问题.性能最好的 因为不用打印日志
basic 我们也可以基于yaml配置  他上面会显示执行时间,可以帮助我们追踪生产问题

在这里插入图片描述

执行时间 这是通过我们yaml的方式来执行的
当然也可以全局配置
个性化需求,可以在yaml 中配置

feign支持日志.因为定位问题的话没有日志的话 是很麻烦的
第二个就是我要通过feign 往下游传递我的token 信息  feign 帮我们实现了默认的拦截器

在这里插入图片描述

在请求发起的位置传递一个token,我想要给下游微服务传参的时候就可以使用这个拦截器

在这里插入图片描述

我们的feingn 底层依赖于ribbon,就可以配置一些超时时间
一个是连接的超时时间 一个是处理请求的超时时间
一个是连接的
一个是处理请求的

在这里插入图片描述

我们超时之后 在微服务中是要做处理的 比如说降级或者熔断机制
不能说一直超时
或者说让我们的请求尽可能的快
数据压缩
对feign 的性能提升的一种配置
开启压缩 节约网络资源

在这里插入图片描述

压缩那些类型数据 比如说xml json
最小压缩值是多少
这样可以提高传输速率

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【数模】预测模型

一、灰色系统 白色系统:系统信息完全明确灰色系统:系统部分信息已知,部分信息未知 对在一定范围内变化的、与时间有关的灰色过程进行预测。过程:原始数据找规律→生成强规律性的数据序列→建立微分方程来预测未来趋势 黑色系统&a…

JavaWeb项目工程结构介绍

介绍idea创建Web项目工程下的项目结构(新建的web工程) 了解目录大致作用 一级目录 :.idea、out、src、web、工程名.iml .idea目录:记录了IntelliJ IDEA 的配置目录,包含项目的配置信息、工程设置、构建配置等。它是用来存储项目…

谈谈网络安全

目录 1.概念 2.发展现状 3.主要问题 1.概念 网络安全是指保护计算机网络和其中的数据免受未经授权访问、损坏、窃取或破坏的过程和技术。网络安全涉及预防和检测潜在的威胁和漏洞,并采取措施保护网络的机密性、完整性和可用性。 网络安全的概念包括以下几个方面&am…

Vue系列第七篇:Element UI之el-main,el-table,el-dialog,el-pagination,el-breadcrumb等控件使用

本篇实现主页面功能,包括主页面排版布局,学生管理模块实现,后台接口实现等功能。 目录 1.运行效果 1.1登录页面 1.2主页面 1.3学生管理 - 信息列表 1.4学生管理 - 信息管理 1.5学生管理 - 作业列表 1.6学生管理 - 作业管理 2.前端代码…

开源元数据管理平台Datahub最新版本0.10.5——安装部署手册(附离线安装包)

大家好,我是独孤风。 开源元数据管理平台Datahub近期得到了飞速的发展。已经更新到了0.10.5的版本,来咨询我的小伙伴也越来越多,特别是安装过程有很多问题。本文经过和群里大伙伴的共同讨论,总结出安装部署Datahub最新版本的部署手…

Flowise AI:用于构建LLM流的拖放UI

推荐:使用NSDT场景编辑器助你快速搭建可二次编辑的3D应用场景 什么是Flowise AI? Flowise AI是一个开源的UI可视化工具,用于帮助开发LangChain应用程序。在我们详细介绍 Flowise AI 之前,让我们快速定义 LangChain。LangChain是…

pytorch实战-图像分类(二)(模型训练及验证)(基于迁移学习(理解+代码))

目录 1.迁移学习概念 2.数据预处理 3.训练模型(基于迁移学习) 3.1选择网络,这里用resnet 3.2如果用GPU训练,需要加入以下代码 3.3卷积层冻结模块 3.4加载resnet152模 3.5解释initialize_model函数 3.6迁移学习网络搭建 3.…

迭代器模式(Iterator)

迭代器模式是一种行为设计模式,可以在不暴露底层实现(列表、栈或树等)的情况下,遍历一个聚合对象中所有的元素。 Iterator is a behavior design pattern that can traverse all elements of an aggregate object without exposing the internal imple…

SIFT算法原理:SIFT算法详细介绍

前面我们介绍了Harris和Shi-Tomasi角点检测算法,这两种算法具有旋转不变性,但不具有尺度不变性,以下图为例,在左侧小图中可以检测到角点,但是图像被放大后,在使用同样的窗口,就检测不到角点了。…

uniapp微信小程序中打开腾讯地图获取用户位置信息

实现的效果 第一步:首先登录微信公众平台 , 需要用到AppID 第二步: 注册登录腾讯位置服务 注册需要手机号和邮箱确认,然后创建应用 创建后点击添加key 添加后会生成key,后面会用到这个key 第三步: 登录微信公众平台&a…

Git Submodule 更新子库失败 fatal: Unable to fetch in submodule path

编辑本地目录 .git/config 文件 在 [submodule “Assets/CommonModule”] 项下 加入 fetch refs/heads/:refs/remotes/origin/

记录下:win10 AMD CPU 下载 Chromium 源码并编译(版本 103.0.5060.66)

文章目录 一、一些主要地址连接二、环境配置1、如何找官方环境文档:1.1 如何找到这个不同版本的文档: 2、电脑配置:3、visual studio 2019安装:3.1 社区版下载:3.2 安装配置: 4、debugtools配置4.1 如何判断…

LeetCode每日一题——1331.数组序号转换

题目传送门 题目描述 给你一个整数数组 arr ,请你将数组中的每个元素替换为它们排序后的序号。 序号代表了一个元素有多大。序号编号的规则如下: 序号从 1 开始编号。一个元素越大,那么序号越大。如果两个元素相等,那么它们的…

上市公司-上下游和客户数据匹配(2001-2022年)

参考《中国工业经济》中陶锋(2023)的做法,对上市公司的上下游供应商和客户数据进行匹配。形成“上游供应商—目标企业—下游客户一年度数据集”。该是关于上市公司的上下游以及客户数据匹配的详细信息。 它呈现出由各种上游供应商和下游客户…

mysql高级三:sql性能优化+索引优化+慢查询日志

内容介绍 单表索引失效案例 0、思考题:如果把100万数据插入MYSQL ,如何提高插入效率 (1)关闭自动提交,只手动提交一次 (2)删除除主键索引外其他索引 (3)拼写mysql可以执…

ELK日志分析系统简介

ELK日志分析系统简介 ElasticsearchLogstashKibana主要功能Kibana日志处理步骤ELK的工作原理 日志服务器 提高安全性 集中存放日志 缺陷 ​ 对日志的分析困难 ELK日志分析系统 Elasticsearch 概述:提供了一个分布式多用户能力的全文搜索引擎 核心概念 接近实时 集群 节…

特性Attribute

本文只提及常用的特性,更多特性请查看官方文档。 AddComponentMenu - Unity 脚本 API 常用特性 AddComponentMenu 添加组件菜单 使用 AddComponentMenu 属性可在“Component”菜单中的任意位置放置脚本,而不仅是“Component > Scripts”菜单。 使用…

GODOT游戏引擎简介,包含与unity性能对比测试,以及选型建议

GODOT,是一个免费开源的3D引擎。本文以unity作对比,简述两者区别和选型建议。由于是很久以前写的ppt,技术原因视频和部分章节丢失了。建议当做业务参考。 GODOT目前为止遇到3个比较重大的基于,第一个是oprea的合作奖,…

嵌入式开发学习(STC51-13-温度传感器)

内容 通过DS18B20温度传感器,在数码管显示检测到的温度值; DS18B20介绍 简介 DS18B20是由DALLAS半导体公司推出的一种的“一线总线(单总线)”接口的温度传感器; 与传统的热敏电阻等测温元件相比,它是一…

【C++】map和set

目录 一、容器补充1.序列式容器与关联式容器2.键值对3.树形结构的关联式容器 二、set1.set的介绍2.set的使用3.multset的介绍4.multset的使用 三、map1.map的介绍2.map的使用3.multimap的介绍4.multimap的使用 一、容器补充 1.序列式容器与关联式容器 我们已经接触过STL中的部…