Springboot3.0.5+SpringCloud2022.0.2+Dubbo3.2.0+nacos2.2.1整合

目標及軟件版本

目標

  1. dubbo和spring共同使用nacos為注冊中心
  2. springboot、springcloud、dubbo、nacos都為比較新的版本

環(huán)境及版本要求:

  1. jdk版本:17,使用jdk17的原因是springboot3必須使用jdk17
  2. springcloud版本:2022.0.2,IDEA中能夠使用到的最新springboot的spring-cloud-dependencies版本
  3. sprinbcloud-alibaba版本:2022.0.0.0-RC1,阿里提供的最新的spring-cloud-alibaba-dependencies版本
  4. apache dubbo版本:3.2.0-beta.6,apache提供的最新的dubbo-bom版本
  5. springboot版本:3.0.5,IDEA中能夠使用到的最新spring-boot-dependencies版本
  6. nacos版本:2.2.1,阿里提供最新的nacos服務版本

所謂最新也只不過是截止到當前日期:2023-04-02 18:12


開始整事兒

搭建nacos服務

  • 阿里官方nacos的安裝和下載在這里:https://nacos.io/zh-cn/docs/quick-start.html,需要自行選擇naocs版本為2.2.1進行安裝
  • nacos將使用數(shù)據(jù)庫方式,在本示例中使用的數(shù)據(jù)庫為MySql,版本為8.0.31-0ubuntu0.22.04.1
  • nacos開啟鑒權訪問,配置文件nacos/conf/application.properties中修改的地方如下:
# 數(shù)據(jù)庫連接配置,原來這三項是注釋了的,去掉前面的"#"號
# 數(shù)據(jù)庫連接地址及數(shù)據(jù)庫名稱根據(jù)自己實際情況修改
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
# 數(shù)據(jù)庫的用戶名及密碼根據(jù)自己的實際情況修改
db.user.0=root
db.password.0=rootPassword

# 原來該配置的為false,開啟nacos接入鑒權,這行最為關鍵
nacos.core.auth.enabled=true

# 當nacos.core.auth.enabled設置為true之后,下面兩項必須給值,原來的以下兩項都沒有值,可以直接使用下面的值,不報錯
nacos.core.auth.server.identity.key=serverIdentity
nacos.core.auth.server.identity.value=security

# 原來這項配置為空,key還必須為base64,就用以下這個key可以不報錯
nacos.core.auth.plugin.nacos.token.secret.key=SecretKey012345678901234567890123456789012345678901234567890123456789
  • 以上就是Nacos服務的配置需要修改的地方了,其他的配置暫時保持不變

IDEA創(chuàng)建父工程springboot-dubo-feign-nacos-demo

  • 父工程的pom.xml如下
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.cyp</groupId>
    <artifactId>springboot-dubo-feign-nacos-demo</artifactId>
    <version>1.0-SNAPSHOT</version>
    <name>springboot-dubo-feign-nacos-demo</name>
    <description>springboot-dubo-feign-nacos-demo</description>
    <packaging>pom</packaging>

    <properties>
        <java.version>17</java.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <spring-boot.version>3.0.5</spring-boot.version>
        <spring-cloud.version>2022.0.2</spring-cloud.version>
        <spring-cloud-alibaba.version>2022.0.0.0-RC1</spring-cloud-alibaba.version>
        <dubbo.version>3.2.0-beta.6</dubbo.version>
    </properties>

    <modules>
        <module>springboot-dubbo-feign-nacos-interface</module>
        <module>springboot-dubbo-feign-nacos-producer</module>
        <module>springboot-dubbo-feign-nacos-consumer</module>
    </modules>

    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bootstrap</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>
        
        <!-- openfeign -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-loadbalancer</artifactId>
        </dependency>
        
        <!-- nacos配置中心 -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>

        <!-- 額外的工具 -->
        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>5.8.11</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <dependencyManagement>
        <dependencies>
            <!-- spring cloud 及 spring boot-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring-boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            
            <!-- nacos alibaba cloud -->
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>${spring-cloud-alibaba.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        
            <!-- apache dubbo -->
            <dependency>
                <groupId>org.apache.dubbo</groupId>
                <artifactId>dubbo-bom</artifactId>
                <version>${dubbo.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
</project>
  • 父工程中不需要有自己的任何目錄及代碼,里面用來放它的子工程就好,如下圖所示


    image.png

創(chuàng)建接口模塊工程springboot-dubbo-feign-nacos-interface

  • 該模塊中只定義dubbo暴露的接口和用于對比性能的openfeign的FeignClient注釋的接口
  • 接口模塊的pom.xml如下
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>com.cyp</groupId>
        <artifactId>springboot-dubo-feign-nacos-demo</artifactId>
        <version>1.0-SNAPSHOT</version>
    </parent>

    <artifactId>springboot-dubbo-feign-nacos-interface</artifactId>
    <version>1.0</version>
    <name>springboot-dubbo-feign-nacos-interface</name>
    <description>springboot-dubbo-feign-nacos-interface</description>
    <packaging>jar</packaging>
</project>
  • 創(chuàng)建幾個目錄,一個目錄用于存放dubbo的接口,一個用于存放openfeign的接口,一個用于存放接口傳遞的公共Pojo,目錄結構如下圖所示:


    image.png
  • IEchoDubbo內容如下:
public interface IEchoDubbo {
    R<EchoDTO> echo(R<EchoDTO> dto);
}
  • IEchoFeign內容如下:
@FeignClient(name = "producer-server", contextId = "IEchoFeign", fallback = IEchoFeignFallback.class)
public interface IEchoFeign {

    @PostMapping("/producer/echo/get")
    R<EchoDTO> echo(@RequestBody R<EchoDTO> dto);
}
  • IEchoFeignFallback內容如下:
@Component
public class IEchoFeignFallback implements IEchoFeign {
    @Override
    public R<EchoDTO> echo(R<EchoDTO> dto) {
        return new R<>();
    }
}
  • R內容如下:
@Data
public class R<T> implements Serializable {
    private Integer code;
    private String msg;
    private T data;
}
  • EchoDTO內容如下:
@Data
public class EchoDTO implements Serializable {
    private String name;
    private Map<String, String> map;
}

創(chuàng)建服務提供模塊springboot-dubbo-feign-nacos-producer

  • 該模塊中提供服務實現(xiàn),實質就是對模塊springboot-dubbo-feign-nacos-interface中的接口進行具體的實現(xiàn),目錄結構如下圖所示:
    image.png
  • 該模塊中的pom.xml內容如下:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>com.cyp</groupId>
        <artifactId>springboot-dubo-feign-nacos-demo</artifactId>
        <version>1.0-SNAPSHOT</version>
    </parent>

    <artifactId>springboot-dubbo-feign-nacos-producer</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>springboot-dubbo-feign-nacos-producer</name>
    <description>springboot-dubbo-feign-nacos-producer</description>
    <packaging>jar</packaging>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>com.cyp</groupId>
            <artifactId>springboot-dubbo-feign-nacos-interface</artifactId>
            <version>1.0</version>
        </dependency>

        <!-- dubbo -->
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
        </dependency>

        <!-- 以下兩個引用是把dubbo的注冊中心由它原生的zookeeper改為nacos的關鍵引用 -->
        <dependency>
            <groupId>com.alibaba.nacos</groupId>
            <artifactId>nacos-client</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo</artifactId>
        </dependency>

        <!-- 按照官方的說法,要么引用上面的nacos-client和dubbo,要么引用下面dubbo-registry-nacos -->
        <!-- 但是當我使用下面的引用,去掉上面的引用,項目也能啟動,但是在啟動的過程中,會提示有些類存在于多個地方 -->
        <!-- 但是當我使用上面的兩個引用(也是官方給的示例), 項目正常啟動且不會報錯 -->
        <!-- Introduce Dubbo Nacos extension, or you can add Nacos dependency directly as shown above 這段話是官方的原注釋 -->
        <!--
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-registry-nacos</artifactId>
        </dependency>
        -->
    </dependencies>

    <build>
        <finalName>app</finalName>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>
  • 該模塊的bootstrap.yml配置內容如下:
server:
  port: 8081
spring:
  application:
    name: producer-server
  profiles:
    active: test
  cloud:
    nacos:
      username: nacos
      password: nacos
      # 照抄的朋友們,請將127.0.0.1及8848改為你們的nacos配置的地址和端口
      server-addr: 127.0.0.1:8848
      config:
        # 照抄的朋友們,請將以下配置改為你們nacos中對應的配置
        group: DEFAULT_GROUP
        prefix: application
        file-extension: yaml
        namespace: 4977df2a-9d19-4060-b82f-4d695704e165
dubbo:
  application:
    # 此處沒有延用spring.application.name是因為當前項目本身也會注冊到nacos中,如果dubbo也延用相同的名稱,在nacos服務里會看到注冊的producer-server服務數(shù)為2
    # 我個人認為這會造成服務混亂,畢竟一個是該服務本身,一個是dubbo相互調用要使用的注冊
    # 如果我的理解是錯誤的,希望朋友們在評論中給予指定,目前這樣配置之后,會在nacos中看到該服務注冊了兩個,一個是producer-server,另一個是producer-dubbo-server
    name: producer-dubbo-server
  protocol:
    name: dubbo
    port: -1
  registry:
    # 配置dubbo的注冊中心為nacos
    address: nacos://${spring.cloud.nacos.server-addr}
    username: ${spring.cloud.nacos.username}
    password: ${spring.cloud.nacos.password}
    group: ${spring.cloud.nacos.config.group}
  metadata-report:
    # 貌似下面這個配置也沒什么作用
    group: ${spring.cloud.nacos.config.group}
    parameters:
      # 貌似想配置dubbo注冊到nacos的指定namespace下,好像不太行,即使這樣配置了,也是在public下,如果有朋友知道如何配置,希望在評論中給予指正
      namespace: ${spring.cloud.nacos.config.namespace}
  • 啟動主類SpringbootDubboFeignNacosProducerApplication內容如下:
@SpringBootApplication
@EnableDiscoveryClient
@EnableDubbo(scanBasePackages = "com.cyp.springbootdubbofeignnacosproducer.dubboapi")
public class SpringbootDubboFeignNacosProducerApplication {
    public static void main(String[] args) {
        SpringApplication.run(SpringbootDubboFeignNacosProducerApplication.class, args);
    }
}
  • dubbo接口實現(xiàn)EchoDubboApi內容如下:
@DubboService
public class EchoDubboApi implements IEchoDubbo {
    @Override
    public R<EchoDTO> echo(R<EchoDTO> dto) {
        return dto;
    }
}
  • openfeign接口實現(xiàn)EchoFeignApi內容如下:
@RestController
public class EchoFeignApi implements IEchoFeign {
    @Override
    public R<EchoDTO> echo(R<EchoDTO> dto) {
        return dto;
    }
}

創(chuàng)建服務消費模塊springboot-dubbo-feign-nacos-consumer

  • 該模塊主要結構如下:


    image.png
  • 該模塊的pom.xml內容如下:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>com.cyp</groupId>
        <artifactId>springboot-dubo-feign-nacos-demo</artifactId>
        <version>1.0-SNAPSHOT</version>
    </parent>

    <artifactId>springboot-dubbo-feign-nacos-consumer</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>springboot-dubbo-feign-nacos-consumer</name>
    <description>springboot-dubbo-feign-nacos-consumer</description>
    <packaging>jar</packaging>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>com.cyp</groupId>
            <artifactId>springboot-dubbo-feign-nacos-interface</artifactId>
            <version>1.0</version>
        </dependency>

        <!-- dubbo -->
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
        </dependency>
      
        <!-- dubbo注冊中心改為nacos的關鍵引用 -->
        <dependency>
            <groupId>com.alibaba.nacos</groupId>
            <artifactId>nacos-client</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo</artifactId>
        </dependency>

        <!-- Introduce Dubbo Nacos extension, or you can add Nacos dependency directly as shown above-->
           <!--<dependency>
               <groupId>org.apache.dubbo</groupId>
               <artifactId>dubbo-registry-nacos</artifactId>
           </dependency>-->
    </dependencies>

    <build>
        <finalName>app</finalName>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>
  • 該模塊的配置bootstrap.yml內容如下:
server:
  port: 8080
spring:
  application:
    name: consumer-server
  profiles:
    active: test
  cloud:
    nacos:
      username: nacos
      password: nacos
      # 照抄的朋友們,請把nacos的配置改為你們實際的nacos配置
      server-addr: 127.0.0.1:8848
      config:
        group: DEFAULT_GROUP
        prefix: application
        file-extension: yaml
        namespace: 4977df2a-9d19-4060-b82f-4d695704e165
dubbo:
  application:
    name: consumer-dubbo-server
    # 該配置在producer-server中是沒有的,但是在consumer這里要配置一下
    # 如果不配置這個QOS的端口,它會延用dubbo自動生成的端口,在啟動的時候,QOS注冊就會提示該端口已經被使用的錯誤
    # 雖然啟動時有打印端口已經被使用的錯誤,但是依舊可以正常啟動服務,并且dubbo也可以正常調用,但是為了解決啟動報錯還是加上這個端口
    # 這個也是apache官方給出的解決方案,這個端口不能給-1,它不會自動找到一個可用的端口,給-1會報錯,端口1-65535自己選擇一個
    qos-port: 3334
  protocol:
    name: dubbo
    # port為-1表示自動找一個可用的端口
    port: -1
  registry:
    address: nacos://${spring.cloud.nacos.server-addr}
    username: ${spring.cloud.nacos.username}
    password: ${spring.cloud.nacos.password}
    group: ${spring.cloud.nacos.config.group}
    protocol: nacos
  metadata-report:
    group: ${spring.cloud.nacos.config.group}
    parameters:
      namespace: ${spring.cloud.nacos.config.namespace}
  • 該模塊的啟動類SpringbootDubboFeignNacosConsumerApplication內容如下:
@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients(basePackages = "com.cyp.springbootdubbofeignnacosinterface.feign")
@EnableDubbo
public class SpringbootDubboFeignNacosConsumerApplication {
    public static void main(String[] args) {
        SpringApplication.run(SpringbootDubboFeignNacosConsumerApplication.class, args);
    }
}
  • 該模塊的EchoApi內容如下:
@Slf4j
@RestController
@RequestMapping("/test")
@RequiredArgsConstructor
public class EchoApi {
    // 用于性能測試的對象
    private final static R<EchoDTO> DTO = getR();
    // openfeignClient直接使用構造注入 
    private final IEchoFeign echoFeign;
    // dubbo服務要使用@DubboReference注解
    @DubboReference
    private IEchoDubbo echoDubbo;

    @GetMapping("/feign")
    public void echoFeign() {
        StopWatch watch = new StopWatch();
        watch.start();
        IntStream.range(0, 100).forEach(a -> {
            R<EchoDTO> feignR = echoFeign.echo(DTO);
        });
        watch.stop();
        log.info("feign use {} ms", watch.getLastTaskTimeMillis());
    }

    @GetMapping("/dubbo")
    public void echoDubbo() {
        StopWatch watch = new StopWatch();
        watch.start();
        IntStream.range(0, 100).forEach(a -> {
            R<EchoDTO> feignR = echoDubbo.echo(DTO);
        });
        watch.stop();
        log.info("dubbo use {} ms", watch.getLastTaskTimeMillis());
    }

    private static R<EchoDTO> getR() {
        try {
            EchoDTO dto = new EchoDTO();
            dto.setName("abcdefg");
            // 照抄的朋友們,請把后面的圖片改為你們本機上的某張圖片
            BufferedInputStream inputStream = FileUtil.getInputStream("E:/testImg/1.jpg");
            byte[] bt = new byte[inputStream.available()];
            inputStream.read(bt, 0, inputStream.available());
            Map<String, String> map = new HashMap<>();
            // 這里使用一張圖片放到map兩個key中的目的就是為了加大傳輸對象的體積
            // 以便于在上面的循環(huán)中測試openfeign和dubbo的性能,算是其中之一的性能測試吧
            map.put("k1", Base64.getEncoder().encodeToString(bt));
            map.put("k2", Base64.getEncoder().encodeToString(bt));
            dto.setMap(map);
            R<EchoDTO> r = new R<>();
            r.setCode(0);
            r.setMsg("aaa");
            r.setData(dto);
            return r;
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }
}

  • 通過調用springboot-dubbo-feign-nacos-consumer中的兩個api接口,可以得出dubbo在本項目中的性能測試確實高于openfeign一倍左右
    可能只是在當前場景下才只高出一倍左右,并沒能像網上說的那樣高幾十倍.這是實測的結果,有圖為證:


    image.png
  • 項目在啟動的時候,producer服務提供方必須先啟動,否則服務消費方會啟動失敗,這是使用dubbo的朋友都應該知道的規(guī)則

  • 在服務提供者啟動成功之后,nacos中可以看到produer在指定的namespace下自動創(chuàng)建了兩個配置:


    image.png
  • 并且在服務提供者啟動成功后,在nacos的服務管理-服務列表-public中可以看到dubbo服務提供者的注冊信息:


    image.png
  • 并且在正常的namespace下還有服務本身的注冊:


    微信圖片_20230403014439.png
  • 我也不知道是不是我什么地方配置錯誤了才導致這樣的注冊情況,如果有知道的朋友,歡迎您在評論中指正,畢竟我也是第一次這樣配置apache-dubbo

  • 補充一下nacos配置中心里,我的applicat-test.yaml中的內容

spring:  
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
        namespace: 4977df2a-9d19-4060-b82f-4d695704e165
        group: DEFAULT_GROUP
atest:
  name: abcdeeeee

最后,給出我做這個整合的參考的所有網站地址:

  1. dubbo整合springboot的部署官網示例,示例中的dubbo使用的注冊中心為zookeeper,只是參考了dubbo和springboot的相關引用:基于 Dubbo API 開發(fā)微服務應用 | Apache Dubbo
  2. springboot-springcloud-nacos組件的版本對應關系, 在這里弄明白這三大件之間的版本對應關系,然后在父工程pom.xml中配置相應的版本:版本說明 · alibaba/spring-cloud-alibaba Wiki · GitHub
  3. 使用阿里巴巴提供的 云原生應用腳手架 得到父工程中pom.xml的準確配置
  4. dubbo修改配置中心為Nacos:參考一 Nacos | Apache Dubbo參考二 Nacos | Apache Dubbo
  • 注意在參考一中,要求引用的只有:


    微信圖片_20230403014616.png

    如果圖片看不清楚以下是給出的引用

<dependencies>
  <dependency>
    <groupId>com.alibaba.nacos</groupId>
    <artifactId>nacos-client</artifactId>
    <version>2.1.2</version>
  </dependency>
</dependencies>
  • 在參考二中,要求引用的又不一樣:


    微信圖片_20230403014739.png

    如果圖片看不清楚以下是給出的引用

<dependency>
        <groupId>org.apache.dubbo</groupId>
        <artifactId>dubbo</artifactId>
        <version>3.0.9</version>
    </dependency>
    <dependency>
      <groupId>com.alibaba.nacos</groupId>
      <artifactId>nacos-client</artifactId>
      <version>2.1.0</version>
    </dependency>
     <!-- Introduce Dubbo Nacos extension, or you can add Nacos dependency directly as shown above-->
     <!--
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-registry-nacos</artifactId>
            <version>3.0.9</version>
        </dependency>
     -->
  • 多了一個org.apache.dubbo:dubbo的引用,但是在本項目中,去掉org.apache.dubbo:dubbo也能正常工作
  1. consumer啟動的時候,沒有添加QOS端口啟動報錯的解決參考:7-4 - QOS 服務啟動失敗 | Apache DubboQOS 概述 | Apache Dubbo
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容