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注册相关的包
-
从日志中发现注册使用的核心组件为NacosServiceRegistry
查询该bean注入位置,以及初始化方法
-
不难发现customize 方法之前的为配置环境和元数据,这里只关心实际注册的动作
-
经过调试跟这个没什么关系,所以按照搜索关键字nacos registry或者 LoggerFactory.getLogger(NacosServiceRegistry.class), 如果搜不到就只能查询nacos相关单例,一般最后一个初始化的就是真正的入口
-
找到入口, 发现实现,也就知道了日志为什么会打印NacosServiceRegistry
-
既然知道了springcloud是怎么注册服务的,就把这段代码复制一下,小改动一下就可以把我们的其他服务注册进去了,比如netty,从日志也可以发现这些组件都是交给过spring容器统一管理的,所有正常注入就行
- 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责任链顺序引发的异常
正常顺序前端没报错
- redis RedisConnectionFactory 红色线条
- 按照网上配置redisTemplate的相关序列化方式,工厂出现红色线条
可以看到是可以正常注入的,那不妨猜测一下,idea是根据autoconfiguration的配置才不会变红
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)