为何java一般情况不易热部署

热部署是在不重启java虚拟机的前提下,自动更新class的行为,从而更新整个运行时的逻辑。在java开发领域,热部署一直是一个难以解决的问题,java虚拟机理论上只能实现方法体的修改热部署,对于整个类结构的更改,仍然需要重启虚拟机,对类重新加载才能完成更新操作。

其实java代码可以运行一些脚本的,jdk本身就支持调用脚本,从JDK 1.6开始,java就支持JSR223,可以用一致的形式在JVM上执行一些脚本语言,而且可实时编译,运行的效率和java不相上下的。

首先我们来确定一个事情。你的java应用系统需不需要所有的逻辑都是可以热更新的?很多代码都是大致固定不变的,比如util类,一些vo的定义也不大变更的,一些固定的业务也不需要热更新需求的。只有一些经常变更的决策部分,可能需要热更新。

规则引擎的一大特性就是把决策部分逻辑剥离到外面,能够实现逻辑的变动快速热变更。

而这次介绍的规则引擎框架则更为强大,除了能剥离逻辑,还能解耦系统,让你的所有的逻辑块均可随意变更。理论上能实现所有的逻辑都可变更,不是部分

这就是业界现在 很火的编排式规则引擎框架:LiteFlow

LiteFlow的理念很简单,就是把系统中的各个逻辑切分成一小块一小块的,称之为组件,这些组件可以由java代码来写,也可以用脚本来写。然后一个完整业务就是把各个组件组搭一起,形成一个完整业务链。

这种模式的好处就是,不需要热更新的部分可以用java组件来写,需要经常变的部分可以用脚本来写。所有的组件均可混搭成为一个业务。如何编排这些组件,LiteFlow独创了ELF语法,拥有非常好上手的编排语法。程序员的话,十分钟就可以上手。上图粉色部分就是最简单的一种串联形式。

业务链路中组件可实时更换,也可实时增加,形成一个新的业务链。同时定义好的组件也可复用在其他的链路中。

LiteFlow的脚本方案也是利用JSR223来实现的,目前已经实现的脚本有三种:

为何java一般情况不易热部署

为什么说利用LiteFlow编排引擎框架,你的所有逻辑都是可以变更的呢。因为你完全可以把所有的逻辑都用脚本组件来实现,LiteFlow提供了非常强大的脚本支持,完全和Java底层打通,你可以在脚本中import java的类,也可以调用java的类方法,甚至于可以在脚本中去定义方法,定义类,一切写法和java中完全一样。

更夸张的是,LiteFlow允许你在脚本中调用spring上下文的bean,你可以在脚本中调用DAO取数据,可以在脚本中发送rpc给其他微服务。只要你愿意,你可以一行java业务代码不写,完全把业务搬到脚本组件中去。

而且连逻辑块的顺序你也可以随意变动,因为LiteFlow的编排规则和脚本均可实现热变更。

LiteFlow为经常用的存储中间件也提供了原生支持:

为何java一般情况不易热部署

LiteFlow支持所有的关系型数据库,另外zk,etcd,nacos均可支持,还提供了额外的扩展接口,供你自己扩展成其他的存储方式。

有想过么,你所有的逻辑和规则编排语法,都是存在于系统之外的。只要更改其脚本和逻辑,你所有节点的系统不需要做任何事,实时的进行热变更。

而这一切,LiteFlow做到了非常平滑,所谓平滑的意思是,不用担心在热变更的时候你的业务会受到任何的中断,也不会因为热变更造成正在执行的链路产生任何的异常。

LiteFlow编排能力有多强大呢,简单的几个关键字就可以编排出超乎想象的效果:

为何java一般情况不易热部署
为何java一般情况不易热部署

作者:铂赛东
链接:https://www.zhihu.com/question/61040749/answer/2761035331
来源:知乎

延伸阅读

java是什么

Java具有大部分编程语言所共有的一些特征,被特意设计用于互联网的分布式环境。Java具有类似于C++语言的”形式和感觉”,但它要比C++语言更易于使用,而且在编程时彻底采用了一种”以对象为导向”的方式。使用Java编写的应用程序,既可以在一台单独的电脑上运行,也可以被分布在一个网络的服务器端和客户端运行。另外,Java还可以被用来编写容量很小的应用程序模块或者applet,做为网页的一部分使用。applet可使网页使用者和网页之间进行交互式操作。

Java是Sun微系统公司在1995年推出的,推出之后马上给互联网的交互式应用带来了新面貌。最常用的两种互联网浏览器软件中都包括一个Java虚拟机。几乎所有的操作系统中都增添了Java编译程序。

文章标题:为何java一般情况不易热部署,发布者:小编,转载请注明出处:https://worktile.com/kb/p/37463

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小编小编认证作者
上一篇 2023年2月8日 下午3:58
下一篇 2023年2月8日 下午4:34

相关推荐

  • 项目管理方法有哪些内容

    项目管理方法的核心内容包括1、确定项目范围和目标、2、规划时间管理和进度、3、估算成本与制定预算、4、质量管理、5、人力资源管理、6、沟通管理、7、风险管理、8、采购管理、9、相关方管理。在这些方法中,规划时间管理和进度是特别关键的,因为它保证了项目按时完成并达到目标。它包括定义活动、排序活动、估算…

    2024年1月8日
    11100
  • 办公室自动化(oa)

    自动化办公系统(OA)的发展迅猛,为组织结构提供高效、便捷的运营方式。1、改善工作流程;2、增强团队沟通;3、文件管理更为高效;4、数据安全显著加强;5、远程办公易于实现。特别值得强调的是,改善工作流程,系统化的工作流程助于明确职责,缩短工作周期,降低因误解或信息延误引发的风险。 一、改善工作流程 …

    2024年1月11日
    11600
  • 开发过程如何管理

    管理开发过程的方法:一、总则;二、阶段成果;三、岗位设置;四、项目立项;五、项目计划与监控;六、需求分析。为保证日常工作正常有序的进行,让开发中各个环节更紧凑,更可控,需要尽可能实现软件研发流程的正规化,工作过程的流程化。 一、总则 为保证日常工作正常有序的进行,让开发中各个环节更紧凑,更可控,需要…

    2023年3月22日
    22500
  • 声明式编程和命令式编程有什么区别

    区别是:声明式编程是一种编程范式,与命令式编程相对立。它描述目标的性质,让计算机明白目标,而非流程。命令式编程是一种描述计算机所需作出的行为的编程典范。几乎所有计算机的硬件工作都是命令式的,大部分的编程语言都是命令式的。 声明式编程 声明式编程(英语:Declarative programming)…

    2023年2月16日
    1.2K00
  • DevOps项目中的时间管理技巧

    有效的时间管理是DevOps项目成功的关键因素。本文核心观点包括:1、任务优先级划分、2、迭代周期短化、3、自动化流程、4、反馈快速处理、5、持续监控与优化。通过为每个任务设定明确优先级,可以确保关键功能的持续性投入和开发。缩短迭代周期有助于快速交付和减少资源浪费。自动化流程能显著提升工作效率,降低…

    2023年12月13日
    22400
  • oa办公系统需要什么硬件

    oa办公系统需要以下硬件:一、服务器;二、网络设备;三、计算机设备;四、备份设备;五、其他设备。服务器是支持OA办公系统运行的基本硬件设备。企业需要购买一台高性能的服务器,以确保OA办公系统能够稳定地运行。 一、服务器 服务器是支持OA办公系统运行的基本硬件设备。企业需要购买一台高性能的服务器,以确…

    2023年5月28日
    40.4K00
  • 创业公司从哪些方面进行研发管理和绩效考核

    从以下几个方面进行:1、研发团队的组建和管理;2、研发项目的选择与推进;3、技术的迭代与创新;4、绩效考核制度的设计;5、团队的持续培训与成长;6、总结与展望。对于创业公司来说,研发管理和绩效考核是其核心竞争力的重要组成部分。 1、研发团队的组建和管理 创业公司通常从一个核心团队开始,这些成员多半是…

    2023年7月23日
    22300
  • 什么是迁移学习

    迁移学习,是机器学习的一种策略,旨在将已学习到的知识从一个任务迁移到另一个但与之相关的任务。通过这种方式,模型可以利用已有的经验,加速并改进新任务的学习效果。它尤其在数据量有限或获取新数据代价较高的场合中,具有巨大的价值。 迁移学习,是机器学习的一种策略,旨在将已学习到的知识从一个任务迁移到另一个但…

    2023年7月30日
    32900
  • 如何保护我们的在线数据安全

    保护我们互联网在线数据的方法有:1、只要有可能就启用多重身份验证;2、使用防火墙;3、仔细选择浏览器;4、创建强密码,并使用安全的密码管理器;5、在设备上安装最新的安全程序。 如何保护我们的在线数据安全 如果您想知道如何确保互联网保护以及如何在线保护您的数据,您可以遵循以下明智的互联网安全提示: 1…

    2022年10月26日
    37100
  • 如何通过产品管理驱动业务增长

    通过产品管理驱动业务增长着眼于理解客户需求、市场趋势、优化产品功能以及提高用户体验。具体做法包括:1、深入洞察用户需求;2、持续创新产品;3、优化用户体验;4、灵活调整产品战略;5、精准的市场定位。以深入洞察用户需求为例,企业必须投入资源于市场研究和用户反馈,以便不断调整产品,满足快速变化的市场需求…

    2023年12月19日
    18600

发表回复

登录后才能评论
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部