微服务架构系列:Spring Cloud Alibaba Nacos 整合 Dubbo

之前的文章中,无论我们学习 Eureka、Consul 还是 Nacos,负责服务间通信的功能都是由 Ribbon 来完成的,接下来我们使用 Dubbo 来替换 Ribbon。
本文作者:哈喽沃德先生,欢迎关注哈喽沃德先生

一、聚合工程

dubbo-demo 聚合工程。SpringBoot 2.3.0.RELEASE、Spring Cloud Hoxton.SR5。

项目结构如下图,简单介绍一下:

service-api:服务接口
product-service:商品服务,服务提供者,提供了 /product/list 接口
order-service:订单服务,服务消费者,远程调用商品服务

在这里插入图片描述

1、依赖关系

dubbo-demo 的 pom.xml



         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    4.0.0

    
    com.example
    
    dubbo-demo
    pom
    
    1.0-SNAPSHOT
    
        service-api
        product-service
        order-service
    

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

    
    
        
        Hoxton.SR5
        
        2.1.0.RELEASE
    

    
    
        
            
            
                org.springframework.cloud
                spring-cloud-dependencies
                ${spring-cloud.version}
                pom
                import
            

            
            
                com.alibaba.cloud
                spring-cloud-alibaba-dependencies
                ${spring-cloud-alibaba.version}
                pom
                import
            
        
    

service-api 的 pom.xml



         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    
        dubbo-demo
        com.example
        1.0-SNAPSHOT
    
    4.0.0

    service-api

    
        
        
            org.projectlombok
            lombok
        
    

product-service 需要依赖 Nacos 和 Dubbo 的依赖,还有 service-api 的依赖,完整依赖如下:



         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

    
    
        dubbo-demo
        com.example
        1.0-SNAPSHOT
    
    4.0.0

    product-service

    
    
        
        
            com.alibaba.cloud
            spring-cloud-starter-alibaba-nacos-discovery
        
        
        
            com.alibaba.cloud
            spring-cloud-alibaba-dubbo
        
        
        
            org.springframework.boot
            spring-boot-starter-web
        
        
        
            com.example
            service-api
            1.0-SNAPSHOT
        

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

order-service 需要依赖 Nacos 和 Dubbo 的依赖,还有 service-api 的依赖,完整依赖如下:

 
 


         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

    
    
        dubbo-demo
        com.example
        1.0-SNAPSHOT
    
    4.0.0

    order-service

    
    
        
        
            com.alibaba.cloud
            spring-cloud-starter-alibaba-nacos-discovery
        
        
        
            com.alibaba.cloud
            spring-cloud-alibaba-dubbo
        
        
        
            org.springframework.boot
            spring-boot-starter-web
        
        
        
            com.example
            service-api
            1.0-SNAPSHOT
        

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

 

二、定义服务接口

我们在 service-api 模块中定义实体类和服务接口信息。

1、实体类

Product.java

package com.example.product.pojo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Product implements Serializable {

    private Integer id;
    private String productName;
    private Integer productNum;
    private Double productPrice;

}

Order.java

package com.example.product.pojo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.util.List;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Order implements Serializable {

    private Integer id;
    private String orderNo;
    private String orderAddress;
    private Double totalPrice;
    private List productList;

}

 

2、服务接口

package com.example.product.service;

import com.example.product.pojo.Product;

import java.util.List;

/**
 * 商品服务
 */
public interface ProductService {

    /**
     * 查询商品列表
     *
     * @return
     */
    List selectProductList();

}

三、定义服务提供者

配置文件

配置文件需要配置 Nacos 注册中心和 Dubbo 相关信息,核心配置如下:

server:
  port: 7070 # 端口

spring:
  application:
    name: product-service # 应用名称
  # 配置 Nacos 注册中心
  cloud:
    nacos:
      discovery:
        enabled: true # 如果不想使用 Nacos 进行服务注册和发现,设置为 false 即可
        server-addr: 127.0.0.1:8848 # Nacos 服务器地址,单机版

# Dubbo
dubbo:
  # 提供方应用信息,用于计算依赖关系
  application:
    name: product-service
  # 使用 nacos 注册中心暴露服务地址
  registry:
    protocol: nacos
    address: spring-cloud://localhost
  # 用 dubbo 协议在 20880 端口暴露服务
  protocol:
    name: dubbo
    port: 20880
  # 扫描需要暴露的服务,可以被 @EnableDubbo 注解替代
  #scan:
  #  base-packages: com.example.service

四、定义服务消费者

省略

五、测试

省略,如需学习或者获取资料完整的springcloud alibaba视频教程和java微服务课程,请点击此处。

 

你可能感兴趣的:(微服务架构系列:Spring Cloud Alibaba Nacos 整合 Dubbo)