Spring Cloud中使用Dubbo

简介

Dubbo是一款高性能、轻量级的开源Java RPC框架,主要用于构建大型分布式系统。提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。

Dubbo框架主要由以下组件构成:Provider、Consumer、Registry、Monitor和Container。Provider是服务提供者,发布服务并将服务注册到注册中心,等待消费者调用。Consumer是从注册中心订阅服务,和服务提供者进行通信,消费服务。Registry负责记录服务提供者的信息,以及服务提供者和服务消费者之间的关系,帮助消费者发现可用的服务实例。Monitor收集Dubbo节点的性能指标、服务调用统计信息等,以便运维人员进行监控和管理。Container是服务的运行容器。

项目结构

Spring Cloud中使用Dubbo_第1张图片

项目结构分层明显,各中间件都有自己独立的微服务;在业务模块中直接引入中间件微服务实现不同模块之间的相互调取

项目依赖 

        
		    org.apache.dubbo
		    dubbo-spring-boot-starter
		    2.7.12
		

流程

1. 在dubbo中根据不同微服务模块分包,定义自己的service接口 

2. 在对应的微服务模块中建立dubbo包定义impl实现刚刚定义的service接口

Spring Cloud中使用Dubbo_第2张图片

@DubboService是一个用于在Dubbo框架中声明和配置服务的注解。它主要用于服务提供者

  1. version:服务的版本号,用于区分同一接口的不同版本。
  2. group:服务的分组,用于在注册中心进行分类。
  3. protocol:服务所使用的协议,用于指定服务调用时所使用的通信协议。
  4. export:服务的导出地址,用于指定服务提供者的地址。
  5. ref:服务的引用,用于指定服务实现类的全限定名。
  6. interfaceClass:服务的接口类,用于指定服务所实现的接口。
  7. annotatedServiceBeanName:带注解的服务Bean名称,用于指定带注解的服务Bean的名称。

使用@DubboService注解时,需要将其添加到服务实现类的上方,以便Dubbo框架能够识别和配置该服务

3. 代码中调用

Spring Cloud中使用Dubbo_第3张图片

在业务层使用@DubboReference注解注入

@DubboReference是一个用于在Dubbo框架中引用远程服务的注解。它主要用于服务消费者

  1. version:服务的版本号,用于匹配对应版本的服务提供者。
  2. group:服务的分组,用于匹配对应分组的服务提供者。
  3. protocol:服务所使用的协议,用于指定与服务提供者通信所使用的协议。
  4. check:是否进行远程服务校验,默认为true。
  5. timeout:调用远程服务的超时时间,默认为-1表示使用默认值。
  6. connections:最大连接数,默认为-1表示使用默认值。
  7. retries:重试次数,默认为2次。
  8. loadbalance:负载均衡策略,默认为随机。
  9. async:是否异步调用,默认为false。
  10. cache:缓存策略,默认为无缓存。
  11. version:指定要引用的远程服务版本。
  12. group:指定要引用的远程服务分组。

使用@DubboReference注解时,需要将其添加到服务引用对象的上方,以便Dubbo框架能够识别和配置该引用

4. 至此你就可以在项目中的任意业务微服务中调用不同模块间的方法了,使分布式服务之间调用效率更高

你可能感兴趣的:(Java,spring,cloud,dubbo,spring)