1.0 Nacos相关问题
1:服务端—默认是集群,启动时会报错。因此本地加上配置-Dnacos.standalone=true
2:客户端,要使用配置中心
如果默认是application.yml 用这个配置的话,会启动不成功,要改成bootstrap.yml优先级
2.0 Nacos 客户端注册流程
3.0 nacos 服务端注册流程
4.nacos1.X 架构以及存在的问题
1:心跳数量多,导致 TPS 居高不下
2:通过心跳续约感知服务变化,时延长
3:UDP 推送不可靠,导致 QPS 居高不下
4:基于 HTTP 短连接模型,TIME_WAIT 状态连接过多
5:配置模块的 30 秒长轮询引起的频繁 GC
6:cp协议不可靠,用的是假raft协议,通知失败,回滚相关业务没有补偿
5.0 nacos2.x架构
引入grpc协议
1)优点
客户端不再需要定时发送实例心跳,只需要有一个维持连接可用 keepalive 消息即可。重复 TPS 可以大幅降低。
TCP 连接断开可以被快速感知到,提升反应速度。
长连接的流式推送,比 UDP 更加可靠;nio 的机制具有更高的吞吐量,而且由于可靠推送,可以加长客户端用于对账服务列表的时间,甚至删除相关的请求。重复的无效 QPS 可以大幅降低。
长连接避免频繁连接开销,可以大幅缓解 TIME_ WAIT 问题。
真实的长连接,解决配置模块 GC 问题。
更细粒度的同步内容,减少服务节点间的通信压力。
2)缺点
没有银弹的方案,新架构也会引入一些新问题
内部结构复杂度上升,管理连接状态,连接的负载均衡需要管理。
数据又原来的无状态,变为与连接绑定的有状态数据,流程链路更长。
RPC 协议的观测性不如 HTTP。即使 gRPC 基于 HTTP2.0Stream 实现,仍然不如直接使用 HTTP 协议来的直观