草庐IT

多云平台环境集成方案

科技狠活与软件技术 2023-03-28 原文
​在我们进入细节之前,让我们回答这个问题:“什么是云集成架构?” 云集成架构是云组件和多个云提供商的组合,允许跨多个数据中心交换数据。

例如,假设我们有一个大型银行解决方案。一些银行不想迁移他们的核心和安全数据。他们希望将其保存在本地数据中心。但是,他们无法避免使用云。他们将现有项目、正在启动的新项目,甚至整个呼叫中心和后台办公室迁移到云端。构建这种复杂的架构需要了解云提供的集成服务和工具。

让我们看看 AWS、Google Cloud 和 Azure 提供了哪些组件。

通用集成服务

了解一般的云集成最佳实践和模式至关重要。但是,了解每个云提供商提供的具体内容也很重要。在这里,我们将深入了解 AWS、Google Cloud 和 Azure 提供的顶级集成服务。此外,我们还会了解每项服务的优点和缺点。

AWS

AWS 有多种集成服务,提供强大的功能和简单性。

SQS(简单队列服务)

SQS是一种简单的查询服务或分布式排队系统。它是一个队列,用于存储应稍后处理的消息。SQS 是一种基于拉取的服务,允许云组件和微服务解耦。

优点:

  • 包括死信队列:自动分离未处理的消息并推入死信队列
  • 标准队列和 FIFO 之间的选择
  • 自动重复删除:SQS 会自动检测并删除重复的消息。
缺点:

  • 不支持一对多消息广播

SWF(简单工作流服务)

SWF是一种任务协调和工作流服务。它允许构建并行和顺序工作流。它允许构建一个可靠的分布式系统,其中任务是应用程序的逻辑单元或功能。SWF 适用于处理基于人工的操作,如订单工作流或程序请求。

优点:

  • 可靠性:工作流和状态跟踪在高可用性数据中心运行时是可靠的
  • 灵活性和逻辑分离:SWF 允许架构师和用户轻松修改工作流元素。此外,SWF 将后台作业的控制流分开
缺点:

  • AWS 管理控制台中存在很多错误,并且缺乏一般支持
  • 设置过程很困难,需要很多时间
  • 缺乏限制控制跟踪:可能导致节流问题

AWS 步骤功能

AWS 步骤函数允许我们创建无服务器工作流或状态机;例如,自动化呼叫中心任务。Step Functions 是一种编排其他 Lambda 函数的编排函数。

优点:

  • 通过将工作流逻辑与业务逻辑分离来降低应用程序的复杂性
缺点:

  • Step Functions 使用特定的状态机来定义工作流,仅对 Step Functions 服务有帮助。这可能会导致供应商锁定。

谷歌云(GC)

GC 有一个集成生态系统,一个集成平台即服务 (iPaaS)。它提供了一组工具和服务来管理和连接应用程序。Google Cloud iPaaS 包含以下服务:

Integration designer

Integration designer是一种无代码 UI 工具,能够构建由触发器和任务组成的工作流(见下文)。任务和触发器通过边和fork 和 join连接。该服务看起来与 SWF 非常相似。

触发器Triggers

触发器Triggers是必不可少的工作流元素。触发器通常是工作流的入口点,代表启动任务的事件。例如,API 触发器或发布/订阅触发器。

任务Tasks

任务Tasks是触发器之后的工作单元(或函数)。一个例子是数据映射,您可以在其中将一个数据模型集成到另一个数据模型中。一些预定义任务包括Call Integration任务、For Each Parallel任务、For Each Loop任务、Timer任务等等。

除了许多优点外,Google Cloud 也有一些缺点:

  • 与 Azure 和 AWS 相比缺乏数据中心
  • 这是一个相对较新的框架。某些功能可能处于预览版(或测试版)并包含一些错误。

Azure

Azure 提供了一个 Azure 集成服务集。它包含多种服务以在应用程序之间建立强大的集成。以下是 Azure 提供的一组最强大的集成服务。

API管理

API 管理是一种 API 网关服务,它集成了多个 API 并连接 Azure Functions、逻辑应用程序和服务总线。

优点:

  • API 管理提供许多功能,如身份验证、授权、缓存响应以及细粒度配额和限制。
  • 通过 API 策略灵活定制
缺点:

  • 开发人员门户包含许多可用性问题和错误。
  • 扩展成本可能太高。API管理自动扩展;但是,在缩放成本方面没有很好的透明度。

逻辑应用

Logic Apps是一种无服务器、低代码的工作流集成工具(类似于 GC Integration designer 和 AWS SWF)。

优点:

  • 该服务可以连接 SQL Server、Event Grid、Oracle、ServiceNow 和 Office 365。我们可以选择 200 多个连接器。
  • 能够在本地托管地图和模式
缺点:

  • 难以管理和维护复杂的集成工作流
  • 用户界面问题,尤其是复杂的工作流程

服务总线

服务总线是实现事件总线模式的服务。当一个组件产生一条消息,而其他组件使用它时,它提供了一种基于队列和发布/订阅集成原理的事件总线。

优点:

  • 该服务还支持翻译、死信、多消费者基于主题的逻辑和其他功能。
  • 强大的消息路由和过滤功能
缺点:

  • HTTPs 连接性能缓慢
  • 监控消息、队列和主题的选项非常有限
  • 没有用于调试消息、查询和过滤器的集成 UI 工具

事件网格

通过事件网格,您可以加入产生事件的云资源(发布者)和处理事件的资源(订阅者)。事件网格看起来类似于AWS SNS。它也是基于推送方法。事件网格侦听来自一个组件的事件,并可以在保留消息时触发其他组件。例如,一个应用程序可以向 Azure 队列发送消息和电子邮件通知。

优点:

  • 企业集成:支持几乎所有的Azure事件源;例如,函数、事件/IoT 中心、逻辑应用程序、服务总线、SignalR 等等
  • 包含用于监视和调试消息的选项
  • 包括自动死信队列
  • 成本更低:按事件付费的价格模型导致成本非常低。
缺点:

  • 可以提高有关如何存储和启用死信的透明度。

Azure Arc

Azure Arc是一项服务,它允许我们连接来自不同云提供商的服务并实现多云集成。该服务将作为银行多云应用程序的主要集成服务。

优点:

  • 支持 SQL Server 和 Kubernetes 等服务
  • 支持Windows和Linux操作系统
缺点:

  • 有时,代理连接可能不稳定且难以调试。

结论

在本文中,我们介绍了用于构建云集成的顶级组件。然而,集成解决方案不必是企业级的:它们可以是多管齐下甚至是小型的。例如,我们的应用程序 A 需要在应用程序 B 之间交换数据。我们可以使用Azure Durable Functions或 AWS Step Functions 创建集成中间件。通过这些服务,我们可以为数据映射、通知甚至一些简单的分析创建工作流。


有关多云平台环境集成方案的更多相关文章

  1. ruby - 在 jRuby 中使用 'fork' 生成进程的替代方案? - 2

    在MRIRuby中我可以这样做:deftransferinternal_server=self.init_serverpid=forkdointernal_server.runend#Maketheserverprocessrunindependently.Process.detach(pid)internal_client=self.init_client#Dootherstuffwithconnectingtointernal_server...internal_client.post('somedata')ensure#KillserverProcess.kill('KILL',

  2. ruby-on-rails - 如何使辅助方法在 Rails 集成测试中可用? - 2

    我在app/helpers/sessions_helper.rb中有一个帮助程序文件,其中包含一个方法my_preference,它返回当前登录用户的首选项。我想在集成测试中访问该方法。例如,这样我就可以在测试中使用getuser_path(my_preference)。在其他帖子中,我读到这可以通过在测试文件中包含requiresessions_helper来实现,但我仍然收到错误NameError:undefinedlocalvariableormethod'my_preference'.我做错了什么?require'test_helper'require'sessions_hel

  3. ruby-on-rails - 我如何将 Hoptoad 与 DelayedJob 和 DaemonSpawn 集成? - 2

    我一直很高兴地使用DelayedJob习惯用法:foo.send_later(:bar)这会调用DelayedJob进程中对象foo的方法bar。我一直在使用DaemonSpawn在我的服务器上启动DelayedJob进程。但是...如果foo抛出异常,Hoptoad不会捕获它。这是任何这些包中的错误...还是我需要更改某些配置...或者我是否需要在DS或DJ中插入一些异常处理来调用Hoptoad通知程序?回应下面的第一条评论。classDelayedJobWorker 最佳答案 尝试monkeypatchingDelayed::W

  4. ruby-on-rails - 在 Rails 开发环境中为 .ogv 文件设置 Mime 类型 - 2

    我正在玩HTML5视频并且在ERB中有以下片段:mp4视频从在我的开发环境中运行的服务器很好地流式传输到chrome。然而firefox显示带有海报图像的视频播放器,但带有一个大X。问题似乎是mongrel不确定ogv扩展的mime类型,并且只返回text/plain,如curl所示:$curl-Ihttp://0.0.0.0:3000/pr6.ogvHTTP/1.1200OKConnection:closeDate:Mon,19Apr201012:33:50GMTLast-Modified:Sun,18Apr201012:46:07GMTContent-Type:text/plain

  5. Vscode+Cmake配置并运行opencv环境(Windows和Ubuntu大同小异) - 2

    之前在培训新生的时候,windows环境下配置opencv环境一直教的都是网上主流的vsstudio配置属性表,但是这个似乎对新生来说难度略高(虽然个人觉得完全是他们自己的问题),加之暑假之后对cmake实在是爱不释手,且这样配置确实十分简单(其实都不需要配置),故斗胆妄言vscode下配置CV之法。其实极为简单,图比较多所以很长。如果你看此文还配不好,你应该思考一下是不是自己的问题。闲话少说,直接开始。0.CMkae简介有的人到大二了都不知道cmake是什么,我不说是谁。CMake是一个开源免费并且跨平台的构建工具,可以用简单的语句来描述所有平台的编译过程。它能够根据当前所在平台输出对应的m

  6. jenkins部署1--jenkins+gitee持续集成 - 2

    前置步骤我们都操作完了,这篇开始介绍jenkins的集成。话不多说,看操作1、登录进入jenkins后会让你选择安装插件,选择第一个默认的就行。安装完成后设置账号密码,重新登录。2、配置JDK和Git都需要执行路径,所以需要先把执行路径找到,先进入服务器的docker容器,2.1JDK的路径root@69eef9ee86cf:/usr/bin#echo$JAVA_HOME/usr/local/openjdk-82.2Git的路径root@69eef9ee86cf:/#whichgit/usr/bin/git3、先配置JDK和Git。点击:ManageJenkins>>GlobalToolCon

  7. ruby-on-rails - ruby gem如何在rails环境下工作 - 2

    我试图在rails中了解rubygems是如何变得可以自动使用的,而不是在使用required的文件中gem? 最佳答案 这是通过bundler/setup完成的:http://bundler.io/v1.3/bundler_setup.html.它在您的config/boot.rb文件中是必需的。简而言之,它首先将环境变量设置为指向您的Gemfile:ENV['BUNDLE_GEMFILE']||=File.expand_path('../../Gemfile',__FILE__)然后它通过要求bundler/setup将所有ge

  8. Ruby 守护进程和 JRuby - 备选方案 - 2

    我有一个应用程序正在从Ruby迁移到JRuby(由于需要通过Java提供更好的Web服务安全支持)。我使用的gem之一是daemons创建后台作业。问题在于它使用fork+exec来创建后台进程,但这对JRuby来说是禁忌。那么-是否有用于创建后台作业的替代gem/wrapper?我目前的想法是只从shell脚本调用rake并让rake任务永远运行......提前致谢,克里斯。更新我们目前正在使用几个与Java线程相关的包装器,即https://github.com/jmettraux/rufus-scheduler和https://github.com/philostler/acts

  9. ruby-on-rails - 我需要一个真正的 UNIX RoR 开发环境 - 2

    从一开始,我就是一个Windows高手。我从MS-DOS开始。我安装了Windows2.1以及此后的所有Windows。现在,我家里有10台不同的Windows机器在运行,从Windows7Ultimate到各种版本的WindowsServer。我还没有完成Windows8,也不想去那里。我在服务器和各种软件方面都有UNIX经验,但它并不是我的首选环境。但是,我想我正在转换。我试图假装使用Cygwin和MSYS在Windows下运行UNIX。我的目的是搭建一个开发环境。两者都让我失望了。我花了比开发更多的时间来解决一系列技术问题。这是NotAcceptable。到目前为止,我的Ruby

  10. ruby-on-rails - 如果特定语言环境中缺少翻译,如何配置 i18n 以使用 en 语言环境? - 2

    如果特定语言环境中缺少翻译,如何配置i18n以使用en语言环境翻译?当前已插入翻译缺失消息。我正在使用RoR3.1。 最佳答案 找到相似的question这里是答案:#application.rb#railswillfallbacktoconfig.i18n.default_localetranslationconfig.i18n.fallbacks=true#railswillfallbacktoen,nomatterwhatissetasconfig.i18n.default_localeconfig.i18n.fallback

随机推荐