前不久,在3月20号,Nacos 2.0.0 正式发布了!我简单看了下官方的介绍,可能nacos未来逐渐会成为各大公司作为服务治理和配置中心的主要中间件。

Nacos 简介:一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。

通俗点讲,Nacos 就是一把微服务双剑:注册中心 + 配置中心,由阿里巴巴于 2018 年开源。

Nacos 2.0.0

概述

一图看清naocs

架构模型

1.X架构:



Nacos 1.X 大致分为5层, 分别是接入、通信、功能、同步和持久化。

1.X服务模型

1.X架构存在的问题

一句话总结,心跳多,无效查询多,心跳续约感知变化慢,连接消耗大,资源空耗严重。



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

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

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

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

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

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

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

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

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

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

2.0架构

Nacos 2.0 架构最主要的变化就是增加了对长连接的支持,gRPC 和 Rsocket 实现了长连接 RPC 调用和推送能力。

2.0服务模型



虽然Nacos2.0的在架构层次上并未做太大的变化,但是具体的模型细节却有不小的改动,依旧使用注册服务的流程

Nacos 2.0架构的优缺点

优点

1、 客户端不再需要定时发送实例心跳,只需要有一个维持连接可用keepalive消息即可。重复TPS可以大幅降低。

2、 TCP连接断开可以被快速感知到,提升反应速度。

3、 长连接的流式推送,比UDP更加可靠;nio的机制具有更高的吞吐量,而且由于可靠推送,可以加长客户端用于对账服务列表的时间,甚至删除相关的请求。重复的无效QPS可以大幅降低。

4、 长连接避免频繁连接开销,可以大幅缓解TIME_ WAIT问题。

5、 真实的长连接,解决配置模块GC问题。

6、 更细粒度的同步内容,减少服务节点间的通信压力。

缺点

没有银弹的方案,新架构也会引入一些新问题

1、 内部结构复杂度上升,管理连接状态,连接的负载均衡需要管理。

2、 数据由原来的无状态,变为与连接绑定的有状态数据,流程链路更长。

3、 RPC协议的观测性不如HTTP。即使gRPC基于HTTP2.0Stream实现,仍然不如直接使用HTTP协议来的直观。

Nacos 2.X 规划

简单分享下Nacos 2.X 的后期规划吧。主要分为文档、质量和Roadmap。

在文档和质量方面,Nacos 1.X都做的不是很好。文档内容较少,仅有简单使用文档;和版本有一定脱节,更新不及时;没有对技术内容的说明,参与贡献难度高。代码质量及测试质量也不是很高,虽然已经使用checkstyle进行了codeStyle的校验以及开启了社区协作review。但是这还远远不够。Nacos 2.X将会逐步更新、细化官网使用文档;通过电子书对技术细节进行解析;通过Github展示技术方案,促进讨论及贡献;并且对代码进行大量重构及UT和IT的治理工作,在未来将Benchmark也会开源出来,方便给开源用户进行压测。



而RoadMap方面, Nacos 2.X 会对项目做大幅度的重构,完成初步插件化,并对刚才2.0架构的一些缺点,如负载均衡,可观测性进行提升。

Nacos 2.0 正式发布,性能提升了 10 倍!!的更多相关文章

  1. Nacos 2.0 正式发布,性能提升 10 倍!!

    3月20号,Nacos 2.0.0 正式发布了! Nacos 简介: 一个更易于构建云原生应用的动态服务发现.配置管理和服务管理平台. 通俗点讲,Nacos 就是一把微服务双刃剑:注册中心 + 配置中 ...

  2. 我是如何将一个老系统的kafka消费者服务的性能提升近百倍的

    ☞☞☞ 我是如何将一个老系统的kafka消费者服务的性能提升近百倍的 ☜☜☜ ○○○○○○○○○○○○○○○ 大家好,又见面了~ kafka作为一种高吞吐量的分布式发布订阅消息系统,在业务系统中被广泛 ...

  3. Web 应用性能提升的 10 个建议

    建议一.利用反向代理服务器加速和保护应用 如果 Web 应用运行在一台独立的电脑上,性能问题的解决方案是显而易见的:换一台更快的电脑,里面加上更多的处理器.内存.快速磁盘阵列等等.然后在这台新电脑上运 ...

  4. Spring Boot 2.2.0,性能提升+支持Java13

    随着 Spring Framework 5.2.0 成功发布之后,Spring Boot 2.2 也紧跟其后,发布了第一个版本:2.2.0.下面就来一起来看看这个版本都更新了些什么值得我们关注的内容. ...

  5. Java 中的5个代码性能提升技巧,最高提升近10倍

    文章持续更新,可以关注公众号程序猿阿朗或访问未读代码博客. 本文 Github.com/niumoo/JavaNotes 已经收录,欢迎Star. 这篇文章介绍几个 Java 开发中可以进行性能优化的 ...

  6. 用一个性能提升了666倍的小案例说明在TiDB中正确使用索引的重要性

    背景 最近在给一个物流系统做TiDB POC测试,这个系统是基于MySQL开发的,本次投入测试的业务数据大概10个库约900张表,最大单表6千多万行. 这个规模不算大,测试数据以及库表结构是用Dump ...

  7. 修改一行SQL代码 性能提升了N倍

    在PostgreSQL中修改了一行不明显的代码,把(ANY(ARRAY[...]) 改成 ANY(VALUES(...))),结果查询时间从20s变为0.2s.最初我们学习使用EXPLAN ANALY ...

  8. 修改一行SQL代码 性能提升了100倍

    在PostgreSQL中修改了一行不明显的代码,把(ANY(ARRAY[...]) 改成 ANY(VALUES(...))),结果查询时间从20s变为0.2s.最初我们学习使用 EXPLAN ANAL ...

  9. 【笔记】直接使用protocol buffers的底层库,对特定场景的PB编解码进行处理,编码性能提升2.4倍,解码性能提升4.8倍

    接上一篇文章:[笔记]golang中使用protocol buffers的底层库直接解码二进制数据 最近计划优化prometheus的remote write协议,因为业务需要,实现了一个remote ...

随机推荐

  1. Professional JavaScript for Web Developers 4th Edition

    Professional JavaScript for Web Developers 4th Edition learning notes / 学习笔记 https://github.com/xgqf ...

  2. CSS3 Animation & linear-gradient & css3 var & @keyframes

    CSS3 Animation & linear-gradient & css3 var & @keyframes https://www.zhangxinxu.com/word ...

  3. Taro 物料市场

    Taro 物料市场 taro component demo https://taro-ext.jd.com/ https://taro-ext.jd.com/plugin/view/5caab6c68 ...

  4. PWA & bug

    PWA bug https://developer.mozilla.org/zh-CN/docs/Web/Progressive_web_apps https://learning.xgqfrms.x ...

  5. how to convert SVG shapes to polygon

    how to convert SVG shapes to polygon 如何将 svg 的 rect 转换成 polygon rect.circle.ellipse.line.polyline.po ...

  6. c++ 使用PID获取可执行文件路径

    注意看备注 https://docs.microsoft.com/en-us/windows/win32/api/psapi/nf-psapi-getmodulefilenameexa #includ ...

  7. “NGK公链+5G”——打造智慧城市

    智慧城市目前被全球各国当成城市建设的重点,旨在城市在智能化的同时,还能给民众带来幸福感和安全感.随着5G的到来,城市智能化又到了一个新的高度.比如无人驾驶.无人机等方面将会产生质的变化,因为5G的加入 ...

  8. 数理统计16:NP理论、似然比检验、假设检验与区间估计

    本文介绍Neyman-Pearson理论,这也是我们会见到的最常见假设检验问题类,这里第一Part的概念介绍略显枯燥,大家尽量理解即可.由于本系列为我独自完成的,缺少审阅,如果有任何错误,欢迎在评论区 ...

  9. HTTP/1.1报文详解

    本文为<三万长文50+趣图带你领悟web编程的内功心法>第三个章节. 3.HTTP/1.1报文详解 在RFC2616中心详细的描述了HTTP/1.1[1]的报文,感兴趣的朋友也可以前往阅读 ...

  10. MySQL 事务的隔离级别

    转载:https://developer.aliyun.com/article/743691?accounttraceid=80d4fddb3dc64b97a71118659e106221tozz 简 ...