在线精品99_中国九九盗摄偷拍偷看_91免费版在线观看_91.app_91高清视频在线_99热最新网站

如何进行WebSocket在容器化管理平台的应用

129次阅读
没有评论

共计 3087 个字符,预计需要花费 8 分钟才能阅读完成。

这篇文章给大家介绍如何进行 WebSocket 在容器化管理平台的应用,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

介绍

Websocket 是一个持久化协议,相对于 HTTP 这种非持久协议而言。它实现了浏览器与服务器全双工通信,能更好的节省服务器资源和带宽并达到实时通讯的目的, 与 HTTP 一样基于已建立的 TCP 连接来传输数据。但是与 HTTP 协议不同的地方就是:WebSocket 是一种双向通信协议,在建立连接后,WebSocket 服务器端和客户端都能主动向对方发送或接收数据,就像 Socket 一样;WebSocket 需要像 TCP 一样,先建立连接,连接成功后才能相互通信。

运行机制

传统的 HTTP 客户端与服务器请求响应模式,一个生命周期里只有一个或多个请求和一个或多个与之对应的响应。如下所示:

而 WebSocket 模式下客户端与服务器响应模式, 一旦 WebSocket 连接建立,在客户端或者服务端中断连接前,数据都以帧序列传输,不需要重启客户端或者服务端重新发起连接请求。

客户端发起请求

Request Method:GET
Status Code:101 Switching Protocols #101 之后的数据传输采用 Websocket 协议
Connection:Upgrade
Sec-WebSocket-Extensions:permessage-deflate;
Sec-WebSocket-Key:dfQAy9mlQ0EjD5MmvvsZaQ== # 验证
Sec-WebSocket-Version:13
Upgrade:websocket # 客户端支持 websocket 协议,如果服务器也支持就使用 WebSocket 协议

服务器解析,并返回握手信息,建立连接

Connection:upgrade
sec-websocket-accept:+mKC4huknIfMGJFOzclP9fO058g= # 验证
upgrade:websocket

传输数据(双向)

断开连接

应用场景

WebSocket 属于 Web 领域的实时推送技术,目的让用户不刷新浏览器就可以实时更新。其在容器化管理平台里主要有两个应用场景类型,一个是实时消息类,将实时日志、业务监控等相关信息推送给客户端。如:在容器化管理平台里部署了一个应用,那么应用部署的日志、运行日志以及监控信息如何及时推送到前端呢,另外一个就是交互消息类,在 Web 界面操作容器,节省手动登录服务器进入容器内的时间,提高效率。

实例 1: 实时消息

就拿云帮而言,需要实时推送的是每个应用的日志信息和业务监控数据。那么我们在处理实时消息时就采用了 WebSocket 与 ZMQ 相结合的方式,快速实现将应用日志信息推送到 web 端。其简化模型如下所示:客户端与服务器采用 WebSocket 协议,实时传输相关数据。相关数据方面采用的是 ZMQ。云帮主要使用了 ZeroMQ 消息队列中的 Publisher-Subscriber 模型, 将所有相关信息汇总到一个节点上在推送到其他节点上。即客户端 (SUB) 向服务器 (PUB) 订阅消息,然后服务器将消息推送到所有订阅了消息到客户端,类似于广播。之所以采用 ZMQ,而不是 Socket 的原因,前者支持 N:M 的连接, 后者只能 1:1 的连接。

具体的应用场景相关设定参数:

#docker-compose.yml
mpush:
 container_name: mpush
 environment:
 - ZMQ_SUB_FROM=tcp://ip:9242
 image: hub.goodrain.com/dc-deploy/mpush
 log_driver: json-file
 log_opt:
 max-size: 50m
 ports:
 - 0.0.0.0:6060:6060
 restart: always
#config.py  定义实时消息 URL
WEBSOCKET_URL = {
  cloudbang :  ws://ip:6060/websocket ,
#dalaran_docker
ZMQ_BIND_SUB=tcp://0.0.0.0:9241
ZMQ_BIND_PUB=tcp://0.0.0.0:9242
ZMQ_BIND_PUB2=tcp://0.0.0.0:9243
#setting
 docker_sub : {
  address : [
  tcp://ip:9242 
 ],
  storage :  /data/docker_logs 
 },

实例 2: 交互消息

GoTTY 是一个用 Go 语言开发的工具, 可以将操作系统的命令字符终端共享成普通的网页应用展示出来。在 mac 安装根据情况选择一种

#brew
brew tap yudai/gotty
brew install gotty
go get github.com/yudai/gotty

使用:

gotty -a 0.0.0.0 -p  8080  -w tmux

那么在云帮,我们又是如何解决这个问题的?云帮 web 端操作容器就是基于 gotty 定制开发的 WebSocket 共享字符终端。创建一个 websocket 实例, 连接服务器进行前后台交互及相关事件处理

# 前端实现部分代码
var openWs = function() { if(is_community ==  True){
 host_name = window.location.hostname+ :8188 
 }
 var url = tmp_url.replace({{DOCKER_WSS_URL}} ,host_name)
 console.log(url)
 var ws = new WebSocket(url);
 var term;
 var pingTimer;
 ws.onopen = function(event) { ws.send(JSON.stringify({ T_id: t_id, S_id: s_id, C_id: c_id, Md5: md5,}));
 pingTimer = setInterval(sendPing, 30 * 1000, ws);
 hterm.defaultStorage = new lib.Storage.Local();
 hterm.defaultStorage.clear();
 term = new hterm.Terminal();
 term.getPrefs().set( send-encoding ,  raw 
 term.onTerminalReady = function() { var io = term.io.push();
 io.onVTKeystroke = function(str) { ws.send( 0  + str);
 };
 io.sendString = io.onVTKeystroke;
 io.onTerminalResize = function(columns, rows) {
 ws.send(
  2  + JSON.stringify(
 {
 columns: columns,
 rows: rows,
 }
 )
 )
 };
 term.installKeyboard();
 };
 term.decorate(document.getElementById( terminal));
 };

后端程序基于 Gotty 开发的。

关于如何进行 WebSocket 在容器化管理平台的应用就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-16发表,共计3087字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)
主站蜘蛛池模板: 国产精品青草久久久久婷婷 | 色综合亚洲七七久久桃花影院 | 国产黄视频网站 | 国产精品美女久久久久av福利 | 久久久91精品国产一区二区三区 | 亚洲一区二区视频 | 国产高清一区二区三区四区 | 丰满熟妇乱又伦在线无码视频 | 美女脱了内裤张开腿让男人桶网站 | 国产日韩欧美 | 热99re久久国超精品首页 | 日本久久久久亚洲中字幕 | 色欲人妻综合网 | 成人免费网站视频ww | 天堂在线国产 | 东北女人啪啪对白 | 天堂8在线天堂资源bt | 狠痕鲁狠狠爱2021在 | 日韩亚洲欧美性感视频影片免费看 | 日韩亚洲av无码一区二区不卡 | 日日碰狠狠躁久久躁9 | 中文字幕亚洲综合久久菠萝蜜 | 亚洲精品 欧美 | 国产女人18毛片水真多1 | 亚洲老熟女av一区二区在线播放 | a级在线观看视频 | 韩国美女vip内部2020 | 草草草在线 | 99热久久精品首页 | 欧美人交性视频在线香蕉 | 99久久国产综合精品女不卡 | 国产五月色婷婷六月丁香视频 | 国模福利在线观看视频 | 日本护士xxxxhd少妇 | 久久久男人天堂 | 久久久久国产 | 影音先锋男人av橹橹色 | 精品一区二区不卡无码av | 色播99| 中文字幕久久波多野结衣av不卡 | 亚洲 欧美 自拍 另类 |