总控引擎数据链路.md

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
### 总控引擎节点通信链路、引擎节点之间通信链路

#### 总控->引擎 服务搭建链路

#### 总控->引擎 引擎安装链路1

##### 链路 1

manager -> agent
协议: http
ip: vip/nodeIp
端口: 8099

##### 链路 2

manager -> admin_ha
协议: grpc
ip: vip
端口:6898

##### 链路 3

manager -> sc
协议: https
ip: 127.0.0.1
端口: 443

##### 链路 4

manager -> sv
协议:http
端口:20522

##### 链路 5

agent -> manager
协议:http
ip:nodeIp
端口:8098

##### 链路 6

agent -> apiserver
协议: https
ip:vip
端口:6443

#### 引擎->总控 引擎安装链路2

#### 引擎->总控 可视化数据链路

sv -> sc
协议: https
IP: 127.0.0.1
端口: 29105

sv -> dam
协议: grpc
IP: vip
端口: 1234

sv -> dam
协议: http
IP: vip
端口: 8899

sv -> webserver
协议: https
IP: vip
端口: 8299

dam -> sv
协议: tcp
IP: 0.0.0.0
端口: 4150

#### 引擎->引擎 引擎管理链路

**adminDam**

##### dam 链路1

协议: http
ip: vip
端口:8443
kube-apiserver -> adminDam
备注:webhook

##### dam 链路2

协议: http
ip: vip
端口:8899
webserver -> adminDam
sv -> adminDam

##### dam 链路3

协议: grpc
ip: vip
端口:1234
sv -> adminDam

##### dam 链路4

**dataDam**

##### dam 链路5

协议: grpc
ip: vip
端口:7000
dataDam -> adminDam

##### dam 链路6

协议: grpc
ip: 127.0.0.1
端口:9977
envoy -> dataDam

##### dam 链路7

协议: http
ip: 节点IP
端口:9001
webserver -> dataDam

##### dam 链路8

协议: grpc
ip: 127.0.0.1
端口:9002
polycube -> dataDam





### 总控->引擎

#### manager -> agent

协议: http
ip: vip/nodeIp
端口: 8099

#### manager -> admin_ha

协议: grpc
ip: vip
端口:6898

#### sv -> dam

协议: grpc
IP: vip
端口: 1234

#### sv -> dam

协议: http
IP: vip
端口: 8899

#### sv -> webserver

协议: https
IP: vip
端口: 8299

### 引擎->总控

#### agent -> manager

协议:http
ip:nodeIp
端口:8098

#### dam -> sv

协议: tcp
IP: 0.0.0.0
端口: 4150

写上

  1. 协议 tcp 或 http 等协议
  2. 服务所使用的 IP 是 VIP,还是 127.0.0.1 、0.0.0.0、*,没用就填 无
  3. 绑定端口,没用填无

总控 –> xx 引擎

引擎 –> 总控

引擎节点 –> 引擎节点

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

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	

方案

  • grpc 双向流

    • 优势

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

      劣势

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

    • 优势

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

      劣势

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

    • 优势

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

      劣势

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

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

    • 优势

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

      劣势

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

第二步改造(规整)

```





以下是去重后的通信链路,每条链路信息单独展示在一行中:

1. **总控 -> 总控**
   - manager -> sc: 协议 https, IP 127.0.0.1, 端口 443
   - manager -> sv: 协议 http, 端口 20522
2. **总控 -> 引擎**

- manager -> agent: 协议 http, IP vip/nodeIp, 端口 8099
- manager -> admin_ha: 协议 grpc, IP vip, 端口 6898

3. **引擎 -> 总控**

- agent -> manager: 协议 http, IP nodeIp, 端口 8098
- agent -> apiserver: 协议 https, IP vip, 端口 6443
- sv -> sc: 协议 https, IP 127.0.0.1, 端口 29105
- sv -> dam: 协议 grpc, IP vip, 端口 1234
- sv -> dam: 协议 http, IP vip, 端口 8899
- sv -> webserver: 协议 https, IP vip, 端口 8299
- dam -> sv: 协议 tcp, IP 0.0.0.0, 端口 4150

4. **引擎 -> 引擎**

- kube-apiserver -> adminDam: 协议 http, IP vip, 端口 8443, 备注 webhook
- webserver -> adminDam: 协议 http, IP vip, 端口 8899
- sv -> adminDam: 协议 grpc, IP vip, 端口 1234
- dataDam -> adminDam: 协议 grpc, IP vip, 端口 7000
- envoy -> dataDam: 协议 grpc, IP 127.0.0.1, 端口 9977
- webserver -> dataDam: 协议 http, IP 节点IP, 端口 9001
- polycube -> dataDam: 协议 grpc, IP 127.0.0.1, 端口 9002

这样的展示形式使得每个通信链路都清晰地在一行内显示,方便对照和查阅。

```mermaid
---
title: 总控逻辑架构图
---


graph LR
    subgraph 总控
    	direction TB
		subgraph 用户接口层
			direction TB
			DataSV[数据可视]
			APIAsset[API可视]
			SysInfo[系统信息]
			SEInfo[引擎信息]
			ObjectInfo[对象信息]
			UserInfo[用户信息]
		end
		
		subgraph 业务层
			direction LR
			API[API]
			
			subgraph SCDashboard[SC]
				Auth[授权管理]
				User[用户管理]
				Object[对象管理]
				System[系统管理]
				SVClient[可视化]
				
				subgraph 引擎管理
					SEInstallerClient[引擎安装]
					服务搭建
				end
			end
			
			subgraph SVServer[SV]
				数据可视
				API可视
				业务可视
				插件可视
			end
			
			subgraph Install-Manage
				SEInstall[流量引擎安装]
				SidecarSE[边车引擎在线、离线安装]
				路由引擎安装
				引擎节点管理
			end			
		end

		subgraph 数据层
			Redis[(Redis)]
			SCEtcd[(Etcd)]
			NSQ([NSQ])
			MySQL[(MySQL)]
			MongoDB[(MongoDB)]
			FS(((FS)))
		end
	end
	
	subgraph 引擎
        
        subgraph SEAppLayer[业务层]
        	direction TB
        	subgraph SE-M_cluster
        		subgraph SE-M
        			Webserver
        			adminDam
        			adminHA
        			adminKA
        			semGRL[global-rate-limit]
        			kube-ApiServer
        			semInstallAgent[Install-Agent]
        			semNexus[Nexus]
        		end
        	end
        	
        	subgraph SE-S_cluster
        		subgraph SE-S
        			dataHA:::Yellow
        			dataKA
        			sesInstallAgent[Install-Agent]
        			sesNexus[Nexus]        			
        		end
        	end
        	
        	subgraph SE-W_cluster
        		subgraph SE-W
        			sewWorkDam[workDam]
        			dataWorker
        			Polycube
        			Envoy
        			sewGRL[global-rate-limit]
        			sewInstallAgent[Install-Agent]
        			sewNexus[Nexus]        			
        		end
        	end        	
        end
        
        subgraph SEDataLayer[数据层]
        	SEEtcd[(ETCD)]
        	SEFS(((FS)))
        end        
    end 
    
    服务搭建 --> Webserver
    API <====> SCDashboard
    API <====> 用户接口层
    SVClient -.-> SVServer
    SEInstallerClient -.-> Install-Manage
    Install-Manage <--> semInstallAgent & sesInstallAgent & sewInstallAgent
    Envoy --> sewWorkDam --> 数据可视
    业务可视 --> Envoy

    linkStyle 1,2 stroke:blue,stroke-width:8px,color:black;
    linkStyle 5,6,7 stroke:red,stroke-width:8px,color:black;    

	style SEDataLayer fill:#FFEBB5
	classDef Yellow fill:#f96

    

总控引擎数据链路.md
https://abrance.github.io/2023/12/14/project/sr/通信链路改造/总控引擎数据链路/
Author
xiaoy
Posted on
December 14, 2023
Licensed under