【springboot + dubbo + nacos集群[nginx]】
springboot + dubbo + nacos集群[nginx]
springboot启动客户端和服务端服务,RestFull接口请求验证
先贴上我的目录结构,一个客户端+两个服务端实例。

依赖
<properties>
<java.version>8</java.version>
<dubbo.version>2.7.8</dubbo.version>
<nacos.version>1.3.2</nacos.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</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</artifactId>
<version>${dubbo.version}</version>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>${dubbo.version}</version>
</dependency>
<dependency>
<groupId>com.alibaba.nacos</groupId>
<artifactId>nacos-client</artifactId>
<version>${nacos.version}</version>
</dependency>
</dependencies>
demo-consumer
demo-consumer作为消费者通过Dubbo进行RPC远程调用providers实例,这里我写了一个get请求,遍历调用两个实例方法,查看调用过程。
spring:
application:
name: demo-consumer
server:
port: 8001
demo-provider1 + demo-provider2
提供service服务方法,结合dubbo提供给consumer
spring:
application:
name: demo-provider2
server:
port: 8003
dubbo进行RPC远程调用
服务端
在nacos注册服务
dubbo:
registry:
address: nacos://localhost:18848,localhost:18858,localhost:18868
scan:
base-packages: com.*.impl
consumer:
retries: 0
protocol:
name: dubbo
port: -1
provider:
payload: 838860800
此处用的@DubboService注解
客户端
在nacos上获取服务
dubbo:
registry:
address: nacos://localhost:8004
consumer:
check: false # true必须存在服务 false注册中心中无服务也可以启动,在调用时检查
retries: 0
通过@DubboReference注解注入服务接口,该接口文件需要写一份
nacos服务注册中心
单例模式
1、设置单例模式
方式一、修改/nacos/bin/startup.cmd, 设置模式为standalone,即单例模式,双击startup.cmd文件启动
方式二、不修改/nacos/bin/startup.cmd,启动命令使用 startup.cmd -m standalone
2、修改/nacos/conf/application.properties文件中的server.port端口号,也可以不改 默认8848
3、启动nacos,浏览器访问localhost:8848/nacos,进入nacos控制台
4、启动springboot程序,前面截图都是集群模式配置,单例模式需要修改springboot配置文件中的dubbo.registry.address 改为 nacos://localhost:8848, 这里我启动了demo-consumer、demo-provider1、demo-provider1,查看nacos控制台providers有两个实例,consumer一个客户端
5、springboot的RestFull接口查看调用过程, demo-consumer中写一个get请求接口,浏览器输入 http://localhost:8001/test/testHello/曾经被照亮,欣然变成光 。 查看两个实例的访问打印结果

集群模式
1、复制三份nacos,作为三个节点。 注: 集群要用单数不用双数 -> 自行查看raft协议一致性算法
2、修改/nacos/bin/startup.cmd,设置为集群模式cluster
3、这里需要用到数据库,新建一个数据库,执行/nacos/conf/mysql-schema.sql
4、修改/nacos/conf/application.properties文件中的server.port端口号分别为18848、18858、18868 (这里需要注意端口号不要连续,有可能会被其他节点占用启动不了),注: 有兴趣的可以看下18848、17848、19848多出的两个端口代表什么意思。
5、修改/nacos/conf/application.properties文件,增加mysql配置
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_cluster?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=root
db.password.0=root
6、修改/nacos/conf/cluster.conf文件,目录下没有的话复制一份cluster.conf.example去掉.example后缀,此处的本机IP可查看ipconfig,注意这个位置一定不要写localhost或127.0.0.1,否则注册服务的时候会出现“receive invalid redirect request from peer 127.0.0.1”问题
本机IP:18848
本机IP:18858
本机IP:18868
7、以上配置每个节点都要修改
8、startup.cmd启动三个节点
9、浏览器访问http://localhost:18848/nacos、http://localhost:18858/nacos、http://localhost:18868/nacos
10、启动springboot程序,使用开始截图的集群模式配置,修改springboot配置文件中的dubbo.registry.address 改为 nacos://localhost:18848,localhost:18858,localhost:18868, 分别启动demo-consumer、demo-provider1、demo-provider1,查看nacos控制台
11、细心的话,springboot配置dubbo.registry.address只用一个节点,启动后nacos控制台每个节点服务列表都会同步
集群模式 + Nginx反向代理
1、修改/nginx/conf/nginx.conf文件
upstream nacos_cluster {
server localhost:18848;
server localhost:18858;
server localhost:18868;
}
server {
listen 8004;
server_name localhost;
location /nacos {
proxy_pass http://nacos_cluster/nacos;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
2、修改springboot配置文件中的dubbo.registry.address 改为 nacos://localhost:8004
3、启动nacos三个节点、nginx、springboot程序
4、浏览器访问 http://localhost:8004/nacos/ 会看到nacos的控制台,访问 http://localhost:8001/test/testHello/曾经被照亮,欣然变成光 看调用过程
源码获取: https://pan.baidu.com/s/1kR6g-rR7nm8QrEgCTzsOrg 提取码: YG6D
在服务提供者的启动类上加上@EnableDubbo注解
更多推荐


所有评论(0)