Soul源码总结-01-23

  • 启动admin,与网关。 admin操作,使用nacos同步数据到网关
  • 记录心得并总结

Soul admin与Soul网关的nacos同步

soul-admin项目application.yml文件中引入nacos相关的dataSync策略:

soul:
   nacos:
     url: localhost:8848
     namespace: 1c10d748-af86-43b9-8265-75f487d20c6c
     acm:
       enabled: false
       endpoint: acm.aliyun.com
       namespace:
       accessKey:
       secretKey:

soul-bootstrap项目application.yml文件中引入

soul:
   nacos:
       url: localhost:8848
       namespace: 1c10d748-af86-43b9-8265-75f487d20c6c
       acm:
         enabled: false
         endpoint: acm.aliyun.com
         namespace:
         accessKey:
         secretKey:

同时在pom.xml文件中引入相关依赖

        <!--soul data sync start use nacos-->
        <dependency>
            <groupId>org.dromara</groupId>
            <artifactId>soul-spring-boot-starter-sync-data-nacos</artifactId>
            <version>${project.version}</version>
        </dependency>

在本地启动一个nacos服务以后,再启动soul-admin和soul-bootstrap。但是发现soul-bootstrap控制台抛出NullPointerException异常。
在这里插入图片描述
打断点进行追踪,发现configInfonull, 找到空指针异常原因。
在这里插入图片描述
此时进行继续追踪,发现
在这里插入图片描述
可以进行合理猜想,configInfo为null的相关原因可能是因为nacos配置中心的相关配置为null,需要自己手动输入一些config信息进行验证。
此时注意到在NacosCacheHandler中相关参数信息
在这里插入图片描述
此时手动在nacos控制台手动输入相关配置信息
在这里插入图片描述
然后重新启动soul网关,则可以顺利运行。
在soul网关启动过程中,将NacosSyncDataService的bean注入到ioc容器中。NacosSycnDataService继承了NacosCacheHandler并且实现了SyncDataService. 只得注意的是start()方法,开启监听nacos配置数据变化。在这里插入图片描述
watchData方法里提供了一个nacoslistener作为nacos的client,用来监听configInfo是否变化
在这里插入图片描述

总结

nacos作为soul-admin和soul网关之间的同步方式,与websocket和zk不同。第一次初始化时由于没有数据会导致NTE异常导致项目不能启动,然后nacos每次都是变动都要更新全量数据。

猜你喜欢

转载自blog.csdn.net/qq_42965594/article/details/113065999
今日推荐