微服务通信

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框架,可以与各种服务注册中心、配置中心等集成,适用于多种应用场景。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值