总控引擎插件跨节点通信链路和改造计划.md

总控、引擎、插件跨节点通信链路

graph LR
	subgraph Sc[总控]
		sc
		sv[可视化 sv]
		installer-manager[引擎安装 manager]
	end
	
	subgraph Se[流量引擎]
        subgraph Sem[流量引擎 管理节点]
            installer-agent[引擎安装 agent]
            webserver[Webserver]
            admin_dam[admin Dam]
            apiserver[Apiserver]
            admin_ha[admin HA]
			nexus_m[Nexus]
			global_plugin_server[global-plugin-server]
        end

        subgraph Sew[流量引擎 工作节点]
            data_dam[data Dam]
            nexus_w[Nexus]
            envoy[Envoy]
        end
        
        subgraph Ses[流量引擎 调度节点]
        	nexus_s[Nexus]
        end
	end
	
	installer-manager -->|vip/nodeIP:8099|installer-agent
	installer-manager -->|vip:6898|admin_ha
	sv -->|vip:1234|admin_dam
	sv -->|vip:8899|admin_dam
	sv -->|vip:8299|webserver
	sc -->|vip:8229|webserver	
	
	installer-agent -->|nodeIP:8098|installer-manager
	data_dam -->|nodeIp:4150|sv
	
	
	data_dam -->|nodeIp:9001|webserver
	webserver -->|nodeIp:8000| nexus_m & nexus_s & nexus_w
	envoy -->|vip:7878 7978| global_plugin_server
	
	%%installer-agent -->|vip:6443|apiserver

第一步改造(通信方向反转)

改造前

graph LR
	subgraph Sc[总控]
		sc
		sv[可视化 sv]
		installer-manager[引擎安装 manager]
	end
	
	subgraph Se[流量引擎]
        subgraph Sem[流量引擎 管理节点]
            installer-agent[引擎安装 agent]
            webserver[Webserver]
            admin_dam[admin Dam]
            apiserver[Apiserver]
            admin_ha[admin HA]
			nexus_m[Nexus]
			global_plugin_server[global-plugin-server]
        end

        subgraph Sew[流量引擎 工作节点]
            data_dam[data Dam]
            nexus_w[Nexus]
            envoy[Envoy]
        end
        
        subgraph Ses[流量引擎 调度节点]
        	nexus_s[Nexus]
        end
	end
	
	installer-manager -->|vip/nodeIP:8099|installer-agent
	installer-manager -->|vip:6898|admin_ha
	sv -->|vip:1234|admin_dam
	sv -->|vip:8899|admin_dam
	sv -->|vip:8299|webserver
	sc -->|vip:8229|webserver	

改造后

graph RL
	subgraph Sc[总控]
		sc
		sv[可视化 sv]
		installer-manager[引擎安装 manager]
	end
	
	subgraph Se[流量引擎]
        subgraph Sem[流量引擎 管理节点]
            installer-agent[引擎安装 agent]
            webserver[Webserver]
            admin_dam[admin Dam]
            apiserver[Apiserver]
            admin_ha[admin HA]
			nexus_m[Nexus]
			global_plugin_server[global-plugin-server]
        end

        subgraph Sew[流量引擎 工作节点]
            data_dam[data Dam]
            nexus_w[Nexus]
            envoy[Envoy]
        end
        
        subgraph Ses[流量引擎 调度节点]
        	nexus_s[Nexus]
        end
	end
	
	installer-agent -->|nodeIp:29030|installer-manager
	admin_ha -->|nodeIp:29030| installer-manager
	admin_dam -->|nodeIp:29120|sv
	admin_dam -->|nodeIp:29120|sv
	webserver -->|nodeIp:29120|sv
	webserver -->|nodeIp:29020|sc
	

改造后开放端口策略

涉及组件
  • sc
  • sv
  • webserver
  • admin-ha
  • installer-manager
  • installer-agent
  • admin-dam
改造后
服务端

sc sv installer-manager

客户端

webserver admin-ha admin-dam installer-agent

组件开放端口

sc :29020
sv :29120
installer-manager: 29030

总结开放端口策略:

总控侧开放 nodeIp:29029 29120 29030 端口、客户端通过 nodeIp 这些端口来建立通信

方案

  • grpc 双向流

    • 优势

      • 基于 HTTP/2: 支持流控制、头部压缩等高效功能。
      • 强类型接口定义: 使用 Protocol Buffers,可以定义清晰的服务接口。
      • 多语言支持: 客户端和服务端可以使用不同的编程语言实现。

      劣势

      • 浏览器支持有限: 直接在浏览器中使用 gRPC 可能有兼容性问题。
      • 复杂度较高: 相比于 RESTful API 或 WebSocket,gRPC 的学习曲线更陡峭。
  • websocket 双向通信

    • 优势

      • 全双工通信: 允许服务器和客户端之间进行实时、双向通信。
      • 低延迟: 一旦建立连接,数据交换延迟非常低。
      • 广泛支持: 大多数现代浏览器和网络库都支持 WebSocket。

      劣势

      • 缺乏内置消息格式: 需要自定义协议来处理消息。
      • 缺少先进的消息处理功能: 如消息队列、消息确认等。
      • 扩展性: 在大规模应用中,保持大量的 WebSocket 连接可能会导致资源问题。
  • http2.0 双向通信

    • 优势

      • 多路复用: 单个连接上可以并行多个请求/响应,提高效率。
      • 头部压缩: 减少了额外的网络开销。
      • 服务器推送: 服务器可以主动向客户端发送资源。

      劣势

      • 兼容性和支持: 虽然现代浏览器普遍支持 HTTP/2,但在某些环境中可能仍需考虑兼容性问题。
      • 复杂性: 相比 HTTP/1.1,HTTP/2 实现更复杂。
  • 长轮询

  • 消息队列/订阅发布模型

    • 优势

      • 解耦生产者和消费者: 生产者和消费者不必知道对方的存在。
      • 可扩展性: 更容易在分布式系统中扩展。
      • 可靠性: 很多消息队列系统提供消息持久化、确认机制等功能,确保消息不会丢失。

      劣势

      • 延迟: 相比直接的双向通信,可能会引入更多的延迟。
      • 复杂性: 引入消息队列系统会增加系统架构的复杂性。
      • 维护成本: 需要管理和维护额外的消息队列服务。

第二步改造(规整)


总控引擎插件跨节点通信链路和改造计划.md
https://abrance.github.io/2023/12/25/project/sr/通信链路改造/总控引擎插件跨节点通信链路和改造计划/
Author
xiaoy
Posted on
December 25, 2023
Licensed under