dubbo + nacos + springboot学习

单纯的记录下,怕以后忘记

nacos下载启动(windows)

nacos简介参考这里

下载nacos-server

单机模式

用单机模式(standalone),在startup.cmd中修改然后双击启动。或者在bin目录下用命令行使用命令startup.cmd -m standalone

 启动成功

集群模式

1.新建数据库,我这叫nacos

2.将conf目录下的nacos-mysql.sql导入到所建的数据库下

3.修改conf下application.properties配置文件,配置数据库地址和账号密码

 

4.复制conf目录下的cluster.conf.example去掉.example后置,然后编辑cluster.conf文件,配置集群节点

 5.在bin目录下双击启动startup.cmd,登录nacos发现只有该节点是在线状态

 6.由于配置了四个节点,所以我们需要启动四个nacos节点,把整个nacos文件夹复制三份

 分别修改conf/application.properties里端口号

 最后分别启动各个节点下的startup.cmd即可

7.随便登陆一个节点,都能看到其他节点的在线状态

springboot,一个父项目,三个子模块

1.api模块,仅提供接口

        这里提供接口 sayHello()

2.provider,服务提供者

        实现接口

@Component
@Service(version = "${service.version}")
public class DemoServiceImpl implements DemoService {
    @Override
    public String sayHello() {
        return "hello,这里是服务生产者8080";
    }
}

3.consumer,服务消费者

        远程调用生产者实现的接口

@RestController
public class DemoController {

    @Reference(version = "${service.version}",check = false)
    private DemoService service;

    @RequestMapping("/consumer/test")
    public String getInfo(){
        return service.sayHello();
    }
}

父模块pom文件主要内容

<modules>
        <module>dubbo-consumer</module>
        <module>dubbo-provider</module>
        <module>api</module>
    </modules>

    <properties>
        <java.version>1.8</java.version>
        <project.build.sourceEncoding>utf-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <dubbo.version>2.7.1</dubbo.version>
        <nacos.version>1.0.0</nacos.version>
    </properties>

    <dependencyManagement>
        <dependencies>
            <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>
            <dependency>
                <groupId>com.alibaba.nacos</groupId>
                <artifactId>nacos-client</artifactId>
                <version>${nacos.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.dubbo</groupId>
                <artifactId>dubbo-registry-nacos</artifactId>
                <version>${dubbo.version}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>

子项目pom文件内容,消费者和服务生产者一样

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

        <!--引入公共接口模块-->
        <dependency>
            <groupId>${project.groupId}</groupId>
            <artifactId>api</artifactId>
            <version>${project.version}</version>
        </dependency>

        <!--duboo+nacos-->
        <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.nacos</groupId>
            <artifactId>nacos-client</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-registry-nacos</artifactId>
        </dependency>
    </dependencies>

两个子模块的application.yml配置文件

server:
  port: 8090
spring:
  application:
    name: consumer
dubbo:
  registry:
    address: nacos://127.0.0.1:8848 #注册地址
  application:
    name: consumer #应用名
  consumer:
    timeout: 30000 #超时时间
service:
  version: 0.0.1-SNAPSHOT #自定义的版本,和消费者模块保持一致

启动消费者

启动两个生产者,可以打包后使用命令启动。或者用idea如下方式启动多个

 启动一次后需要改配置文件中的端口再启动一次,

 此时nacos上的生产者会有多个实例

用postman调用接口,远程调用成功,dubbo默认负载均衡策略是随机,所以会随机调用到两个生产者中的一个。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值