微服务解决方案 -- Spring Cloud Alibaba (七)Dubbo 服务提供者

不了解此套教程的可以移步之前章节
1.微服务解决方案 – Spring Cloud Alibaba (一)服务的注册与发现
2.微服务解决方案 – Spring Cloud Alibaba (二)服务提供者
3.微服务解决方案 – Spring Cloud Alibaba (三)服务消费者(Feign)
4.微服务解决方案 – Spring Cloud Alibaba (四)服务熔断
5.微服务解决方案 – Spring Cloud Alibaba (五)分布式配置中心
6.微服务解决方案 – Spring Cloud Alibaba (六)Dubbo远程过程调用

统一的依赖


我们选择的注册中心是nacos,这里可以参照dubbo-spring-boot 项目里的sample
Github

	<properties>
    	<dubbo.version>2.7.3</dubbo.version>
        <dubbo-nacos.version>1.1.3</dubbo-nacos.version>
        <spring-boot-mapper.version>2.1.5</spring-boot-mapper.version>
        <spring-cloud.version>Greenwich.SR2</spring-cloud.version>
        <spring-cloud-alibaba.verion>2.1.0.RELEASE</spring-cloud-alibaba.verion>
        <alibaba-spring-context-support.version>1.0.2</alibaba-spring-context-support.version>
    </properties>
     <dependencies>
            <!-- Spring Cloud -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <!-- Spring Cloud Alibaba -->
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>${spring-cloud-alibaba.verion}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <!-- Apache Dubbo -->
            <dependency>
                <groupId>com.alibaba.nacos</groupId>
                <artifactId>nacos-client</artifactId>
                <version>${dubbo-nacos.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.dubbo</groupId>
                <artifactId>dubbo-registry-nacos</artifactId>
                <version>${dubbo.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.dubbo</groupId>
                <artifactId>dubbo-spring-boot-actuator</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>
            <dependency>
                <groupId>org.apache.dubbo</groupId>
                <artifactId>dubbo-serialization-kryo</artifactId>
                <version>${dubbo.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>log4j</groupId>
                        <artifactId>log4j</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.apache.dubbo</groupId>
                        <artifactId>dubbo-common</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>com.alibaba.spring</groupId>
                <artifactId>spring-context-support</artifactId>
                <version>${alibaba-spring-context-support.version}</version>
            </dependency>
    </dependencyManagement>

使用idea托管。

接口规范


提供一个接口规范,等下服务提供者需要实现接口规范,这个规范是单独一个项目。

public interface EchoService {
    String echo(String string);
}

服务提供者


服务提供者需要把统一依赖管理的pom和接口规范一起整合就可以了。

	<!--统一依赖管理是我们的父级项目-->
	<parent>
        <groupId>com.laoshiren</groupId>
        <artifactId>hello-apache-dubbo-provider</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
	...
	<!--接口规范的依赖-->
 	<!-- Spring Boot -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <!-- Spring Boot -->
        <!-- Apache Dubbo -->
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>dubbo-registry-nacos</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba.nacos</groupId>
            <artifactId>nacos-client</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba.spring</groupId>
            <artifactId>spring-context-support</artifactId>
        </dependency>

        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-serialization-kryo</artifactId>
        </dependency>

        <!-- Apache Dubbo -->
        <!-- 依赖api 项目 -->
        <!-- Projects -->
        <dependency>
            <groupId>com.laoshiren</groupId>
            <artifactId>hello-apache-dubbo-provider-api</artifactId>
            <version>${project.parent.version}</version>
        </dependency>
        <!-- Projects -->

实现接口规范

package com.laoshiren.apache.dubbo.provider.service.impl;

import com.laoshiren.apache.dubbo.provider.api.EchoService;
import org.apache.dubbo.config.annotation.Service;
import org.springframework.beans.factory.annotation.Value;

// dubbo 的@Service注解指定版本号
@Service(version = "1.0.0")
public class EchoServiceImpl implements EchoService {
    @Value("${dubbo.protocol.port}")
    private String port;
    @Override
    public String echo(String string) {
        return "Echo Hello Dubbo " + string+" port: "+port;
    }
}

配置文件

spring:
  application:
    name: hello-dubbo-provider
  main:
    allow-bean-definition-overriding: true
dubbo:
  scan:
    base-packages: com.laoshiren.apache.dubbo.provider.service
  protocol:
    name: dubbo
    ## -1 自动分配端口号
    port: 20880
  registry:
  	## 注册中心地址 
    address: nacos://192.168.0.108:8848

写一个启动类启动SpringApplication.run(xxxx.class,args);
nacos的服务里必须看到provider上线
在这里插入图片描述

发布了27 篇原创文章 · 获赞 4 · 访问量 905

猜你喜欢

转载自blog.csdn.net/weixin_42126468/article/details/103899552
今日推荐