扼杀者模式:如何与旧式整体应用保持一致

2023-10-30 16:20

本文主要是介绍扼杀者模式:如何与旧式整体应用保持一致,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

什么是Strangler模式,它如何转换为Strangler应用程序,以及如何将其全部连接到微服务?

当我们说遗留代码时,您想到的第一件事是什么? 它可能是一个过时的,过时的系统,它经历了数十甚至数千甚至数千个开发人员。 它也可能是一个数据库,其中的代码行堆积如山,方法之间几乎没有联系,而维护却是一场噩梦。 无论哪种方式,我们大多数人都认为这是不好的事情,这种情况主要存在于长期存在的公司中。

但是,无论是12年的公司还是5年的AI-Machine-Learning-Blockchain初创公司,复杂的代码库都会在每种产品中发生。 开发人员来来往往,团队起起伏伏,公司中的每个人都将自己的代码带入混合。 而且,在您不知道它的情况下,您就有一个产品由于其遗留代码而变慢。

这是扼杀者模式有用的时候。

那么……是什么意思呢?

关于扼杀模式的最好和最广为人知的比喻是马丁·福勒 ( Martin Fowler)于2004年撰写的:

“ [澳大利亚]地区的自然奇观之一是巨大的扼杀者藤蔓。 他们在无花果树的上部树枝上播种,并逐渐沿着树下工作,直到扎根在土壤中。 多年来,它们长成奇妙而美丽的形状,同时勒死并杀死了作为寄主的树。”

Strangler模式的名称来自同一棵树,即Strangler Fig,因为它具有相同的行为。 类似于此树的新藤和新藤替换树的原始基础的方式,进入应用程序的新代码也是如此。

随着我们产品的发展,在现有代码的基础上增加了功能和修复形式的复杂性。 我们需要找到一种使应用程序继续运行的方法,而又不会使原始结构或树干过载。 Strangler应用程序概念就是在谈论这一点–创建新的葡萄藤,反过来将有助于应用程序变得更大更好。

换句话说,我们的旧代码很难维护,现在是时候了解如何改进它了。 替换每个无法正常运行的元素是一项艰巨的任务,有时甚至是危险的任务,这可能导致应用程序无法正常运行甚至损坏。 我们需要用新的替换旧的,但是我们需要用聪明的方式做到。

好消息是,有可能通过逐步的过程来重写旧代码,与旧代码并行运行新代码,测试环境并确保一切正常进行。 或者换句话说...

微服务营救?

微服务提供了一种轻量级的体系结构,该体系结构促进了“关注分离”原则。 这样,我们可以封装应用程序的不同部分,每个部分都有自己的逻辑,数据,结构等,并由每个人自己负责。

这个“流行词”已经存在了一段时间,公司正在采用并适应它带来的新元素。 这也就不足为奇了,因为它可能比整体架构更易于处理,并且为我们的工作流程和构建方法带来了很多好处。

与整体架构不同,微服务使我们更容易理解,开发和测试主要产品的不同元素,并且有助于使每个部分对架构侵蚀具有更大的弹性。

微服务使我们能够与当前正在使用的旧方法和代码并行地重新设计和重写代码库中的关键元素。 作为回报,控制从旧版本到新版本的逐步过渡会更容易,以确保应用程序仍按预期运行并运行。

微服务在我们的工作流程中引入了一些基本好处。 第一个是防止整体结构变得更难以管理的能力。 第二个好处是帮助开发人员和运营团队更快地在应用程序或产品中使用某些元素,而无需依赖其他团队或区域来完成或部署其更改。

微服务还可以改善构建测试部署监视器的周期。 他们使团队可以更快地完成应用程序中各个元素的循环,而不必等待测试或部署其他功能。 您可以更快地迭代。

但是,在微服务体系结构中,并不是所有的阳光和彩虹,而且在切换到此方法时,还会有一些不利之处。 迈向微服务架构时,我们需要记住的最关键的要素之一是:

微服务伴随着分散的监控责任

回到Martin Fowler,他在微服务先决条件中提到:

“重要的是要确保您的监控显示出问题时可以Swift做出反应。 特别是,任何事件管理都需要开发团队和运营部门参与,以解决紧迫的问题和根本原因分析,以确保基本问题得到解决。”

确实, 我们可以通过某些方法来对微服务进行篡改 ,并且我们现在对整个基于“分散”服务的应用程序负有责任。 每个服务可以包括其自己的语言,技术,位于不同的计算机上或具有不同的版本控制,这取决于我们的团队来处理负载。

当这些团队试图在影响用户之前预测,理解甚至预防问题时,我们需要考虑的每种服务的排列通常会转化为更高的时间和金钱成本。

我们不能否认,每当出现错误时,每个人的首要考虑就是找到其根本原因并加以解决。 当我们需要了解在哪个机器,微服务或服务器上发生此问题时,这将成为更大的挑战,并且对代码中断的位置有答案可以使我们更加关注应用程序。

虽然这听起来像是对微服务的敲门声,但这并不意味着我们不应该转向这种架构。 这意味着我们应该意识到这些挑战,并且在监视环境时首先需要知道我们在寻找什么 。

最后的想法

如果想要保持应用程序的最佳运行状态,则应尽早采用Strangler模式,或者更准确地说是Strangler应用程序。

微服务可以帮助我们减轻应用程序的负担,而我们不必等待Strangler模式出现就开始转向它。 我们只需要确保我们知道自己在做什么,并且知道我们同时考虑了利弊。

翻译自: https://www.javacodegeeks.com/2018/05/strangler-pattern-how-to-keep-sane-with-legacy-monolith-applications.html

这篇关于扼杀者模式:如何与旧式整体应用保持一致的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/309123

相关文章

C语言中位操作的实际应用举例

《C语言中位操作的实际应用举例》:本文主要介绍C语言中位操作的实际应用,总结了位操作的使用场景,并指出了需要注意的问题,如可读性、平台依赖性和溢出风险,文中通过代码介绍的非常详细,需要的朋友可以参... 目录1. 嵌入式系统与硬件寄存器操作2. 网络协议解析3. 图像处理与颜色编码4. 高效处理布尔标志集合

Nginx location匹配模式与规则详解

《Nginxlocation匹配模式与规则详解》:本文主要介绍Nginxlocation匹配模式与规则,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、环境二、匹配模式1. 精准模式2. 前缀模式(不继续匹配正则)3. 前缀模式(继续匹配正则)4. 正则模式(大

Java中的Lambda表达式及其应用小结

《Java中的Lambda表达式及其应用小结》Java中的Lambda表达式是一项极具创新性的特性,它使得Java代码更加简洁和高效,尤其是在集合操作和并行处理方面,:本文主要介绍Java中的La... 目录前言1. 什么是Lambda表达式?2. Lambda表达式的基本语法例子1:最简单的Lambda表

Python结合PyWebView库打造跨平台桌面应用

《Python结合PyWebView库打造跨平台桌面应用》随着Web技术的发展,将HTML/CSS/JavaScript与Python结合构建桌面应用成为可能,本文将系统讲解如何使用PyWebView... 目录一、技术原理与优势分析1.1 架构原理1.2 核心优势二、开发环境搭建2.1 安装依赖2.2 验

Java字符串操作技巧之语法、示例与应用场景分析

《Java字符串操作技巧之语法、示例与应用场景分析》在Java算法题和日常开发中,字符串处理是必备的核心技能,本文全面梳理Java中字符串的常用操作语法,结合代码示例、应用场景和避坑指南,可快速掌握字... 目录引言1. 基础操作1.1 创建字符串1.2 获取长度1.3 访问字符2. 字符串处理2.1 子字

SpringShell命令行之交互式Shell应用开发方式

《SpringShell命令行之交互式Shell应用开发方式》本文将深入探讨SpringShell的核心特性、实现方式及应用场景,帮助开发者掌握这一强大工具,具有很好的参考价值,希望对大家有所帮助,如... 目录引言一、Spring Shell概述二、创建命令类三、命令参数处理四、命令分组与帮助系统五、自定

SpringBoot应用中出现的Full GC问题的场景与解决

《SpringBoot应用中出现的FullGC问题的场景与解决》这篇文章主要为大家详细介绍了SpringBoot应用中出现的FullGC问题的场景与解决方法,文中的示例代码讲解详细,感兴趣的小伙伴可... 目录Full GC的原理与触发条件原理触发条件对Spring Boot应用的影响示例代码优化建议结论F

MySQL 分区与分库分表策略应用小结

《MySQL分区与分库分表策略应用小结》在大数据量、复杂查询和高并发的应用场景下,单一数据库往往难以满足性能和扩展性的要求,本文将详细介绍这两种策略的基本概念、实现方法及优缺点,并通过实际案例展示如... 目录mysql 分区与分库分表策略1. 数据库水平拆分的背景2. MySQL 分区策略2.1 分区概念

Spring Shell 命令行实现交互式Shell应用开发

《SpringShell命令行实现交互式Shell应用开发》本文主要介绍了SpringShell命令行实现交互式Shell应用开发,能够帮助开发者快速构建功能丰富的命令行应用程序,具有一定的参考价... 目录引言一、Spring Shell概述二、创建命令类三、命令参数处理四、命令分组与帮助系统五、自定义S

C语言函数递归实际应用举例详解

《C语言函数递归实际应用举例详解》程序调用自身的编程技巧称为递归,递归做为一种算法在程序设计语言中广泛应用,:本文主要介绍C语言函数递归实际应用举例的相关资料,文中通过代码介绍的非常详细,需要的朋... 目录前言一、递归的概念与思想二、递归的限制条件 三、递归的实际应用举例(一)求 n 的阶乘(二)顺序打印