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

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

相关文章

mybatis的整体架构

mybatis的整体架构分为三层: 1.基础支持层 该层包括:数据源模块、事务管理模块、缓存模块、Binding模块、反射模块、类型转换模块、日志模块、资源加载模块、解析器模块 2.核心处理层 该层包括:配置解析、参数映射、SQL解析、SQL执行、结果集映射、插件 3.接口层 该层包括:SqlSession 基础支持层 该层保护mybatis的基础模块,它们为核心处理层提供了良好的支撑。

中文分词jieba库的使用与实景应用(一)

知识星球:https://articles.zsxq.com/id_fxvgc803qmr2.html 目录 一.定义: 精确模式(默认模式): 全模式: 搜索引擎模式: paddle 模式(基于深度学习的分词模式): 二 自定义词典 三.文本解析   调整词出现的频率 四. 关键词提取 A. 基于TF-IDF算法的关键词提取 B. 基于TextRank算法的关键词提取

水位雨量在线监测系统概述及应用介绍

在当今社会,随着科技的飞速发展,各种智能监测系统已成为保障公共安全、促进资源管理和环境保护的重要工具。其中,水位雨量在线监测系统作为自然灾害预警、水资源管理及水利工程运行的关键技术,其重要性不言而喻。 一、水位雨量在线监测系统的基本原理 水位雨量在线监测系统主要由数据采集单元、数据传输网络、数据处理中心及用户终端四大部分构成,形成了一个完整的闭环系统。 数据采集单元:这是系统的“眼睛”,

csu 1446 Problem J Modified LCS (扩展欧几里得算法的简单应用)

这是一道扩展欧几里得算法的简单应用题,这题是在湖南多校训练赛中队友ac的一道题,在比赛之后请教了队友,然后自己把它a掉 这也是自己独自做扩展欧几里得算法的题目 题意:把题意转变下就变成了:求d1*x - d2*y = f2 - f1的解,很明显用exgcd来解 下面介绍一下exgcd的一些知识点:求ax + by = c的解 一、首先求ax + by = gcd(a,b)的解 这个

hdu1394(线段树点更新的应用)

题意:求一个序列经过一定的操作得到的序列的最小逆序数 这题会用到逆序数的一个性质,在0到n-1这些数字组成的乱序排列,将第一个数字A移到最后一位,得到的逆序数为res-a+(n-a-1) 知道上面的知识点后,可以用暴力来解 代码如下: #include<iostream>#include<algorithm>#include<cstring>#include<stack>#in

zoj3820(树的直径的应用)

题意:在一颗树上找两个点,使得所有点到选择与其更近的一个点的距离的最大值最小。 思路:如果是选择一个点的话,那么点就是直径的中点。现在考虑两个点的情况,先求树的直径,再把直径最中间的边去掉,再求剩下的两个子树中直径的中点。 代码如下: #include <stdio.h>#include <string.h>#include <algorithm>#include <map>#

在JS中的设计模式的单例模式、策略模式、代理模式、原型模式浅讲

1. 单例模式(Singleton Pattern) 确保一个类只有一个实例,并提供一个全局访问点。 示例代码: class Singleton {constructor() {if (Singleton.instance) {return Singleton.instance;}Singleton.instance = this;this.data = [];}addData(value)

【区块链 + 人才服务】可信教育区块链治理系统 | FISCO BCOS应用案例

伴随着区块链技术的不断完善,其在教育信息化中的应用也在持续发展。利用区块链数据共识、不可篡改的特性, 将与教育相关的数据要素在区块链上进行存证确权,在确保数据可信的前提下,促进教育的公平、透明、开放,为教育教学质量提升赋能,实现教育数据的安全共享、高等教育体系的智慧治理。 可信教育区块链治理系统的顶层治理架构由教育部、高校、企业、学生等多方角色共同参与建设、维护,支撑教育资源共享、教学质量评估、

AI行业应用(不定期更新)

ChatPDF 可以让你上传一个 PDF 文件,然后针对这个 PDF 进行小结和提问。你可以把各种各样你要研究的分析报告交给它,快速获取到想要知道的信息。https://www.chatpdf.com/

【区块链 + 人才服务】区块链集成开发平台 | FISCO BCOS应用案例

随着区块链技术的快速发展,越来越多的企业开始将其应用于实际业务中。然而,区块链技术的专业性使得其集成开发成为一项挑战。针对此,广东中创智慧科技有限公司基于国产开源联盟链 FISCO BCOS 推出了区块链集成开发平台。该平台基于区块链技术,提供一套全面的区块链开发工具和开发环境,支持开发者快速开发和部署区块链应用。此外,该平台还可以提供一套全面的区块链开发教程和文档,帮助开发者快速上手区块链开发。