企业遇到大规模布置和监督生产中的运用程序的使命。走运的是,咱们能够运用大量技能和东西。然而,从传统的,全体的结构改变为云态一个人提出了自己的妨碍。在这里,您会发现将运用程序从全体设置转移到依据微服务的体系结构时要进行的根本初始进程列表。

无缝过渡的逻辑进程

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,多数据库管理渠道(私有云)。