【实践篇】一次Paas化热部署实践分享 | 京东云技术团队

前言

本文是早些年,Paas化刚刚提出不久时,基于部门内第一次Paas化热部署落地经验所写,主要内容是如何构建一些热部署代码以及一些避雷经验。

一、设计-领域模型设计

1.首先,确定领域服务所属的领域

2.其次,确定垂直业务身份

3.再次,提炼领域能力及扩展点

【实际工作中,我们已经把下面这个图作为领域服务设计文档进行了留存,用Paas化的方式实现需求,代码分布在中台、各个前台,所以整体管理代码就需要以文档形式进行统一记录,不然随着时间流逝,开发人员就无法全盘管理代码了】

二、代码结构设计

1.中台-扩展点jar

2.中台 - 领域服务、领域能力、水平实现

3.前台-由中台人员管理的前台包工程示例

4.前台-包内结构示例

5.前台-打包和部署的一些注意点

1.热部署jar包要打fat jar;

2.前台包jar上线版本只能打release版本,而且要注意版本管理

3.matrix-ext.json文件最好在前台中进行保留,实际热部署只需要在cjg部署时写明即可

4.biz-module.json文件是前台包调用外部jsf接口的配置文件,最好在前台包中也保留一份,便于代码管理

5.前台包调用外部jsf接口时,中台需要在cjg我的应用增加对应接口的允许权限,不然调用会报错

6.前台包中完全使用水平实现,无前台个性化实现是,也需要写一个占位的假实现类,不然热部署会报找不到实现类而失败

7.matrix2-core不要放到扩展点jar中,建议只放在中台应用中,不然会出现中台实际依赖到低版本matrix.jar的问题

三、部署流程

一、建应用:能力发布->我的应用->新增

二、中台应用发布:正常发布中台工程

三、创建水平业务身份:能力发布->我的水平业务身份->创建水平业务身份->审批

四、申请/创建垂直业务身份

五、垂直身份申请使用水平身份:能力集成->垂直业务身份->水平业务身份->申请使用-审批

六、需求能力拆解:能力集成->需求能力拆解->需求拆解

七、发布垂直业务包:能力集成->垂直业务身份->业务包->新增业务包/业务包详情->按流程走即可

四、踩坑和一些经验总结

1、水平业务身份抽取,先明确的抽取垂直,再从垂直的实现里抽取水平

2、前中台部署执行逻辑,未命中垂直身份,直接执行默认逻辑,命中垂直身份,根据matrix-ext.json执行

3、垂直业务包中未实现任何扩展点时,热部署无法发布,需要写一个默认占位实现

4、垂直业务包只能发布,没有下线功能

5、中台 – deployGroupName可以搭配预发分组、线上分组进行使用,可以用来区分环境,也可以用来区分机房

6、前台 – 前台调用JSF接口时,仅支持“serialization”:“hessian”模式,使用时最好都显式加上

7、热部署中台分组中的一台机器,此时其他中台机器冷启动,则冷启动机器执行最新版本的垂直业务包

8、由于matrix框架的实现方式是将前台包加载到中台应用的BizClassLoader中,不同的垂直业务身份之间对于类的相同的全限定名是隔离的,但是与中台本身的AppClassLoader是共同工作的,所以如果垂直业务包中存在与中台包中类全限定名一致的代码,就会出现各种异常,例如:

【ClassCastException: com.jd.ofw.opi.ws.jsf.Result cannot be cast to com.jd.ofw.opi.ws.jsf.Result】

【IllegalArgumentException: object is not an instance of declaring class】

等等,解决方法也比较简单,只需要在中台的藏经阁配置文件的exportClassConfig中增加对应的包路径的排除配置,这样就屏蔽了所有前台包的重名类,就能正常执行了。

作者:京东零售 姜波

来源:京东云开发者社区 转载请注明来源

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

每天一个公众号干货|定时群发教程

每天一个公众号排版小知识,今天分享的是定时群发功能,一次性给你讲清楚 公众号定时群发可以让我们在固定的时间精准的发表文章,这对发文强迫症的小伙伴来时是一个非常神仙的功能,如果群发之前有事耽误发表了,也可以使…

中国社科院大学-新加坡新跃社科大学全球战略领导力博士学位教育项目招生简章

Singapore University of Social Sciences--University of Chinese Academy of Social Sciences Doctoral program on Global Strategic Leadership V13146152701 一、项目简介 全球经济正在经历由科技进步和创新、政治和人口剧烈变化所带来的巨大的不确定性和挑战。面对日…

Docker学习——③

文章目录 1、Docker Registry(镜像仓库)1.1 什么是 Docker Registry?1.2 镜像仓库分类1.3 镜像仓库工作机制1.4 常用的镜像仓库 2、镜像仓库命令3、镜像命令[部分]4、容器命令[部分]4.1 docker run4.2 docker ps 5、CentOS 搭建一个 nginx 服…

体验SOLIDWORKS旋转反侧切除增强 硕迪科技

大家在设计中经常使用的旋转切除命令在solidworks2024版本中迎来了新的增强,添加了旋转反侧切除选项。在设计过程中不必修改复杂的草图即可切除掉我们不需要的部分。使设计工作更加方便快捷。 打开零部件后,点击键盘上的S键并输入旋转切除以搜索该命令&a…

【mmcv报错】ModuleNotFoundError: No module named ‘mmcv.runner

跑一个代码需要用到mmcv和mmseg 其中有两行代码: from mmcv.runner import load_checkpoint from mmseg.utils import get_root_logger我先是按照官方推荐的安装方法去安装了mmcv和mmseg pip install -U openmim mim install mmcv它会自动帮你安装mmengine 我的cu…

C++学习之map和set

目录 一,什么是map和set 二,set的使用 插入 键值对 删除(erase)与查找 lowerbound与upperbound equal_range multiset 三,map的使用 insert 查找 删除 重载[ ] ​编辑 一,什么是map和set C中…

Spring Security入门教程,springboot整合Spring Security

Spring Security是Spring官方推荐的认证、授权框架,功能相比Apache Shiro功能更丰富也更强大,但是使用起来更麻烦。 如果使用过Apache Shiro,学习Spring Security会比较简单一点,两种框架有很多相似的地方。 目录 一、准备工作 …

有没有好用的人事管理系统?什么才是好的人事系统?

人事管理关系到企业各部门的正常运转,一个好的人事管理系统对于公司来说无疑是锦上添花,实现人事个性化管理,可以极大地提高人员管理的效率。但在信息化转型的浪潮下,很多企业人事信息化却遇到不少问题。 那么请花5分钟认真看这篇…

力扣 141.环形链表和142.环形链表2

目录 1.环形链表Ⅰ解题思路2.环形链表Ⅰ代码实现3.环形链表Ⅱ解题思路4.环形链表Ⅱ代码实现 1.环形链表Ⅰ解题思路 利用快慢指针,快指针一次走两个,慢指针一次走一个,如果出现了快指针为空或者快指针的next为空的现象则说明不带环&#xff0…

海康Visionmaster-全局脚本:方案加载完成信号发给通 信设备的方法

需要在方案加载完成后,发送加载完成信号到全局变量,发送给通信设备。 全局脚本的使用可以通过打开示例,完成常用的基本功能开发。 打开全局通信代码后,在脚本中添加代码

Netty入门指南之传统通信的问题

作者简介:☕️大家好,我是Aomsir,一个爱折腾的开发者! 个人主页:Aomsir_Spring5应用专栏,Netty应用专栏,RPC应用专栏-CSDN博客 当前专栏:Netty应用专栏_Aomsir的博客-CSDN博客 文章目录 参考文献前言多线程…

【Mybatis小白从0到90%精讲】01:IDEA创建Maven项目,添加Mybatis依赖

文章目录 前言一、IDEA创建Maven项目二、添加依赖前言 Mybatis开发,我们从创建一个Maven项目项目开始,推荐使用的开发工具是IDEA,接下来演示使用IDEA创建Maven项目,并添加Mybatis依赖,每一步对应都有配图,Let’s Go~ 一、IDEA创建Maven项目 打开IDEA,点击左上角菜单:F…