当前位置:   article > 正文

【Dubbo】Spring Boot整合Dubbo_dubbo多个reference yml

dubbo多个reference yml

Spring Boot整合Dubbo

1.环境依赖

Dubbo是一种嵌入式的去中心化的架构,其引入的依赖:

	   <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>2.7.8</version>
        </dependency>
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-dependencies-zookeeper</artifactId>
            <version>2.7.8</version>
        </dependency>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

maven依赖图

  1. dubbo: dubbo 功能集合

    • netty:网络传输

    • javassist:通过修改字节码,实现动态SPI机制

      SPI全称Service Provider Interface,是Java提供的一套用来被第三方实现或者扩展的API,它可以用来启用框架扩展和替换组件。

    • spring-context:与spring 集成

    • snakeyaml:解析yml配置文件

  2. zookeeper:连接zookeeper注册中心

2.基本开发架构

一个dubbo应用中至少包含3个节点:

订阅
远程调用
注册
dubbo-client
zookeeper
dubbo-server
  1. zookeeper注册中心
  2. dubbo-server:提供服务,并用dubbo暴漏服务到注册中心
  3. dubbo-client:通过dubbo引用远程服务,起到服务调用

1)zookeeper注册中心

这里作者使用了docker在安装完毕;

2)server暴露服务

  1. 在SpringBoot工程中添加依赖
	   <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>2.7.8</version>
        </dependency>
<!--如果注册中心用的zookeeper需要添加-->
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-dependencies-zookeeper</artifactId>
            <version>2.7.8</version>
        </dependency>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  1. 在启动类上添加注解@EnableDubbo

  2. 在配置文件添加配置

    dubbo.application.name=boot-server
    dubbo.registry.address=zookeeper://127.0.0.1:2181
    dubbo.protocol.name=dubbo
    dubbo.protocol.port=-1 #由dubbo安排端口
    
    • 1
    • 2
    • 3
    • 4
  3. 在服务实现类上添加注解DubboService

3)client引用服务

1.在SpringBoot工程中添加依赖

2.在启动类上添加注解@EnableDubbo

3.在配置文件添加配置

dubbo.application.name=boot-client
dubbo.registry.address=zookeeper://127.0.0.1:2181
dubbo.protocol.name=dubbo #可不填
dubbo.protocol.port=-1 #由dubbo安排端口  #可不填
  • 1
  • 2
  • 3
  • 4

4.在需要引用服务的地方使用DubboReference引用远程服务(好像@AutoWire

@DubboReference
UserService userService
  • 1
  • 2

4)服务化最佳实践

分包:

建议将服务接口、服务模型、服务异常等均放在 API 包中,因为服务模型和异常也是 API 的一部分,这样做也符合分包原则:重用发布等价原则(REP),共同重用原则(CRP)。

如果需要,也可以考虑在 API 包中放置一份 Spring 的引用配置,这样使用方只需在 Spring 加载过程中引用此配置即可。配置建议放在模块的包目录下,以免冲突,

为了代码结构能优雅一点,我们可以把需要暴露的服务和需要引用的服务做成一个依赖,供server和client引用。这样需要更改服务接口和实体类的时候,能减少一定的工作量。

我们常用的就是把Service层和Model进行封装成一个依赖。

server实现这个Service,并暴露到注册中心

client远程引用这个Service

3.Dubbo的配置项

https://dubbo.apache.org/zh/docs/v2.7/user/configuration/xml/

所有的配置项说明:

标签用途解释
<dubbo:service/>服务配置(server)用于暴露一个服务,定义服务的元信息,一个服务可以用多个协议暴露,一个服务也可以注册到多个注册中心
<dubbo:reference/>引用配置(client)用于创建一个远程服务代理,一个引用可以指向多个注册中心
<dubbo:protocol/>协议配置(server)用于配置提供服务的协议信息,协议由提供方指定,消费方被动接受
<dubbo:application/>应用配置 (共有)用于配置当前应用信息,不管该应用是提供者还是消费者
<dubbo:module/>模块配置用于配置当前模块信息,可选
<dubbo:registry/>注册中心配置(共有)用于配置连接注册中心相关信息
<dubbo:monitor/>监控中心配置(共有)用于配置连接监控中心相关信息,可选
<dubbo:provider/>提供方配置(server)当 ProtocolConfig 和 ServiceConfig 某属性没有配置时,采用此缺省值,可选
<dubbo:consumer/>消费方配置(client)当 ReferenceConfig 某属性没有配置时,采用此缺省值,可选
<dubbo:method/>方法配置(共有)用于 ServiceConfig 和 ReferenceConfig 指定方法级的配置信息
<dubbo:argument/>参数配置(共有)用于指定方法参数配置

1)配置分类

所有配置项分为三⼤类。

  1. 服务发现:表示该配置项⽤于服务的注册与发现,⽬的是让消费⽅找到提供⽅。
  2. 服务治理:表示该配置项⽤于治理服务间的关系,或为开发测试提供便利条件。
  3. 性能调优:表示该配置项⽤于调优性能,不同的选项对性能会产⽣影响。

2)配置的优先级

以 timeout 为例,下图显示了配置的查找顺序,其它配置 retries, loadbalance, actives 等类似:

  • 方法级优先,接口级次之,全局配置再次之。
  • 如果级别一样,则消费方优先,提供方次之。

其中,服务提供方配置,通过 URL 经由注册中心传递给消费方。

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/284070
推荐阅读
相关标签
  

闽ICP备14008679号