栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Idea创建dubbo脚手架(dubo+nacos)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Idea创建dubbo脚手架(dubo+nacos)

1.dubbo介绍

Apache Dubbo (incubating) |ˈdʌbəʊ| 是一款高性能 、 轻量级的开源 Java RPC框架 它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现 。

Dubbo是一个分布式服务框架,致力于提供高性能和透明化的 RPC远程服务调用方案、 服务治理方案。

 

服务提供者 (Provider):暴露服务的服务提供方 服务提供者在启动时,向注册中心注

册自己提供的服务。

服务消费者 (Consumer):调用远程服务的服务消费方 服务消费者在启动时,向注册

中心订阅自己所需的服务 服务消费者,从提供者地址列表中,基于软负载均衡算法,选一

台提供者进行调用,如果调用失败,再选另一台调用。

注册中心(Registry)注册中心返回服务提供者地址列表给消费者,如果有变更,注册

中心将基于长连接推送变更数据给消费者。

监控中心(Monitor)服务消费者和提供者,在内存中累计调用次数和调用时间,定时

每分钟发送一次统计数据到监控中心。

2.项目骨架搭建

父项目:dubboparent

  dubbo-api

  dubbo-provider

 dubbo-consumer

2.1 创建父项目

https://start.aliyun.com

接下来就一直往下点就可

2.2 dubbo子项目的创建

后面创建子项目的过程和父项目相同

分别创建dubbo-api,dubbo-provider,dubbo-consumer

创建完成后删除.mvn,HELP.md,mvnw,mvnd.cmd等文件,结构如下:

展开如下:

到这里为止,项目的架构也就出来了。

3、模块关联

完成了上面的步骤,各个模块还是相互独立。此时需要修改各个模块的pom.xml文件让他们关联起来。

3.1父项目dubboparent修改pom文件

1.将父项目 packaging改为 pom

如果没有将packing 指定为pom ,那么子模块之间将无法正常的进行依赖传递。
我们执行的maven命令的时候将首先对父项目执行,而后当 父项目 的packing 类型为 pom 时,将对所有的子模块执行同样的命令,否则将无法执行同样的命令,那么依赖的传递将无法由maven 编译或者打包命令 得以执行。

总结:Maven-多模块项目的聚合,父项目必须将packing 指定 为 pom

2.添加总父项目为 springboot

3.添加父项目刚创建的各个模块



    4.0.0
    com.dubboscaffold
    dubboparent
    0.0.1-SNAPSHOT
    dubboparent
    Demo project for Spring Boot

    
    pom

    
        1.8
        UTF-8
        UTF-8
        2.3.7.RELEASE
    
    

    
    
        org.springframework.boot
        spring-boot-starter-parent
        2.2.1.RELEASE
    

    
    
        dubbo-api
        dubbo-provider
        dubbo-consumer
    

    
        
            org.springframework.boot
            spring-boot-starter
        

        
            org.junit.jupiter
            junit-jupiter-api
            5.5.0
            test
        

        
            org.springframework
            spring-core
            5.3.6
        

        
            org.springframework.boot
            spring-boot-starter-test
            test
            
                
                    org.junit.vintage
                    junit-vintage-engine
                
            
        
    

 3.2子项目dubbo-api修改pom文件


    4.0.0
    com.dubboscaffold
    dubbo-api
    0.0.1-SNAPSHOT
    dubbo-api
    Demo project for Spring Boot

    
        1.8
        UTF-8
        UTF-8
        2.3.7.RELEASE
    

    
    
        com.dubboscaffold
        dubboparent
        0.0.1-SNAPSHOT
        ../pom.xml
    

    
        
            org.springframework.boot
            spring-boot-starter
        

        
            org.springframework.boot
            spring-boot-starter-test
            test
            
                
                    org.junit.vintage
                    junit-vintage-engine
                
            
        
    


 3.3子项目dubbo-provider修改pom文件


    4.0.0
    com.dubboscaffold
    dubbo-provider
    0.0.1-SNAPSHOT
    dubbo-provider
    Demo project for Spring Boot

    
        1.8
        UTF-8
        UTF-8
        2.3.7.RELEASE
    

    
    
        com.dubboscaffold
        dubboparent
        0.0.1-SNAPSHOT
        ../pom.xml
    

    

        
        
            com.dubboscaffold
            dubbo-api
            0.0.1-SNAPSHOT
        

        
        
            com.alibaba.cloud
            spring-cloud-starter-dubbo
        

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

        
        
            com.alibaba.nacos
            nacos-client
            1.2.1
        
        
            org.apache.dubbo
            dubbo-registry-nacos
            2.7.4.1
        

        
            org.springframework.boot
            spring-boot-starter
        

        
            org.springframework.boot
            spring-boot-starter-test
            test
            
                
                    org.junit.vintage
                    junit-vintage-engine
                
            
        
    


 3.4子项目dubbo-consumer修改pom文件


    4.0.0
    com.dubboscaffold
    dubbo-consumer
    0.0.1-SNAPSHOT
    dubbo-consumer
    Demo project for Spring Boot

    
        1.8
        UTF-8
        UTF-8
        2.3.7.RELEASE
    

    
    
        com.dubboscaffold
        dubboparent
        0.0.1-SNAPSHOT
        ../pom.xml
    

    

        
        
            com.dubboscaffold
            dubbo-api
            0.0.1-SNAPSHOT
        

        
            org.springframework.boot
            spring-boot-starter-web
            2.5.5
        

        
        
            org.springframework.boot
            spring-boot-starter
        

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

        
        
            com.alibaba.nacos
            nacos-client
            1.2.1
        
        
            org.apache.dubbo
            dubbo-registry-nacos
            2.7.4.1
        

    


 3.5刷新maven看是否有报错

如果有报错看看是不是直接复制进去的,因为是直接从网上拷贝过来粘贴在pom.xml中的可能格式会有冲突

 3.6在父项目下编译整个项目

 当控制台出现如上图所示的结果,证明整个项目关联成功。

4、dubbo接入nacos的简单应用

        建立服务提供者,消费者,消费者通过nacos调用服务。

        需要搭建提前将nacos环境搭好。快速搭建可以参考下文链接:

        ​​​​​​​Nacos快速部署_六木老师的博客-CSDN博客

4.1 dubbo-api创建接口

application.yml  

spring:
  application:
    name: dubbo-api

TestService 

package com.dubboscaffold.dubboapi.api;

public interface TestService {

    String sayhello();
}
4.2 dubbo-provider创建服务

 application.yml 

spring:
  application:
    name: dubbo-provider
server:
  port: 8081

# dubbo 配置项,对应 DubboConfigurationProperties 配置类
dubbo:
  # Dubbo 应用配置
  application:
    name: user-service-provider # 应用名
  # Dubbo 注册中心配
  registry:
    address: nacos://192.168.160.128:8848 # 注册中心地址
  # Dubbo 服务提供者协议配置
  protocol:
    port: -1 # 协议端口。使用 -1 表示随机端口。
    name: dubbo # 使用 `dubbo://` 协议。更多协议,可见 http://dubbo.apache.org/zh-cn/docs/user/references/protocol/introduction.html 文档
  # Dubbo 服务提供者配置
  provider:
    timeout: 1000 # 【重要】远程服务调用超时时间,单位:毫秒。默认为 1000 毫秒
    TestService:
      version: 1.0.0
  # 配置扫描 Dubbo 自定义的 @Service 注解,暴露成 Dubbo 服务提供者
  scan:
    base-packages: com.dubboscaffold.dubboprovider.service.impl

TestServiceImpl

package com.dubboscaffold.dubboprovider.service.impl;

import com.dubboscaffold.dubboapi.api.TestService;
import org.apache.dubbo.config.annotation.Service;
import org.springframework.stereotype.Component;

@Component
@Service(version = "${dubbo.provider.TestService.version}")
public class TestServiceImpl implements TestService {

    @Override
    public String sayhello() {
        return "Hello Dubbo!!!";
    }
}
4.3dubbo-consumer创建消费者

application.yml 

spring:
  application:
    name: dubbo-consumer
server:
  port: 8082

# dubbo 配置项,对应 DubboConfigurationProperties 配置类
dubbo:
  # Dubbo 应用配置
  application:
    name: user-service-consumer # 应用名
  # Dubbo 注册中心配置
  registry:
    address: nacos://192.168.160.128:8848 # 注册中心地址
  # Dubbo 消费者配置
  consumer:
    timeout: 1000 # 【重要】远程服务调用超时时间,单位:毫秒。默认为 1000 毫秒
    TestService:
      version: 1.0.0

TestController  

package com.dubboscaffold.dubboconsumer.controller;

import com.dubboscaffold.dubboapi.api.TestService;
import org.apache.dubbo.config.annotation.Reference;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

@Controller
@RequestMapping("/test")
public class TestController {

    @Reference(version = "${dubbo.consumer.TestService.version}")
    private TestService testService;

    @RequestMapping("/hello")
    @ResponseBody
    public String sayHello(){
        return testService.sayhello();
    }

}
 4.4 项目启动

        启动顺序:

                1、dubbo-provider

                2、dubbo-consumer

启动成功后可以在nacos管理页面(http://127.0.0.1:8848/nacos)进行查看,服务和消费者是否已经在上面可以查询到:

浏览器调用http://127.0.0.1:8082/test/hello

 

 这样项目就成功运行了。

这样一个最基础的分布式dubbo+nacos脚手架就搭好了,后续还会继续整合其他组件。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/785424.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号