nacos 学习

  • 遇到问题
  1. 配置文件没加载到
    nacos配置文件加载的是bootstrap的文件而不是application
  2. bootstrap 改了没报错,但是配置还是不生效
    spring boot 最新版本需要自己去额外引入starter-bootstrap
  3. ribbon与nacos结合,nacos的配置文件,和注册都没有问题,ribbon获取消费者获取不到
未解决发现nacos提供的案例版本极低,但本地新建项目导入包报resolve异常采用直接
List<ServiceInstance> instances = discoveryClient.getInstances("service-provider");
这个方法可以正常手动获取,负载均衡以后测

采取迂回策略,父模块导入spring-cloud-alibaba-dependences进行版本管理,其他一些未导入的版本,比如nacos,openfeign尽量已有的版本,最終正常负载。

  • spring-cloud-alibaba-nacos-discor 源码初探
  1. 把日志调成debug级别,观察与nacos注册相关的包
    image

  2. 从日志中发现注册使用的核心组件为NacosServiceRegistry
    查询该bean注入位置,以及初始化方法
    image

    image

  3. 不难发现customize 方法之前的为配置环境和元数据,这里只关心实际注册的动作
    image

  4. 经过调试跟这个没什么关系,所以按照搜索关键字nacos registry或者 LoggerFactory.getLogger(NacosServiceRegistry.class), 如果搜不到就只能查询nacos相关单例,一般最后一个初始化的就是真正的入口
    image

    image

  5. 找到入口, 发现实现,也就知道了日志为什么会打印NacosServiceRegistry
    image

  6. 既然知道了springcloud是怎么注册服务的,就把这段代码复制一下,小改动一下就可以把我们的其他服务注册进去了,比如netty,从日志也可以发现这些组件都是交给过spring容器统一管理的,所有正常注入就行
    image

  • gateway 基于nacos进行负载
  1. 开启gateway的负载均衡:
    spring:
    	cloud:
    		gateway:
    			discovery: #是否与服务发现组件进行结合,通过 serviceId(必须设置成大写) 转发到具体的服务实例。默认为false,设为true便开启通过服务中心的自动根据 serviceId 创建路由的功能。
        			locator: #路由访问方式:http://Gateway_HOST:Gateway_PORT/大写的serviceId/**,其中微服务应用名默认大写访问。
          				enabled: true
          				lower-case-service-id: true
    
  2. 引入ribbon,spring cloud2.0以后引入 loadbalance,否则在开启debug日志会发现服务获取到了,但是服务提供方没有收到请求
  • netty 实现聊天组功能
  1. 一直卡在用户与channel如何绑定上,虽然调试的时候也发现如果泛型选择object的话,channelread方法会被调用,但没反应过来是FullHttpRequest
    1.1 参照博客 https://blog.csdn.net/qq_38370965/article/details/112572990 注释打的全发现了其他博客中的莫名其妙跑出来得FullHttpRequest是怎么回事

  2. handle责任链顺序引发的异常
    image

    image
    正常顺序前端没报错
    image

  • redis RedisConnectionFactory 红色线条
  1. 按照网上配置redisTemplate的相关序列化方式,工厂出现红色线条
    image
    可以看到是可以正常注入的,那不妨猜测一下,idea是根据autoconfiguration的配置才不会变红
    image
posted @   异客LLL  阅读(170)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示