苍穹分应用部署方法

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中添加:
-DSc
苍穹分应用部署方法
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。



