微服务通信

news2024/12/25 9:13:33

1、Feign远程调用

Feign是Spring Cloud提供的⼀个声明式的伪Http客户端, 它使得调⽤远程服务就像调⽤本地服务⼀样简单, 只需要创建⼀个接⼝并添加⼀个注解即可。 Nacos很好的兼容了Feign, Feign 默认集为Ribbon, 所以在Nacos下使⽤Fegin默认就实现了负载均衡的效果。

1.1基本使用

(1)、加入Fegin的依赖

(2)、在主类上添加注解@EnableFeignClients,开启Fegin

(3)、在order中创建一个service接口,并使用Feigin实现微服务调用

(4)、修改controller代码,并启动验证,通过fegin调用商品微服务

1.2自定义配置

配置文件方式:

基于配置⽂件修改feign的⽇志级别可以针对单个服务:

针对所有服务:设置日志级别

  • FULL:记录所有请求和响应的明细,包括头信息,强求体,元数据

  • NONE:不记录任何日志信息,这是默认值

  • BASIC:仅记录请求的方法,URL以及响应状态码和执行时间

  • HEADERS:在BASIC的基础上,额外记录了请求和响应的头信息

指定了com.apesource包及其子包中所有类的日志级别为debug

1.3 Feign使用优化

(1)引入依赖:⽤Apache的HttpClient

(2)配置连接池

  • ⽇志级别尽量⽤basic

  • 使⽤HttpClient或OKHttp代替URLConnection

引⼊feign-httpClient依赖 配置⽂件开启httpClient功能,设置连接池参数

2、Dubbo远程调用

Dubbo进行微服务通信,一个高性能、轻量级的Java RPC(远程过程调用)框架。它主要用于解决分布式系统中服务之间的通信问题,提供了面向接口的远程方法调用、智能容错和负载均衡、服务自动注册和发现等核心能力,通过定义服务接口、实现服务接口、注册服务到注册中心、以及服务消费者通过注册中心(Nacos)发现服务并进行远程调用等步骤来实现微服务之间的通信。

2.1基础实现

(1)提供同一业务api

(2)、服务提供者product

添加依赖

添加dubbo配置

编写暴露服务

(3)服务消费者order

添加依赖

添加dubbo配置

引用服务

Feign和Dubbo的联系和区别:

联系

  • 目的相同:Feign和Dubbo都旨在简化微服务之间的服务调用,提高系统的灵活性和可维护性。

  • 注册中心依赖:两者都依赖于注册中心(如Nacos、Eureka等)来实现服务的注册与发现,从而动态地管理服务的地址和状态。

  • 服务治理:Feign和Dubbo都支持服务治理功能,如负载均衡、容错等,以提高系统的稳定性和可用性。

区别

  1. 设计理念和使用场景

    • Feign:Feign是Spring Cloud组件之一,它是一个声明式的、模板化的HTTP客户端。Feign主要用于简化与RESTful服务的通信,适用于需要与多个外部服务交互的微服务应用。它基于HTTP协议,通过注解和动态代理机制来调用远程服务,使得调用远程服务就像调用本地服务一样简单。

    • Dubbo:Dubbo是阿里巴巴开源的一个高性能Java RPC框架,它提供了面向接口的远程方法调用、智能容错和负载均衡以及服务自动注册和发现等功能。Dubbo更适用于基于Java的大型企业级应用,特别是当服务之间需要频繁的、高效率的内部通信时。Dubbo支持多种传输协议(如Dubbo协议、HTTP、RMI等),可以根据业务场景选择最佳的通信方式。

  2. 通信协议

    • Feign:Feign默认使用HTTP/HTTPS协议进行通信

    • Dubbo:Dubbo支持多种传输协议,但默认使用基于Netty的TCP长连接进行通信。长连接可以复用TCP连接,减少连接建立和断开的开销,从而提高系统的性能和吞吐量。Dubbo协议适合数据量小、高并发和服务提供者远远少于消费者的场景。

  3. 负载均衡和容错

    • Feign:Feign的负载均衡通常通过与Ribbon集成来实现,支持多种负载均衡策略(如随机、轮询等)。容错和断路器功能通过与Hystrix集成来实现,提供了服务降级、服务熔断等功能。

    • Dubbo:Dubbo内置了多种负载均衡策略(如随机、权重轮询、最少活跃调用数等),并且支持更灵活的路由策略。Dubbo也提供了内置的容错机制,如失败重试、快速失败等。

  4. 配置方式

    • Feign:Feign的使用更加声明式,通过Java接口和注解来定义服务调用,简化了HTTP客户端的创建。它主要集成在Spring Cloud生态系统中,与Spring Cloud的其他组件(如Eureka、Ribbon、Hystrix)有良好的集成性。

    • Dubbo:Dubbo的配置方式更加灵活,不仅支持代码配置,还支持XML配置和注解配置。它作为一个独立的RPC框架,可以与各种服务注册中心、配置中心等集成,适用于多种应用场景。

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

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

相关文章

M8020A J-BERT 高性能比特误码率测试仪

M8020A 比特误码率测试仪 J-BERT M8020A 高性能 BERT 产品综述 Keysight J-BERT M8020A 高性能比特误码率测试仪能够快速、准确地表征传输速率高达 16 或 32 Gb/s 的单通道和多通道器件中的接收机。 M8020A 综合了更广泛的功能,可以简化您的测试系统。 自动对信…

AGV导航方法大盘点:3大类,12小类

导语 大家好,我是社长,老K。专注分享智能制造和智能仓储物流等内容。 在自动化物流领域,自动导引车(AGV)扮演着至关重要的角色。它们不仅能够提高搬运效率,还能在各种环境中准确无误地完成任务。 而这一切的…

KVM虚拟化之命令行界面创建KVM虚拟机

环境:CentOS8 安装所需软件包 yum groupinstall -y "Virtualization*" 上传一个ISO镜像 使用指令创建KVM虚拟机 给KVM虚拟机创建一个磁盘 -f:指定磁盘类型为qcow2 使用指令创建一个虚拟机 virt-install \ --nameCentos-2 \ --vcpu 1 \ --memory 2048 \ -…

【SpringCloud】(一文通)服务注册/服务发现-Eureka

目 录 一. 背景1.1 问题描述1.2 解决思路1.3 什么是注册中心1.4 CAP理论1.5 常见的注册中心 二. Eureka 介绍三. 搭建Eureka Server3.1 创建 Eureka-server 子模块3.2 引入 eureka-server 依赖3.3 项目构建插件3.4 完善启动类3.5 编写配置文件3.6 启动服务 四. 服务注册4.1 引入…

Docker基础概述、Docker安装、Docker镜像加速、Docker镜像指令

1.为什么学docker 开发环境与测试环境不同,导致错误 因此docker提供解决方法———系统平滑移植,容器虚拟化技术 将代码与软件与配置文件 打包成一个镜像 2.docker的历练 创建一个开发环境内成为镜像文件再用docker使用镜像 3.什么是docker Docke…

泛型篇(Java - 泛型机制)(持续更新迭代)

目录 私聊 一、什么是泛型,泛型有什么用,为什么要用 1. 说法一 1.1 什么是泛型 1.2 泛型的使用 1.3 为什么要用泛型 2. 说法二 2.1 什么是泛型,泛型有什么用,为什么要用 2.2 怎么使用泛型,泛型可以作用在什么…

私有方法加事务注解会导致事务失效

这里idea其实已经提醒了使用事务不能用私有方法,这其实是个常见问题,这里主要就加深印象

XSS复现

目录 XSS简单介绍 一、反射型 1、漏洞逻辑: 为什么有些标签可以触发,有些标签不能触发 可以触发的标签 不能触发的标签 为什么某些标签能触发而某些不能 二、DOM型 1、Ma Spaghet! 要求: 分析: 结果: 2、J…

计算xpclr

1.conda安装xpclr 首先安装流程很轻松 conda create -n xpclr -c bioconda xpclr conda activate xpclr xpclr -h 2.按照要求准备文件 XPCLR - 简书 (jianshu.com) 根据教程准备文件,vcf,计算好的map,以及样本文件txt 其实官网也有介绍…

django学习入门系列之第九点《案例 Flask+MySQL新增用户》

文章目录 1 新增用户往期回顾 1 新增用户 from flask import Flask, render_template, request import pymysqlapp Flask(__name__)# 创建了网址 /nima和函数index的对应关系 # 以后用户在浏览器上访问/nima自动运行函数 app.route("/nima", methods[GET, POST]) d…

最小区间00

题目链接 最小区间00 题目描述 注意点 -10^5 < nums[i][j] < 10^5nums[i] 按非递减顺序排列找到一个 最小 区间&#xff0c;使得 k 个列表中的每个列表至少有一个数包含在其中 解答思路 参照题解&#xff0c;根据滑动窗口完成本题首先将所有的元素都提取出来并按升序…

为修复漏洞而准备的更新破坏了Windows-Linux双启动的计算机

上周是微软支持的 Windows 操作系统每月一次的"星期二补丁"活动。然而&#xff0c;一个本意是修复漏洞的补丁却给一些使用 Windows 和各种版本 Linux 的双启动电脑带来了问题。 Ars Technica报道称&#xff0c;该更新旨在修复名为CVE-2022-2601 的漏洞。该漏洞于 20…

Ps:首选项 - 工具

Ps菜单&#xff1a;编辑/首选项 Edit/Preferences 快捷键&#xff1a;Ctrl K Photoshop 首选项中的“工具” Tool选项卡允许用户根据自己的使用习惯和工作需求来定制 Photoshop 工具的行为。这些设置能够帮助用户提高操作的效率和精确度&#xff0c;提供更加流畅和符合个人习惯…

电影推荐(2)-----基于物品的协同过滤算法关联性分析

目录 1.算法的简单图解 2.算法的基本分析过程 3.算法的核心 4.算法的实现 5.关联分析的概念 5.1事务和事务库 5.2项 5.3项集 6.支持度 6.1受欢迎程度 6.2最小支持度 6.3关联条件 7.置信度 8.提升度 1.算法的简单图解 2.算法的基本分析过程 3.算法的核心 上面的全…

【个人学习】JVM(7):方法区概述、方法区内部结构、垃圾回收等

方法区 栈、堆、方法区的交互关系 从线程共享与否的角度来看 ThreadLocal:如何保证多个线程在并发环境下的安全性?典型场景就是数据库连接管理,以及会话管理。 栈、堆、方法区的交互关系 下面涉及了对象的访问定位 Person 类的 .class 信息存放在方法区中person 变量存放…

基于web的铁路订票管理系统

TOC springboot347基于web的铁路订票管理系统--论文 研究背景 近年来&#xff0c;由于计算机技术和互联网技术的飞速发展&#xff0c;所有企事业单位内部都是数字化、信息化、无纸化的发展趋势&#xff0c;随着这种趋势的发展&#xff0c;各种决策系统、辅助系统也应运而生&…

计量自动化终端上行通信规约

物理层 TCP 和 UDP 的传输接口 该类接口的登录链接和心跳检测采用链路测试服务&#xff0c;链路测试周期可设定。 参见 TCP/IP 协议规范。 串行通信传输接口 字节传输按异步方式进行&#xff0c;它包含 8 个数据位、1 个起始位“0”、1 个偶校验位 P 和 1 个停止位“1”。 …

SEO优化:如何优化自己的文章,解决搜索引擎不收录的问题

可以使用bing的URL检查&#xff0c;来检查自己的文章是不是负荷收录准测&#xff0c;如果页面有严重的错误&#xff0c;搜索引擎是不会进行收录的&#xff0c;而且还会判定文章为低质量文章&#xff01; 检查是否有问题。下面的页面就是有问题&#xff0c;当然如果是误报你也可…

yolov5和yolov7车牌识别检测(可检测黄牌、绿牌、双层车牌等各种车牌,准确率高,提供界面)

实现一个车牌识别系统&#xff0c;使用YOLOv5和YOLOv7这两种不同的模型来进行车牌的检测。下面我将提供一个完整的项目概述&#xff0c;包括模型训练脚本、车牌识别代码以及两个GUI界面&#xff0c;分别用于处理静态图片和实时视频流 1. 模型训练 YOLOv5 和 YOLOv7 的训练脚本…

Flask条件查询接口出现SQL注入,使用参数化查询:写法的解决方案(附带企业级开发实际例子与经验分享)

背景&#xff1a; 一个接口出现了SQL注入&#xff0c;条件查询场景下出现&#xff0c;形如下图 解决问题时&#xff0c;我们先要问&#xff0c;什么是SQL注入&#xff1f; 下面的资料有助于针对SQL注入是什么、如何验证SQL注入解决成功了&#xff0c;提供一些思路&#xff0c…