之前调研了rpc使用dubbo+redis架构,这次平移到dubbo+nacos。
第一次接触nacos,所以记录了nacos的安装已经nacos的配置修改
下面是dubbo+redis的链接
rpc-dubbo-redis
1 安装nacos
1.1下载以及部署启动
从nacos官网 https://nacos.io/zh-cn/index.html 下载安装包,稳定版:nacos-server-1.4.2.tar.gz。
然后使用tar指令解压
tar -xvf nacos-server-1.4.2.tar.gz
之后输入指令单机模式启动
cd /root/nacos/bin
sh startup.sh -m standalone
启动过程可能会比较慢,出现下面这段表示启动成功
2021-08-18 14:55:10,725 INFO Tomcat started on port(s): 8848 (http) with context path '/nacos'
2021-08-18 14:55:10,741 INFO Nacos started successfully in stand alone mode. use embedded storage
2021-08-18 14:55:13,514 INFO Initializing Servlet 'dispatcherServlet'
2021-08-18 14:55:13,548 INFO Completed initialization in 33 ms
之后即可访问
http://XX.XX.XX.XX:8848/nacos/index.html#/login
用户名密码默认 nacos/nacos
1.2可能存在的问题:
我这边碰到了防火墙的问题导致服务起了,但是访问地址访问不到,需要处理下
[root@root ~]# firewall-cmd --query-port=8848/tcp
no
开放端口并重载:
firewall-cmd --add-port=8848/tcp --permanent
firewall-cmd --reload
再次查询就ok了,之后就可以正常访问网页了
[root@root ~]# firewall-cmd --query-port=8848/tcp
yes
PS:关闭服务
sh shutdown.sh
2 dubbo从redis平移至nacos
基于dubbo+redis架构,只需改2处
2.1 pom.xml
从原始的redis和jedis依赖改成nacos的依赖
<!-- dubbo 依赖-->
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>2.7.8</version>
</dependency>
<!-- Nacos依赖 -->
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-registry-nacos</artifactId>
<version>2.7.8</version>
</dependency>
2.2 application.yml
修改了dubbo.registry,直接把address改成nacos的对应地址。
namespace需要手动去nacos页面手动增加命名空间,然后把对应的命名空间ID赋值到下面的namespace后面。我这边是用来区分开发还是测试环境。
dubbo:
application:
id: XXX
name: XXX
version: 1.0.0
registry:
address: nacos://XX.XX.XX.XX:8848
#如果需要区分namespace环境可以如下配置
#parameters:
#namespace: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
protocol:
id: dubbo
name: dubbo
port: 20880
2.3 PS
provider和consumer服务启动后,都能再nacos平台看到对应的暴露服务。
本地发环境热部署启动的,可能会存在调用失败的情况。
正常重启服务是ok的,之前一直以为是代码有问题,排查了半天。
3参考文献:
防火墙开关
https://www.freesion.com/article/32891399747/
官方dubbo+nacos
https://nacos.io/zh-cn/docs/use-nacos-with-dubbo.html