多云平臺(tái)環(huán)境集成方案
?在我們進(jìn)入細(xì)節(jié)之前,讓我們回答這個(gè)問題:“什么是云集成架構(gòu)?” 云集成架構(gòu)是云組件和多個(gè)云提供商的組合,允許跨多個(gè)數(shù)據(jù)中心交換數(shù)據(jù)。
例如,假設(shè)我們有一個(gè)大型銀行解決方案。一些銀行不想遷移他們的核心和安全數(shù)據(jù)。他們希望將其保存在本地?cái)?shù)據(jù)中心。但是,他們無法避免使用云。他們將現(xiàn)有項(xiàng)目、正在啟動(dòng)的新項(xiàng)目,甚至整個(gè)呼叫中心和后臺(tái)辦公室遷移到云端。構(gòu)建這種復(fù)雜的架構(gòu)需要了解云提供的集成服務(wù)和工具。
讓我們看看 AWS、Google Cloud 和 Azure 提供了哪些組件。
通用集成服務(wù)
了解一般的云集成最佳實(shí)踐和模式至關(guān)重要。但是,了解每個(gè)云提供商提供的具體內(nèi)容也很重要。在這里,我們將深入了解 AWS、Google Cloud 和 Azure 提供的頂級(jí)集成服務(wù)。此外,我們還會(huì)了解每項(xiàng)服務(wù)的優(yōu)點(diǎn)和缺點(diǎn)。
AWS
AWS 有多種集成服務(wù),提供強(qiáng)大的功能和簡單性。
SQS(簡單隊(duì)列服務(wù))
SQS是一種簡單的查詢服務(wù)或分布式排隊(duì)系統(tǒng)。它是一個(gè)隊(duì)列,用于存儲(chǔ)應(yīng)稍后處理的消息。SQS 是一種基于拉取的服務(wù),允許云組件和微服務(wù)解耦。
優(yōu)點(diǎn):
- 包括死信隊(duì)列:自動(dòng)分離未處理的消息并推入死信隊(duì)列
- 標(biāo)準(zhǔn)隊(duì)列和 FIFO 之間的選擇
- 自動(dòng)重復(fù)刪除:SQS 會(huì)自動(dòng)檢測(cè)并刪除重復(fù)的消息。
缺點(diǎn):
- 不支持一對(duì)多消息廣播
SWF(簡單工作流服務(wù))
SWF是一種任務(wù)協(xié)調(diào)和工作流服務(wù)。它允許構(gòu)建并行和順序工作流。它允許構(gòu)建一個(gè)可靠的分布式系統(tǒng),其中任務(wù)是應(yīng)用程序的邏輯單元或功能。SWF 適用于處理基于人工的操作,如訂單工作流或程序請(qǐng)求。
優(yōu)點(diǎn):
- 可靠性:工作流和狀態(tài)跟蹤在高可用性數(shù)據(jù)中心運(yùn)行時(shí)是可靠的
- 靈活性和邏輯分離:SWF 允許架構(gòu)師和用戶輕松修改工作流元素。此外,SWF 將后臺(tái)作業(yè)的控制流分開
缺點(diǎn):
- AWS 管理控制臺(tái)中存在很多錯(cuò)誤,并且缺乏一般支持
- 設(shè)置過程很困難,需要很多時(shí)間
- 缺乏限制控制跟蹤:可能導(dǎo)致節(jié)流問題
AWS 步驟功能
AWS 步驟函數(shù)允許我們創(chuàng)建無服務(wù)器工作流或狀態(tài)機(jī);例如,自動(dòng)化呼叫中心任務(wù)。Step Functions 是一種編排其他 Lambda 函數(shù)的編排函數(shù)。
優(yōu)點(diǎn):
- 通過將工作流邏輯與業(yè)務(wù)邏輯分離來降低應(yīng)用程序的復(fù)雜性
缺點(diǎn):
- Step Functions 使用特定的狀態(tài)機(jī)來定義工作流,僅對(duì) Step Functions 服務(wù)有幫助。這可能會(huì)導(dǎo)致供應(yīng)商鎖定。
谷歌云(GC)
GC 有一個(gè)集成生態(tài)系統(tǒng),一個(gè)集成平臺(tái)即服務(wù) (iPaaS)。它提供了一組工具和服務(wù)來管理和連接應(yīng)用程序。Google Cloud iPaaS 包含以下服務(wù):
Integration designer
Integration designer是一種無代碼 UI 工具,能夠構(gòu)建由觸發(fā)器和任務(wù)組成的工作流(見下文)。任務(wù)和觸發(fā)器通過邊和fork 和 join連接。該服務(wù)看起來與 SWF 非常相似。
觸發(fā)器Triggers
觸發(fā)器Triggers是必不可少的工作流元素。觸發(fā)器通常是工作流的入口點(diǎn),代表啟動(dòng)任務(wù)的事件。例如,API 觸發(fā)器或發(fā)布/訂閱觸發(fā)器。
任務(wù)Tasks
任務(wù)Tasks是觸發(fā)器之后的工作單元(或函數(shù))。一個(gè)例子是數(shù)據(jù)映射,您可以在其中將一個(gè)數(shù)據(jù)模型集成到另一個(gè)數(shù)據(jù)模型中。一些預(yù)定義任務(wù)包括Call Integration任務(wù)、For Each Parallel任務(wù)、For Each Loop任務(wù)、Timer任務(wù)等等。
除了許多優(yōu)點(diǎn)外,Google Cloud 也有一些缺點(diǎn):
- 與 Azure 和 AWS 相比缺乏數(shù)據(jù)中心
- 這是一個(gè)相對(duì)較新的框架。某些功能可能處于預(yù)覽版(或測(cè)試版)并包含一些錯(cuò)誤。
Azure
Azure 提供了一個(gè) Azure 集成服務(wù)集。它包含多種服務(wù)以在應(yīng)用程序之間建立強(qiáng)大的集成。以下是 Azure 提供的一組最強(qiáng)大的集成服務(wù)。
API管理
API 管理是一種 API 網(wǎng)關(guān)服務(wù),它集成了多個(gè) API 并連接 Azure Functions、邏輯應(yīng)用程序和服務(wù)總線。
優(yōu)點(diǎn):
- API 管理提供許多功能,如身份驗(yàn)證、授權(quán)、緩存響應(yīng)以及細(xì)粒度配額和限制。
- 通過 API 策略靈活定制
缺點(diǎn):
- 開發(fā)人員門戶包含許多可用性問題和錯(cuò)誤。
- 擴(kuò)展成本可能太高。API管理自動(dòng)擴(kuò)展;但是,在縮放成本方面沒有很好的透明度。
邏輯應(yīng)用
Logic Apps是一種無服務(wù)器、低代碼的工作流集成工具(類似于 GC Integration designer 和 AWS SWF)。
優(yōu)點(diǎn):
- 該服務(wù)可以連接 SQL Server、Event Grid、Oracle、ServiceNow 和 Office 365。我們可以選擇 200 多個(gè)連接器。
- 能夠在本地托管地圖和模式
缺點(diǎn):
- 難以管理和維護(hù)復(fù)雜的集成工作流
- 用戶界面問題,尤其是復(fù)雜的工作流程
服務(wù)總線
服務(wù)總線是實(shí)現(xiàn)事件總線模式的服務(wù)。當(dāng)一個(gè)組件產(chǎn)生一條消息,而其他組件使用它時(shí),它提供了一種基于隊(duì)列和發(fā)布/訂閱集成原理的事件總線。
優(yōu)點(diǎn):
- 該服務(wù)還支持翻譯、死信、多消費(fèi)者基于主題的邏輯和其他功能。
- 強(qiáng)大的消息路由和過濾功能
缺點(diǎn):
- HTTPs 連接性能緩慢
- 監(jiān)控消息、隊(duì)列和主題的選項(xiàng)非常有限
- 沒有用于調(diào)試消息、查詢和過濾器的集成 UI 工具
事件網(wǎng)格
通過事件網(wǎng)格,您可以加入產(chǎn)生事件的云資源(發(fā)布者)和處理事件的資源(訂閱者)。事件網(wǎng)格看起來類似于AWS SNS。它也是基于推送方法。事件網(wǎng)格偵聽來自一個(gè)組件的事件,并可以在保留消息時(shí)觸發(fā)其他組件。例如,一個(gè)應(yīng)用程序可以向 Azure 隊(duì)列發(fā)送消息和電子郵件通知。
優(yōu)點(diǎn):
- 企業(yè)集成:支持幾乎所有的Azure事件源;例如,函數(shù)、事件/IoT 中心、邏輯應(yīng)用程序、服務(wù)總線、SignalR 等等
- 包含用于監(jiān)視和調(diào)試消息的選項(xiàng)
- 包括自動(dòng)死信隊(duì)列
- 成本更低:按事件付費(fèi)的價(jià)格模型導(dǎo)致成本非常低。
缺點(diǎn):
- 可以提高有關(guān)如何存儲(chǔ)和啟用死信的透明度。
Azure Arc
Azure Arc是一項(xiàng)服務(wù),它允許我們連接來自不同云提供商的服務(wù)并實(shí)現(xiàn)多云集成。該服務(wù)將作為銀行多云應(yīng)用程序的主要集成服務(wù)。
優(yōu)點(diǎn):
- 支持 SQL Server 和 Kubernetes 等服務(wù)
- 支持Windows和Linux操作系統(tǒng)
缺點(diǎn):
- 有時(shí),代理連接可能不穩(wěn)定且難以調(diào)試。
結(jié)論
在本文中,我們介紹了用于構(gòu)建云集成的頂級(jí)組件。然而,集成解決方案不必是企業(yè)級(jí)的:它們可以是多管齊下甚至是小型的。例如,我們的應(yīng)用程序 A 需要在應(yīng)用程序 B 之間交換數(shù)據(jù)。我們可以使用Azure Durable Functions或 AWS Step Functions 創(chuàng)建集成中間件。通過這些服務(wù),我們可以為數(shù)據(jù)映射、通知甚至一些簡單的分析創(chuàng)建工作流。