SpringBoot整合Dubbo+Zookeeper

SpringBoot整合Dubbo+Zookeeper,第1张

SpringBoot整合Dubbo+Zookeeper Dubbo简介

Apache Dubbo 官网:https://dubbo.apache.org/zh/

Apache Dubbo 是一款微服务开发框架,提供了 RPC【远程过程调用 Remote Procedure Call】通信与微服务治理 两大关键能力。这意味着,使用 Dubbo 开发的微服务,将具备相互之间的远程发现与通信能力, 同时利用 Dubbo 提供的丰富服务治理能力,可以实现诸如服务发现、负载均衡、流量调度等服务治理诉求。同时 Dubbo 是高度可扩展的,用户几乎可以在任意功能点去定制自己的实现,以改变框架的默认行为来满足自己的业务需求。

Dubbo 提供的基础能力包括:

服务发现流式通信负载均衡流量治理…… Zookeeper 简介

Zookeeper 是 Apache Hadoop 的子项目,是一个树型的目录服务,支持变更推送,适合作为 Dubbo 服务的注册中心,工业强度较高,可用于生产环境。

SpringBoot 项目整合

需要搭建 Zookeeper 环境:https://blog.csdn.net/qq_20185737/article/details/122202628

示例项目分为三个模块

romantik:maven 多模块聚合项目

common:提取公共的实体类和服务接口,普通 Java 项目

app:服务消费者,远程调用 service 提供的服务,SpringBoot 项目

service:服务提供者,common 的服务接口具体实现,SpringBoot 项目

父模块

在父项目的 pom.xml 用 dependencyManagement 管理 Dubbo,Zookeeper 的依赖版本


    1.8
    3.0.5



    
        
            org.apache.dubbo
            dubbo-spring-boot-starter
            ${dubbo.version}
        
        
            org.apache.dubbo
            dubbo-dependencies-zookeeper
            ${dubbo.version}
            	//排除冲突的依赖
                
                    org.slf4j
                    slf4j-log4j12
                
            
            pom
        
    

common 模块

在 common 模块的 pom.xml 中引入父项目的坐标


    romantic
    com.example
    1.0.0

导入 service 模块和 app 模块公共依赖,这样在 service 模块和 app 模块中添加 common 模块依赖时就会导入这些依赖


    
        org.springframework.boot
        spring-boot-starter
    
    
        org.apache.dubbo
        dubbo-dependencies-zookeeper
        pom
    
    
        org.apache.dubbo
        dubbo-spring-boot-starter
    
    
            org.projectlombok
            lombok
            1.18.20
            provided
        

service 模块

service 模块的 pom.xml 中添加对 common 模块的依赖和其他依赖的导入


    
    
        com
        common
        1.0.0
    

配置 Service 模块的配置文件

#数据源配置
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC
    username: root
    password: 123456

#防止端口冲突
server:
  port: 8001
  
#dubbo 配置
dubbo:
  application:
    #应用名称
    name: provider
  registry:
    #注册中心地址
    address: zookeeper://49.232.212.119:2181
    #超时时间,单位毫秒
    timeout: 30000
  #元中心地址
  metadata-report:
    address: zookeeper://49.232.212.119:2181
  protocol:
    #协议名称
    name: dubbo
    #协议端口
    port: 20880
  scan:
    #扫描服务包的位置
    base-packages: com.service.impl
app 模块

app 模块的 pom.xml 中添加对 common 模块的依赖和其他依赖的导入


    
        dubbo-api
        com.example
        1.0.0
    

配置 app 模块的配置文件

#防止端口冲突
server:
  port: 8002
dubbo:
  application:
    #应用名称
    name: consumer
  registry:
    #注册中心地址
    address: zookeeper://49.232.212.119:2181
    timeout: 30000
测试

    在 common 模块下编写 User 实体类

    @Data
    @AllArgsConstructor
    @NoArgsConstructor
    public class User implements Serializable {
        private Integer id;
        private String username;
        private String password;
    
    }
    

    编写 User 的服务接口 UserService

    public interface UserService {
        User getUser();
    }
    

    在 Service 模块中进行实现 common 模块的服务接口 UserService

    @DubboService(version = "1.0")
    public class UserServiceImpl implements UserService {
    
        
        @Override
        public User getUser() {
            return new User(20,"喵喵","123456");
        }
    
    }
    

    使用 @DubboService 注解向注册中心注册服务

    在 app 中编写 controller

    @RestController
    public class UserController {
    
        @DubboReference(version = "1.0")
        private UserService userService;
    
        @RequestMapping("/user")
        public User getUser(){
            return userService.getUser();
        }
    
    }
    

    使用 @DubboReference 远程调用注册中心中的服务

    启动两个模块,访问 localhost:8002/user,就可以看到执行成功了

    我们也可以在 dubbo-admin 中看见 Service 向注册中心注册的服务。安装 dubbo-admin 的教程:Linux 通过 Maven 安装 Dubbo-admin -CSDN博客

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5718657.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存