为何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

相关推荐

  • 为什么干devops需要懂通信

    干DevOps需要懂通信,原因在于:1、保障服务稳定性、2、提升调试效率、3、优化资源使用、4、强化安全性。具体阐述第一点,DevOps专业人员理解通信协议和网络基础架构能有效地监控和管理应用程序和服务的性能。当应用或服务遭遇网络不稳定性或中断时,他们能迅速定位问题,采取相应措施以减少系统停机时间,…

    2024年3月26日
    10600
  • 敏捷团队最佳人数规模是什么

    摘要:敏捷团队的最佳人数规模是7±2人,这个范围提供了足够的多样性、互补技能和高效的沟通。关键因素包括1、团队沟通的复杂度;2、任务的复杂性与分工;3、团队成员间的协作与自组织能力;4、项目管理的灵活性。在这基础上,每个团队应根据这些因素,结合具体的项目要求和团队独有的动态,来确定自己的最佳规模。这…

    2023年11月13日
    44200
  • DevOps对于小型和初创企业是否适用

    针对DevOps对小型和初创企业的适用性,主体答案是DevOps不仅适用,而且对这些企业极为有利。关键的核心观点包括:1) 提升软件交付速度、2) 强化团队协作、3) 提高产品质量、4) 灵活性与可扩展性、5) 成本效益。DevOps通过实现自动化构建、测试和部署,减少了人为错误,加快了上市时间,有…

    2023年11月18日
    20500
  • 影响进度管理的因素有哪些

    影响进度管理的因素有以下几点:1、人的影响;2、技术、方法和工艺的影响;3、设备、材料的影响;4、资金的影响;5、环境的影响。人的影响,项目经理、项目团队以及项目干系人都会对进度施加影响。 1、人的影响 人是项目任务执行的根本保障,对项目进度能够施加影响的主要人员包括: 项目经理:项目经理是项目管理…

    2022年11月30日
    97800
  • 什么是超级APP

    超级APP,是指那些拥有庞大的用户数,成为用户手机上的“装机必备”的基础应用。各大移动互联网企业提出超级APP概念,给出对超级APP的不同解释。移动互联网供应商给出的答案是:超级APP就应该超级个性化,甚至应该是个性化中的个性化。 一、什么是超级APP 超级APP,是指那些拥有庞大的用户数,成为用户…

    2023年5月10日
    35600
  • 如何管理并发展创业项目

    要管理并发展创业项目,关键在于理解市场需求、制定明确的商业计划、实施有效的团队管理、保持财务健康、利用技术创新、并持续进行市场营销。以制定明确的商业计划为例,这是因为一个细致周到的商业计划可以为创业项目提供长期的指导和短期的行动方案。商业计划应包含市场分析、营销策略、财务预测以及对潜在风险的评估,它…

    2024年4月10日
    4800
  • 常用办公软件有哪几个

    常用办公软件有:1、Worktile;2、通达OA;3、金蝶OA;4、慧点OA;5、PingCode;6、Jira;7、Coding;8、Teambition;9、Trello;10、北极星OKR。其中,Worktie 是团队项目协作系统,能满足团队的任务、项目、文档、IM、目标、 日历、甘特图、工…

    2023年4月19日
    47100
  • apm是什么

    APM,全称可以为“应用性能管理”(Application Performance Management)或者“每分钟操作数”(Actions Per Minute),分别对应:1、应用性能管理的定义;2、每分钟操作数的解释;3、APM的应用。在IT领域,”应用性能管理”是用…

    2023年8月7日
    1.2K00
  • 战略管理中的企业资源指的是什么

    企业战略资源是指企业用于战略行动及其计划推行的人力、财力、物力等资财的总和。这其中也包括时间与资讯,因为他们是无形的,因此很少被人关注。而时间和资讯在某种条件下可能会成为影响企业战略实施的关键性战略资源。 企业战略资源是指企业用于战略行动及其计划推行的人力、财力、物力等资财的总和。这其中也包括时间与…

    2023年5月23日
    38000
  • 企业管理中的常见陷阱有哪些

    企业管理中的五大常见陷阱包括:1、短期绩效压倒长期战略;2、决策过程的集权化;3、公司文化的自满和抗拒变革;4、市场与客户需求脱节;5、数据驱动的决策缺乏直觉和经验的平衡。在这五大陷阱中,短期绩效压倒长期战略尤其值得关注,因为它涉及到公司的未来发展和可持续性。为了追求季度报告上的捷报,一些企业可能会…

    2023年12月19日
    37900

发表回复

登录后才能评论
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

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

分享本页
返回顶部