写点什么

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:332099
用户头像

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

关注

评论

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

耗时5小时,用低代码搭了2套应用,我才明白它为什么能火了

优秀

低代码 低代码开发 低代码开发平台 低代码平台

中国区块链产业全景图

CECBC

技术应用

让宝妈宝爸告别安全顾虑,区块链构建母婴行业新生态

CECBC

母婴

流水线成功涨薪到年薪30W 只有努力才能成功

学Java关注我

Java 架构 程序人生 编程语言

Python3 print变量打印输出功能后面隐含的几个知识点

老猿Python

Python print str repr

vue+webpack+vue-cli

Vue js 打包 webpack vuecli

软件 IT 专业大学生职业方向情况调查

李孟聊AI

大学生日常 IT 大学生

浙江宁波市区块链研究机构发布首个全国性公证联盟运营链

CECBC

区块链

CloudQuery v1.3.7版本更新,新增「导出限制」

BinTools图尔兹

数据库 sql 数据安全 数据库管理

让电影票房飞一会儿,五一换个姿势重温经典

华为云开发者联盟

音视频 电影修复 视频超分 媒体处理 混合失真

ceph-csi源码分析(4)-rbd driver-controllerserver分析

良凯尔

Kubernetes 源码分析 Ceph CSI

SpringSecurity+JWT认证流程解析

学Java关注我

Java 编程 程序人生 计算机 架构】

飞桨中国行落地合肥,与当地企业共话产业智能化升级

百度大脑

智能化 飞桨中国行

云图说|ModelArts Pro,为企业级AI应用打造的专业开发套件

华为云开发者联盟

AI 企业应用 ModelArts Pro 开发套件

图的学习总结

Nick

数据结构 数据结构与算法

LeetCode题解:191. 位1的个数,位运算,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

NumPy之:数据类型对象dtype

程序那些事

Python 数据分析 Numpy 程序那些事

人类视觉神经科学助力音视频产业革命-弱网下的极限实时通信

张音乐

音视频 笔记 弱网下的极限实时视频通信

量化策略倍投系统搭建,马丁策略交易

阿里码农肝了2晚,整理的Java语法总结,网友:考试复习全靠它了

飞飞JAva

Boss直聘转发超100W次Java面试突击手册 火遍全网

比伯

Java 编程 程序员 架构 计算机

一房地产数据服务初创公司的面经

HoneyMoose

一文带你了解华为云GaussDB的五大黑科技

华为云开发者联盟

数据库 华为云 GaussDB(for Influx) 时间线 tpmC

uni-app rtm插件集成指南及常见问题--iOS

anyRTC开发者

uni-app ios 音视频 WebRTC sdk

抵制羊毛党,图计算“加持”互联网电商风控

华为云开发者联盟

风控 图计算 互联网电商 羊毛党

GitHub开源的中国亲戚关系计算器

不脱发的程序猿

GitHub 开源 程序员 4月日更 中国亲戚关系

迪安精选:那些好用的浏览器扩展

迪安

浏览器 插件 扩展

ceph-csi源码分析(3)-rbd driver-服务入口分析

良凯尔

Kubernetes 源码分析 Ceph CSI

Faiss源码剖析:类结构分析

华为云开发者联盟

机器学习 KNN Faiss 类结构 Quantizer

yarn的applicationMaster介绍

五分钟学大数据

YARN

Kubernetes 上如何控制容器的启动顺序?

张晓辉

Kubernetes istio

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