微服务 Dubbo服务的注册 发现 配置

  • 什么是Dubbo
  • Dubbo服务的注册与发现
  • 发现流程
  • Dubbo的基础配置
  • Dubbo常用注释
  • Dubbo生产者消费者配置小结


什么是Dubbo

下载地址:链接: link Dubbo是一套RPC框架(RPC是Remote Procedure Call的缩写 翻译为:远程过程调用)
目标是为了实现两台(多台)计算机\服务器,相互调用方法\通信的解决方案
RPC只是实现远程调用的一套标准
这里的Dubbo指的都是2.7之后的版本,是能够和SpringCloudAlibaba配合使用的

Dubbo服务的注册与发现

在Dubbo的调用过程中,必须包含注册中心的支持(需要先启动注册中心)

注册中心推荐阿里自己的Nacos,兼容性好,能够发挥最大性能

但是Dubbo也支持其它软件作为注册中心(例如Redis,zookeeper等)

服务发现,即消费端自动发现服务地址列表的能力,是微服务框架需要具备的关键能力,借助于自动化的服务发现,微服务之间可以在无需感知对端部署位置与 IP 地址的情况下实现通信。
在Dubbo中,远程调用依据是服务的提供者在Nacos中注册的服务名称
一个服务名称,可能有多个运行的实例,任何一个空闲的实例都可以提供服务

1.首先服务的提供者启动服务时,将自己的具备的服务注册到注册中心,其中包括当前提供者的ip地址和端口号等信息,Dubbo会同时注册该项目提供的远程调用的方法
2.消费者(使用者)启动项目,也注册到注册中心,同时从注册中心中获得当前项目具备的所有服务列表
3.当注册中心中有新的服务出现时,会通知已经订阅发现的消费者,消费者会更新所有服务列表
4.RPC调用,消费者需要调用远程方法时,根据注册中心服务列表的信息,只需服务名称,不需要ip地址和端口号等信息,就可以利用Dubbo调用远程方法了

发现流程

1.首先服务的提供者启动服务时,将自己的具备的服务注册到注册中心,其中包括当前提供者的ip地址和端口号等信息,Dubbo会同时注册该项目提供的远程调用的方法
2.消费者(使用者)启动项目,也注册到注册中心,同时从注册中心中获得当前项目具备的所有服务列表
3.当注册中心中有新的服务出现时,会通知已经订阅发现的消费者,消费者会更新所有服务列表
4.RPC调用,消费者需要调用远程方法时,根据注册中心服务列表的信息,只需服务名称,不需要ip地址和端口号等信息,就可以利用Dubbo调用远程方法了

Dubbo的基础配置

dubbo服务订阅注册流程 dubbo怎么注册服务的_java


dubbo服务订阅注册流程 dubbo怎么注册服务的_java_02

Dubbo常用注释

在生产者(Producer)项目中:
@DubboService:添加在业务逻辑层实现类上
@EnableDubbo:添加在Spring Boot的启动类上
这样实现类的所有方法才会注册到Nacos中

在消费者(Consumer)项目中

@DubboReference:表示当前业务逻辑层代码,要消费其它模块的服务

因为在Nacos中,注册的都是实现类,所以可以实现类似自动装配的效果

部分公司,可能会要求使用DubboReference装配的,变量名需要使用dubbo开头

dubbo服务订阅注册流程 dubbo怎么注册服务的_dubbo_03

Dubbo生产者消费者配置小结

Dubbo生产者消费者相同的配置
pom文件添加dubbo依赖,yml文件配置dubbo信息

生产者

  • 要有service接口项目
  • 提供服务的业务逻辑层实现类要添加@DubboService注解
  • SpringBoot启动类要添加@EnableDubbo注解

消费者

  • pom文件添加消费模块的service依赖
  • 业务逻辑层远程调用前,模块使用@DubboReference注解获取业务逻辑层实现类对象