Nacos 2.0.0正式发布,Nacos2.0及其生态,Nacos2.0在matecloud项目中的应用

原创
2021/03/24 19:28
阅读数 1.2K

先了解下Nacos

Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。

Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。

1.x.x版本(最新1.4.1)存在的问题

  • 心跳数量多,导致 TPS 居高不下

通过心跳续约,当服务规模上升时,特别是类似 Dubbo 的接口级服务较多时,心跳及配置元数据的轮询数量众多,导致集群 TPS 很高,系统资源高度空耗。

  • 通过心跳续约感知服务变化,时延长

心跳续约需要达到超时时间才会移除并通知订阅者,默认为 15 s,时延较长,时效性差。若改短超时时间,当网络抖动时,会频繁触发变更推送,对客户端服务端都有更大损耗。

  • UDP 推送不可靠,导致 QPS 居高不下

由于 UDP 不可靠,因此客户端测需要每隔一段时间进行对账查询,保证客户端缓存的服务列表的状态正确,当订阅客户端规模上升时,集群 QPS 很高,但大多数服务列表其实不会频繁改变,造成无效查询,从而存在资源空耗。

  • 基于 HTTP 短连接模型,TIME_WAIT 状态连接过多

HTTP 短连接模型,每次客户端请求都会创建和销毁 TCP 链接,TCP 协议销毁的链接状态是 WAIT_TIME,完全释放还需要一定时间,当 TPS 和 QPS 较高时,服务端和客户端可能有大量的 WAIT_TIME 状态链接,从而会导致 connect time out 错误或者 Cannot assign requested address 的问题。

  • 配置模块的 30 秒长轮询引起的频繁 GC

配置模块使用 HTTP 短连接阻塞模型来模拟长连接通信,但是由于并非真实的长连接模型,因此每 30 秒需要进行一次请求和数据的上下文切换,每一次切换都有引起造成一次内存浪费,从而导致服务端频繁 GC。

Nacos 2.0.0 架构的优缺点

最大的变化,当属于性能的大幅度提升,目前集成到MateCloud项目中之后,连各模块的启动和关闭的速度都有大幅度的变化。欢迎体验者尝鲜。 具体特性参见:Nacos 2.0.0新产品发布

优点:

1、长连接缓解TIME_WAIT状态连接 2、流式推送更可靠,吞吐更高 3、通过TCP连接快速感知服务变化 4、客户端不再需要大量心跳 5、真实的长连接,解决配置模块GC问题

缺点:

1、 结构复杂,需要管理连接状态 2、 数据无状态  有状态 3、可观测性降低 更可靠 数量少 高吞吐 空耗少

产品样例

集成代码样例:pom文件参考

MateCloud是集成了Nacos、Sentinel、Jetcache等阿里系的产品解决方案的微服务平台。

在这里插入图片描述 在这里插入图片描述

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
0 评论
1 收藏
0
分享
返回顶部
顶部