苍穹分应用部署方法
1 苍穹的微服务架构
金蝶云·苍穹是采用云原生架构的分布式应用,相比单体应用架构,苍穹的微服务架构能更加保证服务的稳定可靠。单体应用和微服务架构的优缺点如下:
单体应用架构 | 微服务架构 |
部署简单 | 部署复杂 |
运维简单 | 运维复杂 |
部署成本低 | 部署成本高 |
应用耦合高 | 应用解耦 |
技术栈统一 | 技术异构性 |
应用不隔离 | 应用可隔离 |
服务无法扩展 | 服务可任意伸缩 |
迭代周期长 | 快速迭代 |
可复用性差 | 可复用性高 |
部署固定 | 部署灵活 |
金蝶云·苍穹采用动态微服务技术,使得苍穹应用部署非常灵活。可以像单体应用一样所有应用部署在一起(实际是微服务,服务可任意伸缩),也可以拆分应用部署实现每个小应用的相互隔离。
2 分应用部署方法
金蝶云·苍穹分应用部署可通过环境变量进行配置:
键 | 值 | 描述 |
appSplit | true | 分应用的开关,true为启用,false为不启用。注意,同一集群内,appSplit值必须保持一致。 |
appIds | bos,bos-up,base,basedata,bd,sbd,wf,wftask,gmc,custom | 申明了该服务上运行的应用ID,会注册到zookeeper中用于服务发现与调用。注意appIds中的i是大写的 |
BIZLIBS | fi.xml ,fi-cal.xml, scm.xml | appstore目录下的xml中维护了一组appIds和所需要的加载的应用包。 |
3 标准按云拆分应用
类别 | 服务云 | 微服务名称 | 服务说明 | appIds | BIZLIBS | BOSLIBS | TRDLIBS |
---|---|---|---|---|---|---|---|
苍穹 | 平台微服务 | web | web服务,网关 | 无 | fi-er-web,scm-pur-web,ssc-task-web | bos.xml | trd.xml |
mservice-bos | 平台 | bos,bos-up,base,basedata,bd,sbd,gmc | bd-bd,biz-bos-ext | bos.xml | trd.xml | ||
mservice-wf | 流程服务云 | wftask,wf | bd-bd,biz-bos-ext | bos.xml | trd.xml | ||
mservice-qing | 轻分析、轻报表 | qing,qing_rpt | bd-bd,biz-bos-ext | bos.xml,bos-qing.xml | trd.xml,trd-qing | ||
mservice-isc | 集成服务云 | xml中已配置 | isc.xml | bos.xml | trd.xml | ||
mservice-ai | AI服务云 | xml中已配置 | ai.xml,data.xml | bos.xml | trd.xml | ||
mservice-rpa | RPA服务云 | xml中已配置 | rpac.xml | bos.xml | trd.xml | ||
mservice-bsc | 区块链服务云 | xml中已配置 | bsc.xml | bos.xml | trd.xml | ||
mservice-bamp | 基础中台服务云 | xml中已配置 | bamp.xml | bos.xml | trd.xml | ||
星瀚 | 财务云 | mservic-std | 总账、资产、应收、应付、出纳、会计平台、智能核算 | xml中已配置 | fi-std.xml | bos.xml | trd.xml |
mservic-er | 人人费用/差旅 | xml中已配置 | fi-er.xml | bos.xml | trd.xml | ||
mservic-ssc | 财务共享 | xml中已配置 | ssc.xml | bos.xml | trd.xml | ||
mservic-pmgt | 项目管理 | xml中已配置 | pmgt.xml,pccs.xml | bos.xml | trd.xml | ||
资金云 | mservice-tmc | 资金 | xml中已配置 | tmc.xml | bos.xml | trd.xml | |
mservice-ebg | 银企云 | xml中已配置 | ebg.xml | bos.xml | trd.xml | ||
企业绩效云 | mservice-bcm | 合并报表 | xml中已配置 | bcm.xml | bos.xml | trd.xml | |
mservice-epm | 预算管理 | xml中已配置 | epm.xml | bos.xml | trd.xml | ||
税务云 | mservice-taxc | 税务 | xml中已配置 | taxc.xml | bos.xml | trd.xml | |
发票云 | mservice-imc | 发票 | xml中已配置 | imc.xml | bos.xml | trd.xml | |
供应链云 | mservice-scmc | 供应链云 | xml中已配置 | scmc.xml | bos.xml | trd.xml | |
mservice-cal | 存货核算/出库核算 | xml中已配置 | fi-cal.xml,fi-calx.xml | bos.xml | trd.xml | ||
mservice-macc | 成本管理 | xml中已配置 | macc.xml | bos.xml | trd.xml | ||
mservice-scm | 供应商协同云(含地产) | xml中已配置 | scm.xml | bos.xml | trd.xml | ||
mservice-mpscmm | 供应链和制造服务云 | xml中已配置 | mpscmm.xml | bos.xml | trd.xml | ||
制造云 | mservice-mmc | 制造云 | xml中已配置 | mmc.xml | bos.xml | trd.xml | |
渠道云 | mservice-drp | 渠道云/全渠道云 | xml中已配置 | drp.xml,occ.xml | bos.xml | trd.xml | |
质量云 | mservice-qmc | 质量云 | xml中已配置 | qmc.xml | bos.xml | trd.xml | |
实施配置中心 | mservice-ricc | 实施配置中心 | xml中已配置 | bamp-ricc.xml | bos.xml | trd.xml | |
HR云 | mservice-hr | 核心人力/HR中台服务/组织管理 | xml中已配置 | hr.xml,odc.xml,hrmp.xml | bos.xml | trd.xml | |
mservice-hjm | 薪酬管理 | xml中已配置 | swc.xml | bos.xml | trd.xml | ||
mservice-hspm | 个税 | xml中已配置 | sit.xml | bos.xml | trd.xml |
说明:
1、分应用的微服务名称(appName)为推荐名称,便于区分,也可自定义
2、目前拆分的容器节点为推荐最小粒度,若需要再细分应用(部分应用尚未完全解耦),请咨询相关模块的架构师
3、在此最小细分粒度上,根据项目实际情况,将使用量大的独立出来,对于未使用或者使用量较小的应用可合并部署到同一个容器节点,如可以将未使用或者使用量较小的应用部署在mservice-others容器节点上
4、分应用部署的情况,bos节点建议独立部署,因bos.xml中没带有appIds,所以需要显式配置appIds=bos,bos-up,basedata,sbd,wf,wftask,gmc,custom(其中wf、wftask可以拆分独立部署),同时需要加载业务基础包:BIZLIBS=bd-bd,biz-bos-ext。
5、分应用部署的主要目的是为了应用隔离,所以请保持appIds或appIdsFromAppstore的唯一性。避免应用调度混乱,失去分应用部署的意义。
6、custom这个appIds的用途是如果没有显式配置二开的appIds或者到xml中的话,就会默认调度到custom的应用节点上,如果custom节点没有加载二开包的话,此时就会包该容器二开的类找不到。
如图:
4 其他应用独立部署
4.1 后台事务独立部署
后台事务节点标志的关键参数:
bos节点应用JVM_OPTS中添加: -DSchedule.Message.AccessType=["REALTIMEJOB"] 工作流应用节点JVM_OPTS中添加: -DSchedule.Message.AccessType=["WorkFlowJOB","REALTIMEJOB"] 调度应用JVM_OPTS中添加(加载全量包): -DSchedule.Message.AccessType=["BIZJOB","REALTIMEJOB"] -Ddubbo.registry.register=false -DSchedule.deployMode=execute_node -Dmq.consumer.maxpoolsize=40
参数说明:
BIZJOB:能处理所有后台事务 WorkFlowJOB:只处理工作流的后台事务 dubbo.registry.register=false:不注册微服务 后台事务是可以指定appId执行的,如果找不到appId就会在custom节点上运行。 其他分应用节点如果不想处理后台事务也可以加: -DSchedule.Message.AccessType=["REALTIMEJOB"] 这样的话处理后台事务的节点计算资源可能不太够,需要根据现场环境真实情况而定。
例如,业务容器都不处理后台事务,后台事务都由一组服务完成
创建后台事务的容器服务(可以参考bos容器节点环境变量),并修改部分环境变量如下:
(1)JVM_OPTS中添加:-DSchedule.Message.AccessType=["BIZJOB","REALTIMEJOB"] -Ddubbo.registry.register=false -DSchedule.deployMode=execute_node -Dmq.consumer.maxpoolsize=40
(2)BIZLIBS需要加载全量的业务包。由于配置了dubbo.registry.register=false,即后台事务节点不会注册微服务,所以可以配置所有的xml文件,用逗号隔开即可。
除了后台事务节点的其他所有容器节点的JVM_OPTS中添加:
-DSchedule.Message.AccessType=["WorkFlowJOB","REALTIMEJOB"]
4.2 AlgoX独立部署
AlgoX 是金蝶云.苍穹的分布式计算框架,用于解决海量数据计算场景。基于MapReduce 思想和技术,分布式部署,利用分布式的能力,使得性能可扩展,提升大数据查询计算和分析的能力,用以解决 ERP 中复杂计算、报表分析的场景。通过多台计算节点并行计算,实现弹性计算能力,使得性能可以伸缩扩展。
AlogX独立部署方法
Algox的关键参数:
algox.client.job.parallelism: algox任务运行并行度,默认是8 AlgoX有两种部署模式,系统默认是本地模式 本地模式: algox.client.invokemode=local 集群模式: algox.client.invokemode=remote 本地模式: algox.client.invokemode=local algox.local.worker.memory: worker节点分配给algox使⽤用的内存,默认是2G algox.local.worker.threads: worker节点总共分配给algox使用的最大线程数,默认是64 集群部署模式(通过zookeeper构建集群): algox.client.invokemode=remote algox.cluster.name:集群名字 algox.cluster.zookeeper:zk的连接地址 algox.cluster.storageDir: 存储目录,如果是容器,需要挂载磁盘 master节点配置: algox.master.enable=true worker节点配置: algox.worker.enable=true algox.worker.memory: worker节点分配给algox使用的内存,默认是2G algox.worker.threads: worker节点总共分配给algox使用的最大线程数,默认是64
例如:创建两组容器服务,分别是 algox-master和algox-work,关键环境变量修改如下:
algox-master的关键环境变量: BIZLIBS=allbiznoappIds.xml customAppIds=' ' mq.consumer.register=false appIds=algox appName=mservice-algox-master algox.client.invokemode=remote algox.master.enable=true algox.cluster.zookeeper=zk-algox:2181 JVM_OPTS中添加 -DSchedule.disableToWork=true
algox-work的关键环境变量:
BIZLIBS=allbiznoappIds.xml appIds=algox customAppIds=' ' mq.consumer.register=false appName=mservice-algox-worker algox.client.invokemode=remote algox.worker.enable=true algox.cluster.zookeeper=zk-algox:2181 algox.cluster.storageDir=/tmp algox.worker.memory=5120 JVM_OPTS中添加 -DSchedule.disableToWork=true
注:(1)BIZLIBS=allbiznoappIds.xml是加载biz目录中全量的业务包而不加载任何appIds的xml文件,需要自行创建。
(2)zk-algox:2181是zookeeper地址,如果没有单独部署一套zookeeper地址的话,可以和配置中心configUrl的地址共用。
检查独立部署是否生效:
点击algox-work节点可以查看到执行的任务
而点击其他非algox的分应用节点则会报“当前节点不是AlgoX节点,请选择其他节点!”
AlgoX是处理大数据计算的程序,需要的CPU和内存的资源要稍大些。一般资源配置参考如下:
服务名 | 初始CPU | 最大CPU限制 | JVM堆内存大小 | 容器最大内存 | 容器副本数 |
Algox-master | 2C | 4C | -Xms7000m -Xmx7000m | 10G | 2 |
Algox-worker | 2C | 4C | -Xms10880m -Xmx10880m | 13G | 2或以上 |
4.3 引入引出独立部署
在苍穹系统中,引入引出是一个很常用的功能,有时引入引出数据量比较大的时候就会导致某个应用或整个系统卡顿,甚至出现OOM内存溢出导致宕机。为了避免这种情况,引入引出可以独立部署出来,即使引入引出功能卡顿或宕机异常,也不会影响其他功能的使用,实现故障隔离。
引入引出独立部署方法
引入引出的应用编码是:imp-exp
引入引出服务的关键环境变量:
BIZLIBS=allbiznoappIds.xml appSplit=true appIds=imp-exp appName=mservice-imp-exp
innerAppIds=在monitor的注册中心中查询任一实例的系统属性中registedAppIds的值
注:(1)BIZLIBS=allbiznoappIds.xml是加载biz目录中全量的业务包而不加载任何appIds的xml文件,需要自行创建。
(2)innerAppIds该参数表示:声明该实例中内部注册的appIds,即如果imp-exp节点需要访问其他appIds应用,则本地直接调用就行,不需要通过dubbo的rpc去调用了。
检查独立部署是否生效:
随便点击一个表单(如系统服务云--基础服务--人员--更多--引出数据)进行引入引出数据测试,查看日志看imp-exp的appIds运行的实例是否是独立部署的实例服务。
附:
苍穹分应用部署方法
本文2024-09-23 01:12:43发表“云苍穹知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-cangqiong-144489.html
- 鼎捷EAI整合規範文件V3.1.07 (集團).pdf
- 鼎捷OpenAPI應用場景說明_基礎資料.pdf
- 鼎捷OpenAPI應用場景說明_財務管理.pdf
- 鼎捷T100 API設計器使用手冊T100 APIDesigner(V1.0).docx
- 鼎新e-GoB2雲端ERP B2 線上課程E6-2應付票據整批郵寄 領取.pdf
- 鼎新e-GoB2雲端ERP B2 線上課程A4使用者建立權限設定.pdf
- 鼎新e-GoB2雲端ERP B2 線上課程C3會計開帳與會計傳票.pdf
- 鼎新e-GoB2雲端ERP B2 線上課程E6-1應付票據.pdf
- 鼎新e-GoB2雲端ERP B2 線上課程A5-1進銷存參數設定(初階篇).pdf
- 鼎新e-GoB2雲端ERP B2 線上課程D2帳款開帳與票據開帳.pdf