TongWeb7微服务适配方案

news2024/10/7 4:29:54

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

之前使用的是内置的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

  • 阿里云服务器折扣场:点我进入  
  • 腾讯云服务器秒杀场:点我进入  
  • 淘宝优惠券专场:====点我进入====

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/86351.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【有营养的算法笔记】巧解蛇形矩阵

👑作者主页:进击的安度因 🏠学习社区:进击的安度因(个人社区) 📖专栏链接:有营养的算法笔记 ✉️分类专栏:题解 文章目录一、题目描述二、思路讲解三、代码实现一、题目描…

DevExpress ASP.NET and Blazor图表编制

DevExpress ASP.NET and Blazor图表编制 .NET 6现在是受支持的最低框架版本-此版本需要.NET 6和Microsoft Visual Studio 2022(v17.0)或更高版本。 图表编制 范围条形图-最小条形图大小-您现在可以使用新的minBarSize属性为范围条形图中显示的条形图指定最小大小。 数据可视化组…

RabbitMQ如何保证消息的可靠性

文章目录可靠性分析可靠性方案可靠性实现确认Exchange接收到消息确认Queue接收到消息保证Queue及其数据持久化保证消费者的正常消费重复消费问题消息丢失问题可靠性分析 RabbitMQ如何保证消息的可靠?如RabbitMQ基础概念中的架构模型 可以看到一条消息的传递过程&a…

还在用HttpUtil?SpringBoot 3.0全新HTTP客户端工具来了,用起来够优雅~

我们平时开发项目的时候,经常会需要远程调用下其他服务提供的接口,于是我们会使用一些HTTP工具类比如Hutool提供的HttpUtil。前不久SpringBoot 3.0发布了,出了一个Http Interface的新特性,它允许我们使用声明式服务调用的方式来调…

PreScan快速入门到精通第四十讲目标边界传感器

边界矩形传感器提供了关于传感器可检测物体的边界矩形的信息,并作为对摄像机输入的边界矩形算法的参考。一个例子是行人识别算法,该算法用于检测夜间、雾、雨或雪等恶劣照明条件下的行人。输出的检测到的边界矩形是按距离排序的--最近的在前。 注意:边界矩形传感器不检测(或…

Qt扫盲-QDoubleSpinBox理论总结

QDoubleSpinBox理论总结1. 简述2. 调值与值转换3. 信号4. 修饰&外观1. 简述 QDoubleSpinBox 主要是对于浮点数据的输入进行便捷的封装。QDoubleSpinBox和QSpinBox的使用基本一致,只是有些控制有些不同嘛。比如对于浮点数的小数点精度位数的控制啦。 QDoubleSpi…

第五章. 可视化数据分析图表—常用图表的绘制4—箱形图,3D图表

第五章. 可视化数据分析图 5.3 常用图表的绘制4—箱形图,3D图表 本节主要介绍常用图表的绘制,主要包括箱形图,3D柱形图,3D曲面图。 1.箱形图(matplotlib.pyplot.boxplot) 箱形图又称箱线图、盒须图或盒式…

你还在为 “动态规划” 发愁吗?看完本秘籍,带你斩杀这类题~

目录 前言 一、动态规划——解题思路 二、动态规划——模板以及题目 2.1、Fibonacci 2.2、字符串分割(Word Break) 2.3、三角矩阵(Triangle) 2.4、路径总数(Unique Paths) 2.5、最小路径和(Minimum Path Sum) 2.6、背包问题 2.7、回文串分割(Pa…

第08讲:使用脚手架创建vue项目

一、安装NodeJS 二、配置环境变量 2.1、软件安装完成之后配置npm的环境变量 第1步:获取npm安装位置 使用管理员身份打开CMD,用如下命令获取npm的安装位置: npm config list第2步:配置环境变量 将以上获取的路径保存到path变…

flask请求与响应、session执行流程

目录 请求对象 响应对象 session的使用和原理 闪现(flash) 请求扩展 蓝图 请求对象 请求对象request是全局的,需要导入这个全局的request,在哪个视图函数中就是当次的request对象 请求数据: request.method # 获取提交的方法 …

文件包含漏洞简介

今天继续给大家介绍渗透测试相关知识,本文主要内容是文件包含漏洞简介。 免责声明: 本文所介绍的内容仅做学习交流使用,严禁利用文中技术进行非法行为,否则造成一切严重后果自负! 再次强调:严禁对未授权设备…

一些好玩的js小作品

今天小编给大家带来了一些很实用的js小作品,下面请一看究竟。 1、计算详细年龄工具js脚本 2、检测是否安装Flash插件及版本号js脚本 3、无法查看源码的页面 4、面积换算js脚本 5、体积和容积换算js脚本 6、长度换算js脚本 7、重量换算js脚本 8、只能输入汉字…

记一些女装数据分析

文章目录服装维度女装生命周期门店维度常见度量值衍生指标服装维度 尺码:XS、S、M、L、XL颜色:黑、红、蓝、白……一级分类:上半身、下半身、全身季节:春、夏、秋、冬价格类型:正价、特价、折扣价、降价、优惠券…价格…

Android自定义ViewGroup布局进阶,完整的九宫格实现

自定义ViewGroup九宫格 前言 在之前的文章我们复习了 ViewGroup 的测量与布局,那么我们这一篇效果就可以在之前的基础上实现一个灵活的九宫格布局。 那么一个九宫格的 ViewGroup 如何定义,我们分解为如下的几个步骤来实现: 先计算与测量九…

【Linux学习】进程信号

文章目录前言一、信号初识1. 信号的概念2. Linux中的普通信号3. 信号的处理二、信号产生1. 终端按键产生信号2. 系统调用发送信号2.1 kill函数2.2 raise函数2.3 abort函数3. 由软件条件产生信号3.1 SIGPIPE信号3.2 alarm函数4. 由硬件异常产生信号三、信号阻塞1. 信号阻塞即其他…

[前端面试题]flex上下布局

[前端面试题]flex上下布局 [万字长文]一文教你彻底搞懂flex布局 [CSS]一些flex的应用场景 页面中有两个元素。元素bottom固定在底部,靠内容来撑开;而元素top在上边,高度自适应,自动铺满除bottom剩下的空间,且top内容…

第十四届蓝桥杯集训——JavaC组第十篇——分支语句

第十四届蓝桥杯集训——JavaC组第十篇——分支语句 目录 第十四届蓝桥杯集训——JavaC组第十篇——分支语句 if单分支 if单分支语法 if单分支语句示例 单分支例题: 连续单分支示例 if简写语法 if双分支语句 if双分支语法 if双分支语法示例 if双分支简写法…

全栈jmeter接口测试教程之Jmeter+ant+jenkins实现持续集成

jmeterantjenkins持续集成 一、下载并配置jmeter 首先下载jmeter工具,并配置好环境变量;参考:https://www.cnblogs.com/YouJeffrey/p/16029894.html jmeter默认保存的是.jtl格式的文件,要设置一下bin/jmeter.properties,文件内容…

圣诞节快来了~用python做一个粒子烟花震撼众人赚个女孩回来吧~

前言 嗨喽,大家好呀~这里是爱看美女的茜茜呐 又到了学Python时刻~ 准备 准备一下你运行效果的背景图 以及一首你喜欢或那你女朋友喜欢的音乐 效果 代码展示 导入模块 import random import pygame as py import tkinter as tk from time import time, sleep fr…

Fuzzing with Data Dependency Information阅读笔记

相关数据 论文:https://www.s3.eurecom.fr/docs/eurosp22_mantovani.pdf 开源代码:https://github.com/elManto/DDFuzz 论文背景 这篇论文是2022年发表在sp上的一篇论文,也是在afl的基础上进行改进的一篇论文。afl是在afl的基础上进行整合…