“AI 技术+人才”如何成为企业增长新引擎?戳此了解>>> 了解详情
写点什么

LiveRebel 1.0:更新生产环境里的应用时,不用再停止服务了

  • 2011-07-08
  • 本文字数:1310 字

    阅读完需:约 4 分钟

ZeroTurnaround 的 LiveRebel 1.0 旨在服务器部署自动化的过程中缩短服务停止的时间、减少会话丢失的个数。据 ZeroTurnaround 的 CTO Jevgeni Kabanov 说,大部分应用都要在非高峰时段停止服务进行更新。那些一次只能处理一个服务器的工作人员会非常痛苦。这些工作基本上没有工具支持,流程只有部分进行了脚本化,主要还得靠人工完成。InfoQ 有幸对 ZeroTurnaround 进行了采访。

InfoQ:客户目前使用 LiveRebel 进行部署,能提供一些有关复杂性 / 规模的详细信息么?

这里说的部署都还在测试,部署的规模大多比较小,不过一些生产环境的部署很快就会超过一百个服务器。

InfoQ:LiveRebel 主要关注单节点应用(WAR、EAR、JAR),还是可以处理更复杂的多节点部署?

我们可以处理各种类型的部署,包括规模极大的集群,甚至是弹性云部署。

InfoQ:什么情况下 LiveRebel 会优于比较传统的可用方式?比如一次只更新集群里的一个服务器。

从概念上讲,原因有:

  • 每次只重启一个服务器会花费很长时间,很小的变化也会变得很昂贵。
  • 应用的状态结构只要有变化,会话迁移就会失败。应用如果一直处于活动状态,那会话就能永远维持下去。
  • 数据库结构或远程 API 要是有任何变化,应用的新旧版本就可能不兼容了,这种情况下新旧版本也不能同时运行。

InfoQ:以后的版本会有哪些值得期待的内容?

LiveRebel 1.0 非常简单。不久的将来我们会添加:

  • Hudson/Jenkins 插件,
  • 状态变化(比如添加一个属性)的自动处理机制和手动处理机制,
  • 数据库更新集成,也会集成一些应用生命周期管理产品。

从长远来说,我们打算修复多个比较严重的缺陷,这些缺陷都是我们在现有的应用生命周期管理产品中发现的。

LiveRebel 1.0 包括的功能有:

  • 完全脚本化的服务器和 Web 控制台,控制台可以管理任意规模的 Java EE 应用,这些应用可以在单节点上,也可以在集群里或云中。
  • 对每个类和资源都进行单独的版本化,而不是重新装载整个应用,从而避免与容器重部署和滚动升级相关的问题。
  • 推出对用户不透明的即时更新。代码就地更新,保留所有已有的状态。
  • 在节点上使用纯 Java 的 JVM 插件(-javaagent),这会带来 3-5% 的性能开销。

但这个版本也有一些局限。虽然 LiveRebel 能处理所有资源的变更,但它不能:

  • 替换超类
  • 实现新接口
  • 处理没有 liverebel.xml 文件的 JAR 的变更(在更新第三方 JAR 包和支持库的时候最有可能遇到)

此外,由于 LiveRebel 不能创建新的状态,以下几类更改可能会有一些讨厌的副作用:

  • 添加新的实例属性或重命名现有的实例属性时,现有的对象会把这个实例属性初始化为 null
  • 更改过的构造函数只对更新后才创建的对象生效
  • 一般来说,各种初始化程序的变化对现有对象都没有影响

ZeroTurnaround 最近进行了一项调查,证实了对LiveRebel 的需求。调查指出,服务器部署自动化是特性功能,而不是规范要求的(特别是对有2-50 个服务器实例的生产环境来说,大部分被调查者都处于这种生产环境下),大家也能接受停止服务和丢失会话的做法, ZeroTurnaround 希望能有所改变:“在依赖关系不那么稳固的环境里迁移用户、应用和数据库状态是更新Java 应用每天都要去做的事情,我们希望这件事能变得美好一些。”

查看英文原文: LiveRebel 1.0: No-Downtime Production Updates

2011-07-08 05:331567
用户头像

发布了 151 篇内容, 共 59.8 次阅读, 收获喜欢 18 次。

关注

评论

发布
暂无评论
发现更多内容

不要累死自己,也不要卷死别人。

石云升

内卷 职场经验 11月日更

如何使用 Kubernetes 监测定位慢调用

阿里巴巴云原生

阿里云 Kubernetes 云原生 监控工具

“元宇宙”来了 城市会消亡吗?

CECBC

区块链技术及其军事应用

CECBC

【LeetCode】 连续字符Java题解

Albert

算法 LeetCode 12月日更

大厂算法面试之leetcode精讲14.排序算法

全栈潇晨

LeetCode 算法面试

恒源云(GPUSHARE)_卷积神经网络的工作原理

恒源云

深度学习

Zillow“炒房”失败,算法神话破灭了吗?

脑极体

Nocalhost 成功加入 CNCF 沙箱

科技热闻

30 K8S之Deployment控制器

穿过生命散发芬芳

k8s 11月日更

技术管理哲学随笔:如果空降,你会怎么做

dclar

CTO 技术管理 管理经

文章目录 [Index]

dclar

大数据 技术 管理 操作系统 中间件

【架构实战营】模块五

衣谷

架构实战营

大湾区|Serverless 线下活动两连发

阿里巴巴云原生

阿里云 Serverless 云原生 线下活动 大湾区

react源码解析8.render阶段

buchila11

React React Hooks

Deco 智能代码技术揭秘:设计稿智能生成代码

凹凸实验室

机器学习 AI 大前端 低代码

大厂算法面试之leetcode精讲13.单调栈

全栈潇晨

LeetCode 算法面试

一网成擒全端涵盖,在不同架构(Intel x86/Apple m1 silicon)不同开发平台(Win10/Win11/Mac/Ubuntu)上安装配置Python3.10开发环境

刘悦的技术博客

Python ubuntu Mac Python3 win11

[Pulsar] 按照KeyHashRange读取消息

Zike Yang

Apache Pulsar 11月日更

移动支付与支付安全SDL

明亮安全观

网络安全 信息安全 数据安全 支付安全 交易安全

react源码解析7.Fiber架构

buchila11

React React Hooks React Diff

TypeScript 之基础入门

冴羽

JavaScript typescript html5 翻译 大前端

元宇宙所带来价值共识的历史回归

CECBC

在线文本字符串批量替换工具

入门小站

工具

Taro 3.4 beta 发布: 支持 Preact 为应用开辟更多体积空间

凹凸实验室

taro 大前端 React HarmonyOS

雪花算法对System.currentTimeMillis()优化真的有用么?

秦怀杂货店

分布式 算法 雪花算法

.NET 中缓存的实现

喵叔

11月日更

使用nodejs和Java访问远程服务器的服务

Jerry Wang

Java nodejs 28天写作 abap 11月日更

Git进阶(一):git 管理文件之后文件颜色的含义

No Silver Bullet

git 学习 git revert 12月日更

【Flutter 专题】01 图解 Windows 环境下安装配置环境

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 12月日更

Java难吗?Java基础知识最强总结(2021版)

XiaoLin_Java

Java

LiveRebel 1.0:更新生产环境里的应用时,不用再停止服务了_Java_Ian Roughley_InfoQ精选文章