单纯的记录下,怕以后忘记
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默认负载均衡策略是随机,所以会随机调用到两个生产者中的一个。