Nacos1.x版本推送模型的现状分析

Nacos1.x版本配置中心推送模型

1、配置中心服务端通过MD5一致性对比发现客户端不是最新版本的配置

2、所以会与客户端建立短连接通过异步Servlet的方式主动推送数据给客户端

缺点

因为是短连接 30秒定期创建和销毁 所以GC压力很大

服务注册发现中心推送模型

服务端与客户端建立Http或UDP连接进行推送数据

缺点

  • 丢包

因UDP存在丢包的情况 所以会有一个UDP的补偿查询

  • 云架构下无法反向推送

反思改进的方向

  • 因配置中心和服务注册发现中心推送通道不一致所以要统一推送通道

  • 因http短连接性能压力大所以要使用长链接

场景分析

客户端和服务端之间

连接

客户端连接服务端:首先要获取服务端节点列表,然后负载均衡选择一个节点连接;连接断开时需要切换服务端重连

客户端发起

客户端基于当前可用的长链接发起配置领域或服务发现领域的RPC语意接口通信

服务端发起

服务端推送配置变更数据或服务变更数据给客户端;失败可重推;有推送ack机制,方便服务端进行metrics和重推判定

客户端断开连接

感知客户端断开连接,将连接注销,并且清空对应的上下文比如客户端连接注册的服务和订阅的服务

服务端之间

连接

服务端之间需要长连接感知对端存活状态,需要通过长连接汇报服务状态(同步RPC能力);断开连接,需要进行重连;服务端列表发生变更,需要创建新节点的长连接,销毁下线的节点长连接

数据同步

比如服务注册与发现:服务端之间进行AP Distro数据同步,需要异步RPC带ack能力

比如配置中心:配置变更信息同步、当前连接数信息、系统负载信息同步、负载调节信息同步

长链接核心诉求

功能性诉求

连接

无论客户端还是服务端都要具有连接生命周期的感知能力 包括连接的建立和连接断开

客户端角度

1、客户端调用服务端需要支持同步阻塞、异步Future、异步CallBack三种模式

2、客户端与服务端断开连接,需要具备底层切换连接的能力

3、客户端响应服务端的连接切换的请求

4、选址/服务发现

服务端角度

1、服务主动推送数据,需要客户端返回ack以保证消息的可靠推送,并且可进行失败重试

2、服务端主动推送负载调节

Nacos长连接诉求分析相关推荐

  1. 大型企业采购云管理平台的诉求分析-行云管家

    不同规模的企业对于云管理平台的诉求是不同的,今天我们就一起来简单分析一下大型企业采购云管理平台的诉求. 大型企业采购云管理平台的诉求分析-行云管家 诉求一.运维提效,操作方便 提高运维人员的工作效率, ...

  2. 长连接Tcp协议分析工具

    目前主流的网络协议分析工具主要有开类,一类是对就网络包底层数据包的分析,如Wireshark:另一类是针对http协议的分析工,如Fiddler.但是还有第三类网络协议长连接Tcp协议,如游戏协议.跟 ...

  3. python使用socket实现协议TCP长连接框架

    点击上方↑↑↑蓝字[协议分析与还原]关注我们 " 使用python实现协议中常见的TCP长连接框架." 分析多了协议就会发现,很多的应用,特别是游戏类和IM类应用,它们的协议会使用 ...

  4. 买家的诉求决定你的产品卖点

    产品卖点的核心是消费者的诉求,也就是消费者为什么对某个产品有需求. 为什么要用广角镜头?可能要拍比较大.比较宏伟的环境. 为什么要用微距?可能要去拍一些细节场景. -- 很多时候跟客户对不上,是因为不 ...

  5. 【微服务】Nacos为什么丢弃短连接(http)而选择拥抱长连接(gRPC)

    目录 一.现状背景 二.场景分析 1.配置 2.服务 三.长连接核心诉求 1.功能性诉求 1.1.客户端 1.2.服务端 2.性能 3.负载均衡 4.连接生命周期 4.1.心跳保活机制 4.2.需要什 ...

  6. 朴素、Select、Poll和Epoll网络编程模型实现和分析——Poll、Epoll模型处理长连接性能比较

    在<朴素.Select.Poll和Epoll网络编程模型实现和分析--模型比较>一文中,我们分析了各种模型在处理短连接时的能力.本文我们将讨论处理长连接时各个模型的性能.(转载请指明出于b ...

  7. php-fpm mysql 长连接_分析:PHP长连接的硬伤

    上篇博文<PHP的CURL报错的排查记录:短连接的成本真的很高啊>,我提到PHP长连接有个硬伤,那么硬伤到底在哪里呢? 我们写一个简易的memcache客户端来分析下这个问题,数据库等扩展 ...

  8. 复工后一次百万长连接压测Nginx与OOM的问题排查分析,我裂开了!

    在最近的一次百万长连接压测中,32C 128G 的四台 Nginx 频繁出现 OOM,出现问题时的内存监控如下所示. 排查的过程记录如下. 现象描述 这是一个 websocket 百万长连接收发消息的 ...

  9. 一次百万长连接压测 Nginx OOM 的问题排查分析

    转载来源 : 一次百万长连接压测 Nginx OOM 的问题排查分析 : https://mp.weixin.qq.com/s/thSoTHeS26Y4Nf7ryUtygg 在最近的一次百万长连接压测 ...

最新文章

  1. Hadoop集群搭建(五:Hadoop HA集群模式的安装)
  2. spring boot + zookeeper 注册中心
  3. php显示评委打分情况代码,评委打分表自动汇总计算得分
  4. devexpress能开发出html,DevExpress推出HTML5 JavaScript控件集
  5. WordPress里的PHP AJAX call
  6. 在武大吉奥期间的任务
  7. TOP10十大GPS导航手机(有车一族必备手机)
  8. 微软云之路——Windows Azure 学习
  9. 发电机机房设计规范_民用建筑变电所等机房设置的几点建议
  10. 改变Eclipse标记高亮的颜色
  11. mysql 5.6.26 驱动_mysql版本引起的驱动问题
  12. C# StringBuilder 和 String 的区别?(简单易懂不抽象)
  13. 认识并学会springCloud的使用
  14. 【图像去噪】基于matlab高通+低通+带通+方向滤波器图像滤波【含Matlab源码 1209期】
  15. R及RStudio软件安装教程
  16. 戴尔笔记本电脑重装win10系统详细记录
  17. 开关电源变换器稳态原理分析(电感伏秒平衡及电容电荷平衡)
  18. PowerDesigner 15及破解补丁下载(转)
  19. DPDK内存管理总结
  20. WPF教程(二) WPF vs WinForms

热门文章

  1. LabVIEW多列列表框背景颜色操作
  2. C++ 字符串流stringstream(附蓝桥杯2018年第九届真题缩位求和题解)
  3. 计算机显示休眠状态进不去,解决方法:关闭计算机,或使其进入睡眠或休眠状态...
  4. java 逆矩阵,java – 如何创建逆变换矩阵
  5. @Repository详解
  6. 【狂神JAVA】MyBatis笔记
  7. Alpha 冲刺报告2
  8. Unity3D与JSP TomCatserver传递数据和文件( 二 ) Unity3D向java传输表单
  9. Javascript中的form
  10. mysql explicit_defaults_for_timestamp参数