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

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

时间:2023-11-03 12:39:07浏览次数:40  
标签:Paas 业务 部署 实践 化热 垂直 前台 身份 中台

前言

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

一、设计-领域模型设计

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

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

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

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

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

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

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

二、代码结构设计

1.中台-扩展点jar

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

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

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

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

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

4.前台-包内结构示例

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

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的问题

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

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

三、部署流程

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

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

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

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

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

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

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

四、踩坑和一些经验总结

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中增加对应的包路径的排除配置,这样就屏蔽了所有前台包的重名类,就能正常执行了。

作者:京东零售 姜波

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

标签:Paas,业务,部署,实践,化热,垂直,前台,身份,中台
From: https://blog.51cto.com/u_15714439/8163290

相关文章

  • 苏格拉底问答、实践过程截图、遇到问题解决问题截图,代码链接
    #include<signal.h>#include<stdio.h>#include<sys/time.h>intcount=0;structitimervalt;voidtimer_handler(intsig){printf("timer_handler:signal=%dcount=%d\n",sig,++count);if(count>=8){printf("cancel......
  • 治理效率提升77%!揭秘基于DataLeap实时健康分的最佳实践
    更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群背景某企业实时数仓团队通过数据收集、整合、计算和存储构建实时数据仓库,为企业提供快速、准确、可靠的实时数据分析和决策支持。目前该实时数仓团队已运行了上万的实时任务,依赖的组件繁多(例......
  • 企业数智化领先实践,学得会!
    学习别人的成功经验是成本最少,见效最快的。企业数智化转型也是如此。学习最佳实践,我们往往会将目光放在一些超大体量的企业身上,因为他们已经取得了成功,企业希望将这个成功进行复制。但俗话说,十个最佳实践,九个学不会。这是因为“最佳”往往基于特定的背景,很多企业只学到了“形”而没......
  • 【实践篇】一次Paas化热部署实践分享
    前言本文是早些年,Paas化刚刚提出不久时,基于部门内第一次Paas化热部署落地经验所写,主要内容是如何构建一些热部署代码以及一些避雷经验。一、设计-领域模型设计1.首先,确定领域服务所属的领域2.其次,确定垂直业务身份3.再次,提炼领域能力及扩展点【实际工作中,我们已经把下面这......
  • 技术教程 | 基于 Web 端的屏幕共享实践
    ​ 屏幕共享的英文叫做DesktopSharing,通俗点讲就是将自己电脑的画面分享给其他人,被分享的可以是整个电脑屏幕、应用程序或者某一个打开的网页等等。而随着音视频领域的深入发展,完备的功能在用户需求激增的背景下催生,不管是是在学习、生活或是娱乐场景下,屏幕共享作为实现互动......
  • nebula-br local-store 模式,快速搭建主备集群实践
    因为线上图数据库目前为单集群,数据量比较大,有以下缺点:单点风险,一旦集群崩溃或者因为某些查询拖垮整个集群,就会导致所有图操作受影响很多优化类但会影响读写的操作不好执行,比如:compact、balanceleader等;双集群在升级的时候也非常有优势,完全可以做到不影响业务运行,比如先升级......
  • ZEGO 教程 | RTC + AI 视觉的最佳实践(移动端)
    ​ ​摘要:帮助开发者在音视频场景中快速获得AI视觉功能——美颜、滤镜、背景抠图等。文|即构 NativeSDK开发团队Z世代作为社会新的消费主力,追求个性、热爱新奇事物,青睐与酷炫新奇的玩法、紧跟娱乐潮流。AI+音视频的结合,作为在音频和视频之外第三个场景玩法创新的支撑点......
  • 【行云流水线实践】基于“OneBuild”方法对镜像进行快速装箱
    在云原生领域,无论使用哪种编排调度平台,Kubernetes,DockerSwarm,OpenShift等,业务都需要基于镜像进行交付,我们在内部实践“Source-to-image”和链式构建,总而总结出“OneBuild”模式。其核心思想是:一处构建,多处使用。问题一般,我们会使用类似JenkinsCI系统来构建镜像,以满足持续集成,......
  • 卓越五项:卓有成效的管理者5项实践
    一、课程导入发言人  00:10大家好,欢迎大家来到卓越五项的课堂,这个课叫卓越五项。我有个副标题叫卓有成效的管理者五项实践。一般的管理的课程都是针对我们带团队的管理者。我们这门课是针对182年所有的职场的人士都可以从这门课中得到一些收获。如何让自己变得有效率,而且更加......
  • 用结构化思维解一切BUG(2):实践原则
    背景本文是系列文章《用结构化思维解一切BUG》的第二篇。本系列文章主要介绍一种「无需掌握技术细节,只需结构化思维和常识即可解一切BUG的方法」。在前序文章《用结构化思维解一切BUG(1):核心思路》中,我介绍了用结构化思维解BUG的核心思路。即,基于结构化的「假设树」,通过重复多次执......