TongWeb7微服务适配方案

本文介绍了一种利用TongWeb内嵌版进行微服务项目部署的方法,解决了容器化部署内存消耗过大的问题。文章详细展示了如何通过替换Tomcat内置的jar包并配置授权文件来实现这一目标。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

you来有去

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值