Java 应用程序的零停机部署

2024-01-02

我正在尝试构建非常轻量级的解决方案,以实现 Java 应用程序的零停机部署。为了简单起见,我们假设我们有两台服务器。我的解决方案是使用:

  1. 在“前面”——一些负载均衡器(软件)——我在这里考虑 HAProxy。

  2. 在“背面”- 两台服务器,都运行 Tomcat 并部署了应用程序。

当我们即将部署新版本时

  1. 我们使用 HAProxy 禁用其中一台服务器,因此只有一台服务器(我们称之为服务器 A,运行旧版本)可用。

  2. 在其他服务器(我们称之为服务器 B)上部署新版本,运行生产单元测试(如果我们有它们:-)并使用 HAProxy 启用服务器 B,同时禁用服务器 A。

  3. 现在我们又只有一台服务器处于活动状态(服务器 B,带有新版本)。在服务器 B 上部署新版本并重新启用它。

有什么建议如何改进吗?如何自动化?

有现成的解决方案吗?还是我必须使用自己的自定义脚本?

Thanks!


滚动升级确实是一个很好的解决方案,前提是您的负载平衡器支持此选项(服务器饥饿)。 另一个解决方案是使用支持 OSGi 的应用程序服务器来热替换部分或整个应用程序。

我会推荐第一个。 SpringSource 的 AMS 监控控制台可以关闭 tcServer 集群(一个增强版的自定义 tomcat),IIRC 会自动进行滚动升级(但请检查文档)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java 应用程序的零停机部署 的相关文章

  • SWIG 类型映射 uint8_t* 从 C/C++ 到 java.nio.ByteBuffer

    我正在尝试将输入和输出缓冲区从 C 传递给 java 类 出于效率原因 我需要使用 ByteBuffer 这两个缓冲区都是在 C 部分中分配的 我需要将它们传递给一个 java 函数 该函数将使用输入缓冲区进行一些计算并将结果写入输出缓冲区
  • 使用 Java-Large 文件查询 JSON 文件

    我正在尝试使用 java 解析下面的 JSON 文件 我需要能够 按 ID 或名称或对象中的任何字段搜索文件 也在字段中搜索空值 搜索应返回整个对象 该文件将会很大 并且搜索应该仍然很省时 id 1 name Mark Robb last
  • Spring MVC 中的 CSRF(跨站请求伪造)保护

    我对春季的 CSRF 跨站请求伪造 保护有点困惑 不 我有我的 jsp 我的控制器和一个 Web 服务 我想要做的是在 Web 服务级别验证令牌 如果令牌匹配 则运行 Web 服务 在我的例子中执行数据库插入 JSP file
  • Spring boot 404错误自定义错误响应ReST

    我正在使用 Spring boot 来托管 REST API 即使浏览器正在访问 URL 以及自定义数据结构 我也希望始终发送 JSON 响应 而不是使用标准错误响应 我可以使用 ControllerAdvice 和 ExceptionHa
  • 从 Java 启动外部进程:stdout 和 stderr

    我正在使用标准从 java 启动一个外部进程java lang Process 我试图弄清楚该过程的输出是什么 但是采用结合了两者的格式stdout and stderr 目前 我有Process getInputStream它提供了访问s
  • Java 中的 TreeSet 与 C#.net 的等效项

    我有 Java 代码 其中包含TreeSet 我想将代码转换为 C 我可以使用哪个等效集合 如果没有 请提出替代方案 那将是系统 集合 通用 SortedSet
  • IntelliJ Idea,如何从控制台删除java文件目录?

    当您运行文件时 它会打开控制台窗口 并且一直在顶部显示该文件所在的目录 这非常令人恼火 因为现在 为了将其他行与目录混合分开 我必须在启动任何 System out println 命令之前使用 n C Program FILEs 我想摆脱
  • JSF 错误 - IllegalStateException:PWC3999:提交响应后无法创建会话[重复]

    这个问题在这里已经有答案了 我是 JSF 新手 正在构建一个使用 Facelet 创建的应用程序 这是我的模板master xhtml
  • 在Tomcat中设置环境变量TESSDATA_PREFIX

    我们正在使用名为 Tess4J 的 Tesseract OCR Java 库 如果作为独立应用程序运行 它可以正常工作 它需要一个名为 TESSDATA PREFIX 的变量 其中包含 tessdata 配置和其他字符集相关文件 它也可以与
  • Knuth-Morris-Pratt 算法

    解决方案是Knuth Morris Pratt 算法 https en wikipedia org wiki Knuth E2 80 93Morris E2 80 93Pratt algorithm 干草堆 AAAAAAAAA 针 AAA
  • JavaFX 动画使用循环?

    我正在尝试制作一款类似太空侵略者的游戏 我画了一个正方形 我想通过使用循环逐步向下移动它thread sleep 然而 正方形立即被绘制出来 我知道有可以使用的动画路径 但我想保持低水平并仅使用坐标系 有没有办法使用这样的循环来制作时间轴动
  • Java中的运算符重载和覆盖

    运算符重载和运算符重写有什么区别 它们在继承和控制台程序中是否相同 Java 不支持运算符重载和重写 检查以下引用自的描述 http java sun com docs white langenv Simple doc2 html http
  • 酷还是傻? Catch(异常[NamingException, CreateException] e)

    我正在编写一些代码 我注意到异常处理中的一种模式让我思考 try do stuff throws JMS Create and NamingException catch NamingException e log1 e rollback
  • EasyMock : java.lang.IllegalStateException: 1 个匹配器预期,2 个记录

    我在使用 EasyMock 2 5 2 和 JUnit 4 8 2 通过 Eclipse 运行 时遇到问题 我已阅读此处所有类似的帖子 但尚未找到答案 我有一个包含两个测试的类 它们测试相同的方法 我正在使用匹配器 每个测试单独运行时都会通
  • 在 Java/GWT 中解析用户时间输入

    解析用户在 GWT 中的文本字段中键入的时间的最佳方法是什么 默认时间格式要求用户完全按照区域设置指定的时间格式输入时间 我想要更加灵活 因为用户可以通过多种不同的方式输入时间 例如 8 8p 8pm 8 15pm 13 15 1315 1
  • APACHE POI 从 Java 中的 Excel 获取精确的字体颜色

    在 Excel 工作表中 如何使用 Java 中的 Apache POI 获取准确的字体颜色值 我试图通过使用来获取字体颜色 org apache poi ss usermodel Font f book getFontAt style g
  • JSF“总”变量类似于 JSTL 中的 c:set

    我不喜欢 JSF 但我需要用它来解决这个问题 我正在 纯 JSF 中工作 所以这就是我基本上需要的 但我不知道如何用 JSF 来实现它
  • 解析 SWIG 接口文件的结构属性

    这是我不久前问过的问题的延续 为通过参数返回的函数创建类型映射 https stackoverflow com questions 12793973 create a typemap for a function that returns
  • 如何获取 res.drawable 文件夹的路径来复制文件?

    我正在编写我的应用程序AndroidStudio 我的里面有gif文件drawable gifs文件夹 我希望将该文件复制到MediaStore Images Media单击按钮后的文件夹 目前 即使使用发布的一些答案 我也无法获取我的 g
  • 是什么让热部署成为“难题”?

    在工作中 我们经常遇到这样的问题 永久代内存不足 http www jroller com agileanswers entry preventing java s java lang例外 团队负责人认为这是 JVM 中的一个错误 与代码的

随机推荐

  • Laravel 方法分页不存在

    我正在尝试对模型结果进行分页 但收到 分页方法不存在 这是我的代码 user dispatches Dispatch all gt where user id Auth id gt paginate 10 我需要获取用户 ID 等于当前经过
  • 我可以在 Three.js 中隐藏网格的面吗?

    我想使网格的某些部分在运行时不可见 我可以将这些部分设置为不可见 透明吗 通过改变单个面孔的属性 网格本身仅使用一种材料 示例说明 as the editor理解这个问题 想象一个网格 这里有 20 个顶点的几何图形 其中每个四个顶点的四边
  • DSPack - 如何获取声音输出的默认设备?

    在 Windows 7 中 有多个播放设备 示例 在我的笔记本电脑上 扬声器和双耳机 独立双耳机 SPDIF 通过 HP Dock 进行数字输出 情况是这样的 我正在编写一个应用程序 让用户选择输出设备并将其保存到应用程序的设置中 因此 它
  • Java 相当于 Cocoa 委托/Objective-C 非正式协议?

    Java 中 Cocoa 委托的等价物是什么 我知道我可以将一个接口传递给一个类 并让该类调用适当的方法 但我想知道是否有其他方法可以实现更接近 Cocoa Objective C 的非正式协议的东西 简而言之 Java 中没有任何东西能像
  • 如何在 Visual Studio 2013 中创建数据库项目

    我正在将包含一些 C 项目的解决方案从 Visual Studio 2008 迁移到 VS2013 迁移进行得很顺利 进行了一些调整 但是还有一个 dbp 项目 数据库项目 来自 VS2008 它拒绝在 VS2013 中迁移 加载 我在这个
  • 为什么通过 newCachedThreadPool 创建的 ExecutorService 是邪恶的?

    保罗 泰玛推介会 http paultyma blogspot com 2008 03 writing java multithreaded servers html有这一行 Executors newCachedThreadPool万恶
  • 在 OpenCV 中查找轮廓的“fitLine”

    我是一个在流中查找轮廓的程序 例如 我想找到可以描述这个轮廓的 点集 就像红线一样 黄色部分是轮廓的矩 我尝试使用fitLineopencv 的函数 但结果是无意义的 任何想法如何获得轮廓的中线 这应该代表我的 Contours 的关键方面
  • 有没有一种方法可以为 sendfile 编写不直接使用系统调用指令的 shellcode?

    我正在处理一个类似 ctf 的挑战 它正在过滤我的 shellcode 以确保我没有分别具有 syscall sysenter 和 int 指令 0x0f05 0x0f34 和 0x80cd 的十六进制值编码 基本上我有一个可以打开文件的
  • 哈希码的理解

    哈希函数对于实现哈希表很重要 我知道在java中 对象有其哈希码 该哈希码可能是由弱哈希函数生成的 以下是 补充哈希函数 的一个片段 static int hash Object x int h x hashCode h h lt lt 9
  • 使用 Node.js 提供网页时如何摆脱 .html 扩展名?

    我是 Node js 的初学者 正在使用 Express 和 ejs 布局 我想知道如何在发布页面时摆脱 html 扩展名 例如 如果我转到我的 localhost 3000 about html 这可以工作 但我希望它显示为 about
  • 无需 ctrl+空格即可自动完成

    Every time I must use CTRL SPACE for get complete variants But I need it often I need list of variants every time when I
  • 在 iOS 中将项目添加到阅读列表

    是否可以从应用程序将项目 url 添加到 Safari 中的阅读列表 我环顾四周 但只能找到信息如何手动添加 http mac tutsplus com tutorials tips shortcuts quick tip how to u
  • MVC API 控制器的复杂对象未通过 jquery ajax 调用填充

    我正在尝试调用 POST API 控制器 控制器被调用 但复杂对象是空的 我已经运行了 Fiddler 该对象甚至已经填充在那里 我究竟做错了什么 我的 C 对象 createdUser已包含 Web Api 所需的正确格式的数据 无需将其
  • 为什么我们使用完 System.out Stream 后不关闭它呢?

    我只是想知道 我们通常会在最后关闭流 但为什么我们不关闭System out打印流与System out close 如果关闭它 您将无法再写入控制台 因此当进程终止时 让我们将此任务留给虚拟机 您应该只关闭您拥有或手动创建的流 Syste
  • 在 IntelliJ IDEA 中为 scala 项目附加源

    我有一个带有 Scala 的 Playframework 2 项目 非常小的一个 它用斯卡拉异常 https github com playframework Play20 wiki ScalaAnorm图书馆 我有这样的代码 packag
  • 从 JSON 到 Avro 的 Kafka 流

    我尝试使用 Kafka Stream 将带有 String JSON 消息的主题转换为另一个主题 作为 Avro 消息 流主要方法 streamsConfiguration put StreamsConfig KEY SERDE CLASS
  • 查找关联计数大于零的所有记录

    我正在尝试做一些我认为很简单但似乎并不简单的事情 我有一个项目模型 有很多空缺 class Project lt ActiveRecord Base has many vacancies dependent gt destroy end 我
  • 如何处理服务器和本机 Android 应用程序之间的时区差异?

    假设我的服务器位于美国 而我住在俄罗斯 我们知道他们有不同的时区 我的应用程序获取文本 String 来自服务器 这个文本数据有Date数据库中的列用于保留记录日期 当我获取数据时 我也得到date知识 这样我就可以按时间对它们进行分组 第
  • 在哪里可以找到包含常见食物列表的文本列表或库? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在编写一个解析电子邮件的 Python 脚本 其中涉及在电子邮件文本中搜索常见食品的任何单词 我需要某种方法来确定单词是否确实是食物
  • Java 应用程序的零停机部署

    我正在尝试构建非常轻量级的解决方案 以实现 Java 应用程序的零停机部署 为了简单起见 我们假设我们有两台服务器 我的解决方案是使用 在 前面 一些负载均衡器 软件 我在这里考虑 HAProxy 在 背面 两台服务器 都运行 Tomcat