迁移到云原生:如何使用微服务迁移应用程序

这篇具有很好参考价值的文章主要介绍了迁移到云原生:如何使用微服务迁移应用程序。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

企业遇到大规模部署和监督生产中的应用程序的任务。幸运的是,我们可以使用大量技术和工具。然而,从传统的,整体的结构转变为云态一个人提出了自己的障碍。在这里,您会发现将应用程序从整体设置转移到基于微服务的体系结构时要进行的基本初始步骤列表。

无缝过渡的逻辑步骤

Compared to traditional big applications, microservices are like small independent units that handle specific tasks and collaborate to make an application work.使用这些分布式组件提供了许多好处,但它也带来了自己的一系列挑战。

维护软件质量在从传统系统转移过程中可能很难。通常,它使团队无法开始过渡。但通过一些计划和准备,这是可以做到的。该过程可以分为几个步骤。让我们一起穿过它们。

第 1 步:定义边界

初始阶段涉及描绘应用程序的边界和功能,这是揭示整体结构内耦合程度的关键一步。耦合是主要的挑战,通常被轻蔑地称为“意大利面条代码”。在单体应用程序的背景下。该术语源于代码库随着大小和年龄的增加而积累越来越多的耦合水平的趋势。

事实证明,在过渡期间解耦紧密互连的元素具有挑战性,虽然代码库的年龄和大小是耦合问题的潜在指标,但它们并不是确定的。单一应用程序本质上并不是紧密耦合的;这取决于编码实践。将耦合视为对手,我们强调完善的编码实践,在整体创建过程中平衡内聚性和耦合,有助于更平滑的过渡。

有效的转换取决于单体内部正确的边界定义,其中微服务充当具有特定功能的单个单元。在整体应用程序中应用类似的边界原则有助于实现更易于管理的过渡。

第 2 步:识别耦合

虽然第一步侧重于描绘系统的功能,但第二步建立边界(有界上下文),包含这些功能的集合。例如,在销售点应用程序中,购物车可能由一侧的库存边界组件和另一侧的身份限制元素组成。购物车对象充当巩固和集成这些元素的手段。

第 3 步:转向 RPC

在第三步中,我们的重点是识别和记录有界上下文之间的互连,辨别哪些引用了其他上下文,并确定需要跨上下文进行函数调用的功能。这种耦合体现在两个主要类别:函数/API 和数据库模式。

对于函数/API,从网络中涉及远程过程调用的过渡涉及远程过程调用( rpc )通常通过HTTP,GRPC等执行。同步RPC作为中间步骤,但它不是分布式系统的可持续解决方案。最终目标是用异步消息系统替换同步的RPC调用。

在此过程中,每个边界都保持其数据自治。微服务不鼓励直接使用共享数据库,因为它引入了不需要的耦合。解耦后,可以避免从一个限界上下文的模式查询另一个限界上下文的模式。

总结这些步骤,我们通过将所有进程内通信转换为网络上的 RPC 调用,从本质上将我们的架构转变为分布式整体架构,这是实现云原生应用程序的重大一步。

第 4 步:定义数据所有权

此阶段的目标是消除数据与保留应用程序状态的状态存储机制的刚性耦合。这种转变允许过渡到更加无状态的模型,其中微服务之间传输的数据仅包含微服务边界内任务的必要信息。例如,购物车对象可以保留购买者的身份和产品的库存ID,直到在结帐时使用它们,而不是频繁地访问持久存储区域以检索和更新购物车中的数据。

第 5 步:实现异步消息传递

最后,第五步是,需要付出额外的努力来实现服务的自治。隔离有界上下文后,该过程涉及将相同的原则应用于其他边界和功能,直到整个转换完成。命令和事件被分派并广播到消息代理,从而消除了对 RPC 的需要。这简化了与维护服务之间的远程过程调用所需的访问权限相关的复杂性,即使它们在不同的主机上运行。用基于角色的访问控制证书取代这种交互标志着实现服务自主性的重大进步。

为云原生开发选择正确的编程语言

现在,让我们探索一些适合现代云原生开发的编程语言。

根据我的经验,我将从一些经过时间考验的可靠选项开始,然后深入研究随着教育环境中越来越多的教授而日益受到重视的新语言。

让我们从随着互联网的发展而演变的语言开始:

Java

被认为是一种多才多艺的通用编程语言,Java 巩固了其作为云计算首选之一的地位,受到数以百万计的开发人员,并在全球超过 150 亿个终端上执行。Java 提供无与伦比的多功能性,是少数能够使用统一代码库为网站、桌面、移动设备和视频游戏创建应用程序的语言之一。

Java 的主要优点包括:

  1. 面向对象:采用面向对象范例。

  2. 无依赖使用:可以在没有依赖关系的情况下使用。

  3. 平台无关性:真正平台无关,兼容各种操作系统。

  4. 易于学习:以其相对简单的学习曲线而闻名。

  5. 通用代码库:用 Java 开发的云计算程序可以在不同操作系统(例如 Windows、iOS、Blackberry 和 Linux)上无缝运行,从而保持解释一致的代码库。

Java 拥有内置的强大安全功能,使其成为那些旨在实现无服务器架构的人的首选。Java 利用不同框架的提前 (AOT) 编译,有效地解决了大分布式大小和长冷启动时间的问题。诸如Amazon Web Services(AWS),Microsoft Azure和Google Cloud Platform(GCP)之类的主要云提供商在其SDK中为Java提供了强有力的支持,从而确认其在云开发方面的据点。

Python

Python 成为当前云领域最重要的语言之一。With a learner-friendly approach, Python caters to novices, making programming accessible to nearly everyone. Python 拥有一系列第三方模块、广泛的支持库以及强大的开源和社区开发选项等出色功能,是一种高级、解释性和高度交互的面向对象脚本语言。其定义明确的分层缩进格式有助于轻松阅读,比标点符号更频繁地使用英语语法和关键字,从而简化了学习过程。

Python 融合了速度、生产力、强大的社区支持和开源开发等高级属性,以及丰富的支持库和第三方模块。Python 应用广泛,适合创建商业应用程序、游戏、操作系统、计算和科学应用程序以及图形设计和图像处理应用程序。

Python 的主要特性和优点包括:

  1. Web 框架和应用程序

  2. 科学和计算应用

  3. 基于 GUI 的桌面应用程序

  4. 语言发展

Python 在 AWS 云中得到广泛使用,并在 AWS Lambda 中享有本机支持,这使其成为在 Amazon Web Services 上开发无服务器应用程序的绝佳选择。

.NET

虽然出于多种原因(主要是由于它偏向 Windows 操作系统并且受 Microsoft 管辖)不是我的首选语言,但 ASP.NET 仍然在 Web 编程中占据着重要地位。

ASP.NET 主要用于开发 Web 应用程序和功能丰富的网站,由于其能够提供动态网页和跨各种浏览器兼容的尖端解决方案,因此在云计算领域脱颖而出。

新手开发人员将会欣赏 ASP.NET 框架的用户友好性,它配备了许多内置功能,包括:

  1. 最大限度地减少大型应用程序开发中的代码使用。

  2. 有效创建动态网页。

  3. 语言独立性和易用性。

  4. 逻辑和内容分离以简化应用程序开发。

  5. 利用内置 Windows 身份验证增强应用程序安全性。

PHP

PHP 是一种在程序员中广泛使用的语言,主要用于网站自动化。PHP 以其易于学习和操作而闻名,是创建具有动态元素的应用程序的首选。作为一种面向对象的语言,PHP 能够开发复杂且大规模的 Web 应用程序。

PHP 在 UNIX 和 Windows 服务器上运行,拥有强大的输出缓冲区功能,这有助于其流行。其卓越的速度、成本效益、可靠性和安全性使其成为探索云原生应用程序的绝佳选择。

此外,PHP 与各种流行的数据库管理系统无缝集成,有助于直接连接到 MySQL 来执行数据库备份等任务。其可靠性、安全性、速度和经济性使 PHP 成为满足云计算独特开发需求的可行语言。

Node.js

Node.js 利用 JavaScript V8 引擎,可在包括 Chrome 在内的各种浏览器中无缝运行,并作为独立工具运行。它擅长轻松处理服务器请求,跨编码语言、API 和外部库扩展 JavaScript 的功能。Node.js 在 Web 应用程序开发中发挥着至关重要的作用,体现了“JavaScript 无处不在”的理念。服务器端脚本和客户端编程的范例。

Node.js 以其用户友好的操作和端到端应用程序开发的有效性而闻名,它具有非阻塞、事件化、异步通信模式,允许高效处理大量连接。Node.js 在 Google JS 引擎上运行,以其卓越的速度而脱颖而出,使其成为现代开发人员的最爱。

Node.js 的主要优势包括跨平台兼容性、使用单一编码语言 (JavaScript) 的便利性、JavaScript V8 引擎的强大功能、对快速部署和微服务开发的支持、高可扩展性、令人印象深刻的数据处理能力、活跃的开源社区、通过节点包管理器 (NPM) 提供的附加功能、高级托管功能和快速数据流。

现在,让我们探索一些为满足云原生编程不断变化的需求而出现的新产品。

现在,让我们探索云原生编程领域中出现的一些较新的语言。

Golang

  • 迅速成为云原生操作的首选语言。

  • 在创建 Docker、Kubernetes 和其他云相关技术方面表现突出。

  • 因其简单、速度、效率和可扩展性而广受欢迎。

  • 标准库支持主要的云提供商。

Ballerina

  • 云的开源语言,专为网络服务而设计。

  • 专注于使编码网络结构成为语言固有的。

  • 对分布式交易,断路器模式等的一流支持。

  • 它直接部署到 Docker 和 Kubernetes 上,并与常见 IDE 集成。

Pulumi

  • 基础设施即代码语言于 2018 年推出,支持 Kubernetes。

  • 利用现有的编程语言,例如 TypeScript、JavaScript、Python、Go 和 .NET。

  • 提供可下载的 CLI、运行时、库和托管服务,以实现高效的基础设施管理。

  • 旨在满足云应用程序的构建、部署和管理需求。

选择正确的语言取决于您的项目要求和团队的专业知识。无论您选择成熟的产品还是最新的产品,请确保它们符合您在云原生环境中的微服务开发目标。

总之,云原生开发的编程语言格局提供了多种选择。Java、Python、.NET、PHP 和 Node.js 等既定选择提供了多功能性。Golang 因其简单性和可扩展性而脱颖而出,而 Ballerina 则无缝集成网络结构。Pulumi 通过语言多功能性满足基础设施即代码需求。无论是选择经过验证的语言还是采用更新的语言,请根据项目要求和团队专业知识来调整您的选择,以实现高效且可扩展的云应用程序。


作者:Kapil Rawa

更多技术干货请关注公号【云原生数据库

squids.cn,云数据库RDS,迁移工具DBMotion,云备份DBTwin等数据库生态工具。

irds.cn,多数据库管理平台(私有云)。文章来源地址https://www.toymoban.com/news/detail-769160.html

到了这里,关于迁移到云原生:如何使用微服务迁移应用程序的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 云原生之深入解析使用Telepresence轻松在本地调试和开发Kubernetes应用程序

    telepresence 下载:https://www.telepresence.io/docs/latest/install/ kubectl 下载:https://kubernetes.io/docs/tasks/tools/ 如果版本小于 v2.0.3,则需要升级 telepresence(https://www.telepresence.io/docs/latest/instal

    2024年02月02日
    浏览(49)
  • 从服务器到云原生:企业IT基础设施的演进之路

    随着数字经济的迅猛发展,企业IT数字化转型已成为推动业务创新和提升竞争力的关键。在这一转型过程中,基础设施的建设与升级显得尤为重要。企业需要不断优化和更新他们的基础设施,以适应不断变化的市场需求和技术发展。本文将探讨企业IT数字化转型在基础设施方面

    2024年04月15日
    浏览(48)
  • 软件即服务:如何构建 SaaS 应用程序

    软件即服务 (SAAS) 是在线公司的理想商业模式。它有助于直接从服务器检索数据,无需用户获取其副本。 SaaS 开发公司为初创公司和小型供应商提供了发展企业的绝佳机会。通常,SaaS 解决方案的适应性很强。由于基于云的技术的简单性,客户被迫采用此服务。 根据业务增长

    2023年04月25日
    浏览(64)
  • 电脑应用程序与授权搬家工具之数据迁移软件大全

    数据可以是任何东西:您的文件、照片、视频、演示文稿,基本上是任何可以数字存储的东西。您显然希望所有这些都存储和保存。毕竟,没有人希望自己所爱之人的照片或视频丢失。 然而,就像当今几乎所有人的情况一样,总有一天您会升级整个系统。结果,您会发现自己

    2024年01月18日
    浏览(61)
  • 如何将项目部署到服务器:从选择服务器到维护应用程序的全流程指南

    将项目部署到服务器是一个重要的技能,对于开发人员来说,它是必不可少的。在本文中,我将介绍一些关于如何将项目部署到服务器的最佳实践。 一、选择服务器 在部署项目之前,你需要先选择一个适合你的服务器。如果你已经有一个可用的服务器,你可以直接使用它,

    2024年02月05日
    浏览(58)
  • WCF服务应用程序的创建和使用

    1.创建WCF服务应用程序: https://blog.csdn.net/weixin_44690047/article/details/119087706

    2024年02月08日
    浏览(57)
  • 阿里云的消息队列(MQ)服务如何帮助解决应用程序中的消息传递问题?

    阿里云的消息队列(MQ)服务如何帮助解决应用程序中的消息传递问题? [本文由阿里云代理商[聚搜云www.4526.cn]撰写] 随着企业应用程序的复杂性不断增加,消息传递在系统间的通信与协作中扮演着越来越重要的角色。本文将探讨阿里云的消息队列(MQ)服务如何帮助解决应用程

    2024年02月07日
    浏览(68)
  • 使用ServiceSelf解决.NET应用程序做服务的难题

    为.NET 泛型主机的应用程序提供自安装为服务进程的能力,支持windows和linux平台。 功能 自我服务安装 自我服务卸载 自我服务日志监听 虽然.NetCore提供了 Microsoft.Extensions.Hosting.Systemd 和 Microsoft.Extensions.Hosting.WindowsServices 两个服务生命周期包,但在服务安装这块目前还非常不便

    2023年04月23日
    浏览(51)
  • 使用 OpenFaaS 构建和部署无服务器应用程序

    如今,无服务器计算在软件开发行业中越来越受欢迎。它提供了一种构建和部署应用程序的方法,而无需担心底层基础结构。最受欢迎的开源无服务器平台之一是OpenFaaS。在本文中,我们将讨论使用 OpenFaaS 构建和部署无服务器应用程序的基础知识。 OpenFaaS(功能即服务)是一

    2024年02月03日
    浏览(41)
  • 如何使用 Python 创建 Twitter 应用程序

    简介 通过访问 Twitter API,您可以管理社交媒体账户,并且可以从社交媒体中获取数据。如果您代表一个企业或组织,这对品牌推广很有帮助;对于个人用户和业余程序员来说,这也可以是一种有趣的娱乐方式。 在本文中,我们将概述创建 Twitter 应用程序所需的步骤。 然后,

    2024年02月20日
    浏览(62)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包