记一次平台websocket架构调整的开发/调试/部署经历

目录

背景

流程概述

平台ws架构图

调试瞬间

基于容器平台手动工作负载部署(deployment)

jenkins cicd+rancher实现自动化构建部署


我是人间惆怅客,知君何事泪纵横。断肠声里忆平生。

背景

调整前ws server由go开发,与平台后端服务融合在一起,整个过程大部分是前端与后端直接交互,为了避免这种情况,领导决定单独开发一个ws server从平台独立出来,又因隔壁团队(python)是基于python开发的ws,稳定性靠谱,结合现状因此采用了Python开发。

调整后的ws server与业务服务解耦,前端无需直接与go后端交互。后端服务还是go;前端使用vue的socket.io(2.1.1-b);ws server基于flask_socketIO开发;其中ws的数据推送由redis而来,redis的数据由后端服务而来,后端服务的数据又由rancher的websocket而来,这样整个ws流程已隐隐浮现。

平台ws用于状态推送。

流程概述

1,前端调登录接口,即向后端服务登录并获取token;

2,ws向后端服务发送http请求验证当前token是否合法&有效,校验通过时返回200,否则ws server与前端断开当前连接;

3,校验通过,ws server向redis发送开启的event,此时后端服务请求rancher ws同时将拿到的数据推到redis,前端收到200之后向ws server发送建立连接的ws请求,开始即时通信。

平台ws架构图

调试瞬间

前端

页面

后端服务

ws server

基于容器平台手动工作负载部署(deployment)

分为大致几步:

启动一个deployment,镜像为python镜像(注意创建时就暴露容器端口,设置端口映射)

进入容器目录,拉取代码

cd /
mkdir wss
git clone http://xxx.xx.xx.xx:10080/项目.git
git checkout cp-develop

设置pip源,安装pip依赖

cd ~
mkdir ~/.pip

cat > ~/.pip/pip.conf << EOF
[global]
timeout=6000
index-url=http://192.168.103.41:8000/simple/
[install]
use-mirrors=true
trusted-host=192.168.103.41
EOF

pip install -U -r requirements.txt

启动项目

nohup python manage.py runserver -s ws_settings.ini

查看进程,已经启动成功了,接下来连接wss的一方即可用ip:30942的方式访问这个server。

jenkins cicd+rancher实现自动化构建部署

准备工作:容器平台已有一个以jenkins命名的命名空间;给项目下Dockerfile,加部署deployment的k8s的yml文件(为什么是项目下,主要是为了拷贝起来目录方便好写),必要时也需要entrypoint.sh;我的Dockerfile如下:

yaml文件如下

首先,登入Jenkins,会看到这个,点击它

输入任务名,选择流水线,点击OK

接下来是配置这个任务,以下各图是一些配置参数

上图中的token等于什么值,代码库的变动对应来触发哪个Jenkins任务自动构建。

脚本主要做三件事:编译代码,构建镜像,部署镜像。记得给该项目的代码库加webhook哦,URL如下

http://ip:端口/generic-webhook-trigger/invoke?token=wss-develop

上面的ip和端口就是jenkins的访问地址。

这时候你给代码库推代码,Jenkins就会自动触发构建了。
 

发布了155 篇原创文章 · 获赞 74 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/HYZX_9987/article/details/103514839