nacos 学习
- 遇到问题
- 配置文件没加载到
 nacos配置文件加载的是bootstrap的文件而不是application
- bootstrap 改了没报错,但是配置还是不生效
 spring boot 最新版本需要自己去额外引入starter-bootstrap
- ribbon与nacos结合,nacos的配置文件,和注册都没有问题,ribbon获取消费者获取不到
未解决。发现nacos提供的案例版本极低,但本地新建项目导入包报resolve异常。采用直接
List<ServiceInstance> instances = discoveryClient.getInstances("service-provider");
这个方法可以正常手动获取,负载均衡以后测
采取迂回策略,父模块导入spring-cloud-alibaba-dependences进行版本管理,其他一些未导入的版本,比如nacos,openfeign尽量已有的版本,最終正常负载。
- spring-cloud-alibaba-nacos-discor 源码初探
- 
把日志调成debug级别,观察与nacos注册相关的包 
 ![image]() 
- 
从日志中发现注册使用的核心组件为NacosServiceRegistry 
 查询该bean注入位置,以及初始化方法
 ![image]() ![image]() 
- 
不难发现customize 方法之前的为配置环境和元数据,这里只关心实际注册的动作 
 ![image]() 
- 
经过调试跟这个没什么关系,所以按照搜索关键字nacos registry或者 LoggerFactory.getLogger(NacosServiceRegistry.class), 如果搜不到就只能查询nacos相关单例,一般最后一个初始化的就是真正的入口 
 ![image]() ![image]() 
- 
找到入口, 发现实现,也就知道了日志为什么会打印NacosServiceRegistry 
 ![image]() 
- 
既然知道了springcloud是怎么注册服务的,就把这段代码复制一下,小改动一下就可以把我们的其他服务注册进去了,比如netty,从日志也可以发现这些组件都是交给过spring容器统一管理的,所有正常注入就行 
 ![image]() 
- gateway 基于nacos进行负载
- 开启gateway的负载均衡:spring: cloud: gateway: discovery: #是否与服务发现组件进行结合,通过 serviceId(必须设置成大写) 转发到具体的服务实例。默认为false,设为true便开启通过服务中心的自动根据 serviceId 创建路由的功能。 locator: #路由访问方式:http://Gateway_HOST:Gateway_PORT/大写的serviceId/**,其中微服务应用名默认大写访问。 enabled: true lower-case-service-id: true
- 引入ribbon,spring cloud2.0以后引入 loadbalance,否则在开启debug日志会发现服务获取到了,但是服务提供方没有收到请求
- netty 实现聊天组功能
- 
一直卡在用户与channel如何绑定上,虽然调试的时候也发现如果泛型选择object的话,channelread方法会被调用,但没反应过来是FullHttpRequest 
 1.1 参照博客 https://blog.csdn.net/qq_38370965/article/details/112572990 注释打的全发现了其他博客中的莫名其妙跑出来得FullHttpRequest是怎么回事
- 
handle责任链顺序引发的异常 
 ![image]() ![image]() 
 正常顺序前端没报错
 ![image]() 
- redis RedisConnectionFactory 红色线条
- 按照网上配置redisTemplate的相关序列化方式,工厂出现红色线条
 ![image]() 
 可以看到是可以正常注入的,那不妨猜测一下,idea是根据autoconfiguration的配置才不会变红
 ![image]() 
 
                    
                     
                    
                 
                    
                












 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号