春ブーツ2.xの基本ケース:ダボ2.7.3 + Nacos1.1.3の統合

この記事のマインドマッピング

1.概要

この記事では、構成および登録センター、登録サービスと消費者ダボの実装としてナコスで、春ブート2.xバージョンに基づく方法を説明します。

統合されたコンポーネントのリリースノート:

  • Spring Boot 2.1.9
  • Dubbo 2.7.3
  • Nacos 1.1.3

記事のハイライト:

  • 1. YML方法のダボの設定を使用します。
  • 新しいバージョンを使用して、関連するコンポーネントの2.統合。
  • Githubの上に置く3.関連のソースは、常に見ることができます。

ソースコードはGithubに配置されます。  https://github.com/raysonfang/spring-boot-demo-all


会社の前に、登録センターとして飼育係を使用して、ダボ2.6.1を使用した場合。その時、ようやくそれを取るし、登録センターとして使用し、管理の背景には、特定の可視化管理業務ではありません、そして第二に、単一の機能は、登録センターとしてのみ使用します。

一定の期間を通じて学び、理解した後に、登録センターや外部の物流センターとしてオープンソースナコスアリの使用ことがわかりました。それは、登録と設定サービスのために適し以上で飼育係、結局、たくさんの練習の後、オープンソースのメーカーです。

あなたは何ナコスがあるか、どのようなアーキテクチャと設計の主要な機能を持っているがわからない場合。自分のデータをチェックする時間を取ります。

ナコス:

注意:此次主要实践Nacos作为注册中心,后面会单独整合Nacos作为配置中心的实践分享。


図2に示すように、ベースフレーム構造

マルチモジュールプロジェクトを構築するためのアイデア+ Mavenを使用してください

春・ブート・ダボ-nacos-デモ: 親プロジェクト

サービス・プロバイダ・ショップ:  ダボサービスプロバイダ

消費者サービスショップ:  ダボサービスの消費者は、Webプロジェクトであります


3、のpom.xml説明

:春ブートダボ-ナコス-デモの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>cn.raysonblog</groupId> <artifactId>misco-dubbo</artifactId> <version>0.0.1-SNAPSHOT</version> <name>misco-dubbo</name> <packaging>pom</packaging> <description>Demo project for Spring Boot Dubbo Nacos</description> <modules> <module>shop-service-provider</module> <module>shop-service-consumer</module> </modules> <properties> <java.version>1.8</java.version> <spring-boot.version>2.1.9.RELEASE</spring-boot.version> <dubbo.version>2.7.3</dubbo.version> </properties> <dependencyManagement> <dependencies> <!-- 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> <!-- Apache Dubbo --> <dependency> <groupId>org.apache.dubbo</groupId> <artifactId>dubbo-dependencies-bom</artifactId> <version>${dubbo.version}</version> <type>pom</type> <scope>import</scope> </dependency> <!-- Dubbo Spring Boot Starter --> <dependency> <groupId>org.apache.dubbo</groupId> <artifactId>dubbo-spring-boot-starter</artifactId> <version>${dubbo.version}</version> </dependency> <dependency> <groupId>org.apache.dubbo</groupId> <artifactId>dubbo</artifactId> <version>${dubbo.version}</version> <exclusions> <exclusion> <groupId>org.springframework</groupId> <artifactId>spring</artifactId> </exclusion> <exclusion> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> </exclusion> <exclusion> <groupId>log4j</groupId> <artifactId>log4j</artifactId> </exclusion> </exclusions> </dependency> </dependencies> </dependencyManagement> <repositories> <repository> <id>apache.snapshots.https</id> <name>Apache Development Snapshot Repository</name> <url>https://repository.apache.org/content/repositories/snapshots</url> <releases> <enabled>false</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </repository> </repositories> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project> 

-サービス・プロバイダ・ショップ:  関連ナコスを導入するの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>cn.raysonblog</groupId> <artifactId>misco-dubbo</artifactId> <version>0.0.1-SNAPSHOT</version> <relativePath>../pom.xml</relativePath> <!-- lookup parent from repository --> </parent> <groupId>cn.raysonblog</groupId> <artifactId>shop-service-provider</artifactId> <version>0.0.1-SNAPSHOT</version> <name>shop-service-provider</name> <description>服务者 Demo project for Spring Boot dubbo nacos</description> <properties> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> <exclusions> <!-- 排除自带的logback依赖 --> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-logging</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-log4j2</artifactId> </dependency> <!--<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </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> <!-- Dubbo --> <dependency> <groupId>org.apache.dubbo</groupId> <artifactId>dubbo-spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.apache.dubbo</groupId> <artifactId>dubbo</artifactId> </dependency> <!-- Dubbo Registry Nacos --> <dependency> <groupId>org.apache.dubbo</groupId> <artifactId>dubbo-registry-nacos</artifactId> <version>2.7.3</version> </dependency> <dependency> <groupId>com.alibaba.nacos</groupId> <artifactId>nacos-client</artifactId> </dependency> </dependencies> <repositories> <repository> <id>apache.snapshots.https</id> <name>Apache Development Snapshot Repository</name> <url>https://repository.apache.org/content/repositories/snapshots</url> <releases> <enabled>false</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </repository> </repositories> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project> 

shop-service-consumer: 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>cn.raysonblog</groupId> <artifactId>misco-dubbo</artifactId> <version>0.0.1-SNAPSHOT</version> <relativePath>../pom.xml</relativePath> <!-- lookup parent from repository --> </parent> <groupId>cn.raysonblog</groupId> <artifactId>shop-service-consumer</artifactId> <version>0.0.1-SNAPSHOT</version> <name>shop-service-consumer</name> <description>Demo project for Spring Boot dubbo nacos</description> <properties> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions> <!-- 排除自带的logback依赖 --> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-logging</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-log4j2</artifactId> </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> <dependency> <groupId>org.apache.dubbo</groupId> <artifactId>dubbo-spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.apache.dubbo</groupId> <artifactId>dubbo</artifactId> </dependency> <!-- Dubbo Registry Nacos --> <dependency> <groupId>org.apache.dubbo</groupId> <artifactId>dubbo-registry-nacos</artifactId> <version>2.7.3</version> </dependency> <dependency> <groupId>com.alibaba.nacos</groupId> <artifactId>nacos-spring-context</artifactId> </dependency> <dependency> <groupId>com.alibaba.nacos</groupId> <artifactId>nacos-client</artifactId> </dependency> <dependency> <groupId>cn.raysonblog</groupId> <artifactId>shop-service-provider</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency> </dependencies> <repositories> <repository> <id>apache.snapshots.https</id> <name>Apache Development Snapshot Repository</name> <url>https://repository.apache.org/content/repositories/snapshots</url> <releases> <enabled>false</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </repository> </repositories> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project> 

4、配置文件说明

网上大部分资料都是基于application.properties配置,或者是基于xml配置dubbo的相关参数。而实际上,在Spring Boot工程中,
shop-service-provider:application.yml配置文件说明


spring:
  application:
    name: shop-service-provider
# log config logging:  config: classpath:log4j2.xml  level:  root: info  web: info  file: logs/shop-service-provider.log # Dubbo Application nacos ## The default value of dubbo.application.name is ${spring.application.name} ## dubbo.application.name=${spring.application.name} nacos:  service-address: 127.0.0.1  port: 8848 dubbo:  registry:  address: nacos://${nacos.service-address}:${nacos.port}  protocol:  name: dubbo  port: 20881  scan:  base-packages: cn.raysonblog.*.service.impl

shop-service-consumer: application.yml说明

server:
  address:
  port: 8081
 servlet:  context-path: /  tomcat:  uri-encoding: UTF-8 spring:  application:  name: shop-service-consumer # log config logging:  config: classpath:log4j2.xml  level:  root: info  web: info  file: logs/shop-service-provider.log # Dubbo Application nacos ## The default value of dubbo.application.name is ${spring.application.name} ## dubbo.application.name=${spring.application.name} nacos:  service-address: 127.0.0.1  port: 8848 dubbo:  registry:  address: nacos://${nacos.service-address}:${nacos.port}

dubbo相关参数:也可以在DubboConfigurationProperties类中查看


5、编写业务代码

shop-service-provider:代码实现

针对dubbo服务提供者,我没有单独把RpcShopService接口单独放到一个子模块提供,建议在引用到实际项目中,可以单独提供接口包,在消费端直接引用接口包,这样就可以脱离服务提供者。

ShopServiceProviderApplication.java启动主类

package cn.raysonblog.shopserviceprovider;

import org.apache.dubbo.config.spring.context.annotation.DubboConfigConfiguration;
import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; import java.util.concurrent.CountDownLatch; /** * dubbo 服务提供方 * @author raysonfang * @公众号 Java技术干货(ID:raysonfang) */ @SpringBootApplication @EnableDubbo public class ShopServiceProviderApplication { //使用jar方式打包的启动方式 private static CountDownLatch countDownLatch = new CountDownLatch(1); public static void main(String[] args) throws InterruptedException{ SpringApplication.run(ShopServiceProviderApplication.class, args).registerShutdownHook(); countDownLatch.await(); } }

需要注意@EnableDubbo这个注解,是开启Dubbo服务必要的。


RpcShopService.java:暴露接口,供消费端使用

package cn.raysonblog.shopserviceprovider.service;

/**
 * 提供暴露的Rpc接口
 * @author raysonfang
 */
public interface RpcShopService { String sayHello(String name); } 

ShopServiceImpl.java: 实现类

package cn.raysonblog.shopserviceprovider.service.impl;

import cn.raysonblog.shopserviceprovider.service.RpcShopService;
import org.apache.dubbo.config.annotation.Service;

/**
 * 接口实现类
 *
 * ## @Service 这个注解是使用dubbo提供的, * 这个注解中有很多属性,需要单独了解去进行配置 * * @author raysonfang */ @Service public class ShopServiceImpl implements RpcShopService { public String sayHello(String name) { return name; } } 

shop-service-consumer: 代码实现
package cn.raysonblog.shopserviceconsumer;

import cn.raysonblog.shopserviceprovider.service.RpcShopService;
import org.apache.dubbo.config.annotation.Reference;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; /** * * 把主类和controller写在一起,方便简单测试演示。 * * @author raysonfang */ @SpringBootApplication @RestController public class ShopServiceConsumerApplication { @Reference RpcShopService shopService; @RequestMapping(name = "/sayHello", method = RequestMethod.GET) public String sayHello(){ return shopService.sayHello("Hello Dubbo Nacos!更多原创分享,技术交流,关注:Java技术干货(ID:raysonfang)"); } public static void main(String[] args) { SpringApplication.run(ShopServiceConsumerApplication.class, args); } } 

6、测试

测试的时候,启动顺序
ブートシーケンス

6.1、启动nacos-server注册中心

下载nacos-server:https://github.com/alibaba/nacos/releases

ナコスサーバのダウンロード

解压nacos-server, 找到bin目录

windows点击startup.cmd, 启动nacos
ナコスサーバ

在浏览器中输入:http://localhost:8848/nacos/index.html, 便可以访问到nacos的控制台。用户名和密码默认为nacos

6.2、启动shop-service-provider服务提供者

在nacos控制台可以看到信息:

6.3、ショップサービス - 消費者向けサービスコンシューマを開始

ナコスコンソールで以下の情報を見ることができます:

:ブラウザの入力でHTTP:// localhostを:8081 /のsayHello、それは結果を返します。


7、記録し、問題を解決します

7.1、積分時間、ポンポン導入ダボとナコス依存パッケージは、それは多くを見つけるために時間がかかります。主にパッケージが失敗し紹介しています。

解決策:失敗した依存関係、再再インポートの導入を削除し、ローカルのMavenの依存関係に進みます。

7.2、オープンダボは、ノートの見積もりが正しくない場合:エラー注入@EnableDubboConfig

解決策:使用して、交換@EnableDubbo

7.3は、YML構成ダボ関連の属性は、オンラインの情報は非常に薄いです。

溶液:を見てDubboConfigurationProperties.java構成の特性を分析するために、ソースコード。

おすすめ

転載: www.cnblogs.com/tiandanMp/p/11647668.html