我有一个如下的用例:
一个 Quarkus
微服务负责与其他几个固定 API(例如 ArgoCD REST API、STANDARD CORPORATE DRIVEN API)进行通信,以使整个系统处于所需状态。
整个请求需要事务化,这意味着要么所有API请求都需要成功,要么在出现任何错误时回滚。
如果API返回错误,情况对我来说很清楚。“只需恢复之前所做的一切”,但如果我的Quarkus应用程序崩溃会发生什么?
QUKUS应用程序在endpoint上接收POST请求,该endpoint启动以下任务:
如果我的 Quarkus 应用程序在第二步后死亡,它将使我的应用程序处于不一致状态。
例如,我的第二个请求将使用它的REST API创建一个ArgoCD-Application,如果第三个请求失败,我必须再次删除创建的应用程序,使系统回到一致的状态。
LRA方法在这里不适用,因为ArgoCD Rest API未实现LRA API。
所以至少,我必须在Quarkus应用程序中维护状态和补偿逻辑。但是,我需要在任何地方保持我的事务状态,以便在失败后从中恢复。
我当前的解决方案除了使用Redis数据库来保存每个事务的状态,直到它完成,但我想知道我是否错过了一些与我的用例相匹配的标准解决方案。
我认为没有简单的方法来实现你所寻找的东西。当然,这取决于您的企业可以接受的弹性或隔离级别。实际上,有一个名为LRA(长时间运行动作)的专用微文件规范专门用来解决这个问题。这是传奇模式的一种实现。
问题是,仅仅依靠在这些API上调用回滚是不够的。如果这些回滚失败以及其他许多情况。在这种情况下,总需要有一名协调员来协调整个过程。你可以在上面的链接甚至是LRA的Quarkus扩展中读到更多。
我知道,例如,如果您无法访问这些 API 的源代码来添加 LRA 注释,则可能没有必要解决您的问题,但我希望它能为您提供一些关于人们通常解决此问题的方式的想法。
保罗·菲茨。
Overview This article discusses performance and reliability best practices for Express applications deployed to production. This topic clearly falls into the “devops” world, spanning both traditional
性能与体验是前端的核心竞争力,是最直观反应页面是否好用、易用的标准。用户花在页面上的时间不应该是在等待页面加载和响应,而是使用和顺畅浏览的时间,因此如何提升页面性能和体验,让页面更快的可交互、浏览滚动更顺畅,是需要你持续的研究、优化、推进的。在 Rax 不断应用发展以及成熟的过程中,沉淀总结了一系列的性能体验的措施和最佳实践,通过这些,可以帮助你大幅提高页面的各项性能。 加载性能 统计口径 加载性
问题内容: 我正在使用Hibernate 3编写Web应用程序。 所以,过了一会儿,我注意到有些东西很慢。因此,我测试了Hibernate Profiler,发现Hibernate将无理地进行许多数据库调用以简化操作。原因当然是我加载了一个对象(该对象有几个“父母”),而这些“父母”还有其他“父母”。因此,即使我只需要基本对象,从根本上来说,hibernate都会加载它们。好的,所以我研究了延迟加
这里有些给使用和编写 Ansible playbook 的贴士. 你能在我们的 ansible-example repository.找到展示这些最佳实践的 playbook 样例.(注意: 这些示例用的也许不是最新版的中所有特性,但它们仍旧是极佳的参考.) Topics 最佳实践 接下来的章节将向你展示一种组织 playbook 内容方式. 你对 Ansible 的使用应该符合你的需求而不是我们
处理后台任务与常规调用方法有很大的不同。本指南旨在帮助让您的后台任务平稳有效地运行。本文基于 这篇博客文章。 使任务参数小而简单 方法(任务)在调用之前会被序列化。使用 TypeConverter 类将参数转换为 JSON 字符串。如果您有复杂的实体和 / 或大对象; 包括数组,最好将它们放入数据库,然后只将其标识 (id) 传递给后台任务。 错误例子: public void Method(En