TongWeb7微服务适配方案

2023-05-16

先介绍一下我们微服务项目的部署情况:

之前使用的是内置的Tomcat容器部署方式,运行项目使用的

java -jar 项目文件

方式,然后使用k8s+docker容器化部署。

还没了解TongWeb部署的同学们,可以看看我前面写的几个关于TongWeb本地部署的文章。

本地TongWeb7部署web(SpringCloud)项目(Windows)

TongWeb7本地部署(Windows)

TongWeb7有很多版本

 上面的版本,我都试过了,对于容器化部署很不友好,一个容器应用需要消耗2G左右的内容。

容器化部署企业版

容器化部署企业版+项目应用

问了客服

中间还让商务要了,微服务版本的(是把一些容器化的操作继承进去,比如构建docker镜像,这些操作我们都是预先做好的,用不到这些功能,启动的内存消耗和企业版相差不多,也不符合我们的情况)

 加上自身应用内存,一个简单的微服务就需要消耗2G左右的内存(PS:我们原来部署方式一个简单的微服务应用,只需要分配cpu: 300m, memory: 1Gi),如果按照这种部署方式,我们的服务成本直接翻倍了,而且也不符合我们微服务中微的概念。

后面了解到,还有一个版本,内嵌版,最后我们采用的也是这个版本。

启动的内存消耗和CPU占用,和我们原来的部署方式差不多。

 判断是嵌入式启动的tongweb启动

 

部署起来也很简单,替换tomcat内置的相关jar即可。

还有一个需要注意的,授权文件的配置

我们这边直接采用,通过挂载的方式,配置环境参数。

env:
            - name: server.tongweb.license.path
              value: '/opt/saas/license/license.dat'  

附上我们的yaml文件提供给大家参考下(我删减掉一些关于我们项目的内容

apiVersion: apps/v1
kind: Deployment
metadata:
  namespace: xxx
  labels:
    app: xxx-tongweb-server
  name: xxx-tongweb-server
  annotations:
    kubesphere.io/description: tongweb内嵌式测试启动副本
    kubesphere.io/alias-name: tongweb
spec:
  replicas: 1
  selector:
    matchLabels:
      app: xxx-tongweb-server
  template:
    metadata:
      labels:
        app: xxx-tongweb-server
    spec:
      volumes:
        - name: source
          emptyDir: {}
        - name: log4j2
          configMap:
            name: saas-env
            items:
              - key: log4j2-spring.xml
                path: log4j2-spring.xml
        - name: license
          configMap:
            name: saas-env
            items:
              - key: license.dat
                path: license.dat         
      initContainers:
        - name: container-xxx-server-init-artifact
          image: 'xxx.xx.xxx.xxx:xxxx/xxx-server'
          command:
            - sh
          args:
            - '-c'
            - cp /opt/xxxx-server.war /source/
          resources: {}
          volumeMounts:
            - name: source
              mountPath: /source/
          terminationMessagePath: /dev/termination-log
          terminationMessagePolicy: File
          imagePullPolicy: Always
      containers:
        - name: container-xxx-server
          image: 'xxx.xx.xxx.xx:7005/xxx/tongweb:7-xxxxx-test'
          command:
            - sh
          args:
            - '-c'
            - >-
              rm -rf /opt/saas/lib/spring-boot-starter-tomcat-2.2.5.RELEASE.jar && 
              rm -rf /opt/saas/lib/tomcat-embed-core-9.0.31.jar &&
              rm -rf /opt/saas/lib/tomcat-embed-el-9.0.31.jar &&
              rm -rf /opt/saas/lib/tomcat-embed-websocket-9.0.31.jar &&
              cp -r /opt/tongweb/* /opt/saas/lib/  &&
              cd /opt/saas && tini -- java -cp xxx-server.war
              -Dloader.path=xxx-server.war!/WEB-INF/classes/,xxx-server.war!/WEB-INF/,lib/
              -Dserver.port=8080 -Ddebug=false -Dfile.encoding=utf-8
              
          ports:
            - name: http-8080
              containerPort: 8080
              protocol: TCP
          env:
            - name: server.tongweb.license.path
              value: '/opt/saas/license/license.dat'  
            - name: LOG4J_CONFIGURATION_FILE
              value: /opt/saas/log/log4j2-spring.xml           
          resources:
            limits:
              cpu: 300m
              memory: 1Gi
            requests:
              cpu: 200m
              memory: 512Mi
          volumeMounts:
            - name: source
              mountPath: /opt/saas/
            - name: log4j2
              mountPath: /opt/saas/log/
            - name: license
              mountPath: /opt/saas/license/
          terminationMessagePath: /dev/termination-log
          terminationMessagePolicy: File
          imagePullPolicy: IfNotPresent
      restartPolicy: Always
      terminationGracePeriodSeconds: 30
      dnsPolicy: ClusterFirst
      serviceAccountName: default
      serviceAccount: default
      securityContext: {}
      imagePullSecrets:
        - name: nontax3-docker-host
      schedulerName: default-scheduler
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxUnavailable: 25%
      maxSurge: 25%

 

 博主新推出的gitee免费开源项目(商城+APP+小程序+H5),有兴趣的小伙伴可以了解一下。

生鲜商城kxmall-小程序 + App + 公众号H5: kxmall-生鲜商城+APP+小程序+H5。同时支持微信小程序、H5、安卓App、苹果App。支持集群部署,单机部署。可用于B2C商城,O2O外卖,社区超市,生鲜【带配套骑手端配送系统】。kxmall使用uniapp编码。使用Java开发,SpringBoot 2.1.x框架,MyBatis-plus持久层框架、Redis作为缓存、MySql作为数据库。前端vuejs作为开发语言。https://gitee.com/zhengkaixing/kxmall

  • 阿里云服务器折扣场:点我进入  
  • 腾讯云服务器秒杀场:点我进入  
  • 淘宝优惠券专场:====点我进入====
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

TongWeb7微服务适配方案 的相关文章

  • 经典的pid公式,好脑子不如烂笔头。

    这个算法涉及昨天 xff0c 今天 xff0c 明天 思路就是以史为鉴 xff0c 预测明天 xff0c 改革当前
  • c++对8位灰度图进行二值化处理

    对灰度图进行位二值化 xff0c 输入图像像素部分的宽度和高度以及存储灰度像素值 得一维数组 xff0c 对灰度值进行直方图统计 xff0c 通过OSTU大律法公式 xff0c 确定自动灰度 图的阈值 xff0c 进而进行二值化处理 xff
  • vue 数组常用方法(总结)

    vue 数组常用方法 操作原数组push item pop shift unshift item n splice startIndex endIndex sort reverse 返回新数组slice startIndex endInde
  • 【亲测可用】kali linux 2020.1 设置为中文方法

    目录 0x00 提示0x01 更换更新源0x02 默认语言选择0x03 安装中文字体0x04 重启 xff0c 完成0x05 参考文章 kali 2020 1可用 进入我们的正题 xff0c 修改为中文的步骤 0x00 提示 由于kali
  • QT的TCP应用-传输图片

    1 server h span class token macro property span class token directive hash span span class token directive keyword ifnde
  • gazebo教程---使用roslaunch来启动gazebo,加载models

    1 使用roslaunch加载一个世界模型 roslaunch gazebo ros willowgarage world span class token punctuation span launch 运行效果如图 xff1a 下面看一
  • gazebo教程---ros_control

    一 ros control和Gazebo的数据流向 在Gazebo中模拟机器人的控制器是可以通过使用ros control和一个简单的Gazebo插件适配器来完成 下面是仿真 xff0c 硬件 xff0c 控制器和传动之间关系的概览 xff
  • CentOS Stream 安装 Docker

    版本LinuxCentOS Stream release 8 xff08 需要 CentOS 7 及以上 xff09 Docker20 10 17 卸载旧版本 旧版本的 Docker 被称为 docker 或 docker engine 如
  • CMakeLists.txt和.h头文件

    CMakeLists txt格式 xff08 随学习进度不断更新 xff09 声明要求的cmake最低版本 cmake minimum required VERSION 2 8 声明一个cmake工程 project HelloSLAM 添
  • 网络程序设计 面向TCP/IP编程总结

    第一章 网络编程基础知识 网络由节点和连线构成 现实用应用中的网络由硬件设备 xff08 路由器 交换机 网线 xff09 43 应用软件组成 计算机网路技术发展的第一个里程碑以报文或分组交换技术的出现为标志 数据交换的三种主要形式 xff
  • 训练时的Batchsize和Epoch之间的区别是什么?

    阅读这篇文章后 xff0c 你会知道 xff1a 随机梯度下降是一种迭代学习算法 xff0c 它使用训练数据集来更新模型 批量大小是梯度下降的超参数 xff0c 在模型的内部参数更新之前控制训练样本的数量 Epoch数是梯度下降的超参数 x
  • 如何在ROS下向ROS_PACKAGE_PATH中添加路径来解决找不到包的情况

    如果在创建ROS工作空间时不是严格按照 mkdir p catkin ws src 来创建的话可能后面会出现找不到包的情况 xff0c 这个时候你用命令 echo ROS PACKAGE PATH 会发现所找不到的包没有包含在这个路径里面
  • 移动平均法又称滑动平均法、滑动平均模型法(Moving average,MA)

    转自http jingji 100xuexi com view otdetail 20130625 230f09b0 6e36 473b 8830 7f2b873a5252 html 什么是移动平均法 移动平均法是用一组最近的实际数据值来预
  • C/C++ 数学库文件 (math.h)

    目录 1 三角函数 Trigonometric functions 1 1 cos 函数 1 2 sin 正弦函数 1 3 tan 正切函数 1 4 acos 反余弦函数 1 5 asin 反正弦函数 1 6 atan 反正切函数 1 7
  • C语言进阶 ~ 内存四区(栈、堆、全局、代码区)

    特别声明 xff1a 该部分是根据B站大佬 什么都想干好的视频学习而来 目录 1 1 数据类型本质分析 1 1 1 数据类型概念 1 1 2 数据类型的本质 1 1 3 数据类型的别名 1 1 4 数据类型之 void 1 2 变量的本质分
  • C语言进阶 ~ 一级指针与字符串

    目录 2 1 指针强化 2 2 一级指针 char 易错地方 2 2 1 对空字符串和非法字符串的判断 2 2 2 越界 2 2 3 指针的叠加会不断改变指针的方向 2 2 4 局部变量不要外传 2 2 5 函数内使用辅助变量的重要性 2
  • STC51从入门到精通(汇编)~~~ 第八讲:串行通信技术

    目录 8 1 80C51单片机串行通信技术的特点 8 2 串行通信基本知识 8 2 1 数据通信 8 2 2 串行通信的传输方式 8 2 3 异步通信和同步通信 8 3 串行接口的组成和特性 8 3 1 串行口的结构 8 3 2 串行口控制
  • 基于arduino的循迹小车(含有PID算法)

    循迹小车一般分为两方面 xff1a 一方面是简单的闭环赛道只有直道和弯道 xff0c 另一方面是毕设类型的包括一些元素 xff1a 90度弯道 十字道路 S形弯道等 1 CSDN下载 xff1a 含有PID xff1a https down
  • 基于手机蓝牙的arduino遥控小车

    遥控小车是每个人童年的最爱 xff0c 不仅好奇它的奇妙 xff0c 更是喜欢它带来的刺激 小编为大家带来几篇博客 xff0c 来给大家讲讲制作遥控小车的程序 看大标题可知我们一共有五个方法去制作一款带有遥控功能的小车 xff0c 小编分开
  • 课程设计题四:LED彩灯控制器设计

    要求 xff1a 1 至少10个发光管4种花样自动变换 xff0c 循环往复 2 彩灯花样变换的快慢节拍可以手动和自动方式控制 xff0c 手动控制按钮按一次转换一次 xff1b 自动控制方式每15秒变换一次 xff0c 1分钟循环一遍 3

随机推荐