1. 程式人生 > >Service Mesh 和 API Gateway的關係探討(譯文)

Service Mesh 和 API Gateway的關係探討(譯文)

目錄

Service Mesh vs API Gateway

前一篇關於Service Mesh的文章中,我提到了幾個關於Service Mesh和API Gateway之間關係的問題,在本篇文章中,我打算就Service Mesh和API Gateway的用途進行進一步討論。

為了區分API Gateway和Service Mesh,讓我們先分別看看兩者各自的關鍵特徵。

API Gateway: 將服務作為被管理的API向外部暴露

使用API Gateway的主要目的是將微服務作為被管理的API暴露(給外部系統)。因此,我們在API Gateway層開發的API或者邊界服務對外提供了業務功能。

API/邊界服務呼叫下游的組合或者原子微服務,通過組合/混裝多個下游微服務的方式來提供業務邏輯。

在API/Edge服務呼叫下游服務時,需要採用一種可靠的通訊方式,應用了斷路器,超時,負載均衡/故障轉移等可靠性模式。因此大部分的API Gateway解決方案都內建了這些特性。

API Gateway也內建了以下特性的支援,包括:服務發現,分析(可見性:效能指標,監控,分散式日誌,分散式呼叫追蹤)和安全。

API Gateway和API管理生態系統的其他元件的關係緊密,比如: API 市場/商店, API 釋出門戶。

Service Mesh:微服務的網路通訊基礎設施

現在我們來看看Service Mesh有哪些不同。

Service Mesh是一個網路通訊基礎設施, 可以用於將應用層的網路通訊功能從你的服務程式碼中剝離出來。

採用Service Mesh, 你不用在服務程式碼中實現用於可靠通訊的模式如斷路,超時等,類似地,Service Mesh也提供了服務發現,服務可見性等其他功能。

API Gateway和Service Mesh實踐

API Gateway和Service Mesh之間的主要不同點:API Gateway是暴露API/邊界服務的關鍵元件,而Service Mesh則僅僅是一個服務間通訊的基礎設施,並不瞭解應用中的業務邏輯。

下圖說明了API Gateway和Service Mesh的關係。如同前面所說,這兩者之間也有一些重疊的部分(例如斷路器等),但重要的是需要理解這兩者是用於完全不同的用途。

圖1: API Gateway和Service Mesh實踐

如上圖所示,Service Mesh作為Sidecar(邊車)和服務一起部署,它是獨立於服務的業務邏輯的。

另一方面,API Gateway 提供了所有的API服務(這些API服務有明確定義的業務功能),它是應用業務邏輯的一部分。API Gateway可以具有內建的服務間通訊能力,但它也可以使用Service Mesh來呼叫下游服務(API Gateway->Service Mesh->Microservices)。

在API管理層次,你可以使用API Gateway內建的服務間通訊能力;也可以通過Service Mesh來呼叫下游服務,以將應用網路通訊功能從應用程式轉移到Service Mesh中。

譯者按

API Gateway和Service Mesh的關係是我最近一直在思考的問題,也和同事及社群的朋友之間進行了一些討論。這篇短文很清晰地總結了兩者之間的相似之處以及這兩者在微服務架構中的不同用途。

文章中提到“可以使用API Gateway內建的服務間通訊能力;也可以通過Service Mesh來呼叫下游服務”。在和同事討論時,大家提到一個比較重要的考慮因素是在API Gateway處引入一個Sidecar可能帶來的額外延遲。

API Gateway作為微服務引用的流量入口,其對效率要求較高,如果隨API Gateway部署一個Sidecar,可能對效率有一定影響。

我對此未進行測試,但從理論上來說,服務發現,重試,斷路等邏輯無論放到API Gateway還是Service Mesh中耗時應該是差不多的,部署Sidecar只是增加了建立一個本地連結的消耗,如下圖所示:

將API Gateway和Service Mesh的功能進行清晰劃分,API Gateway負責應用邏輯,Service Mesh負責服務通訊,Metrics收集等微服務基礎設施,這樣劃分後在架構上更為清晰。對於效率問題,我們可以考慮對API Gateway進行水平擴充套件來解決。

原文

Copyright © 趙化冰的網路日誌 2018 CC BY 4.0

相關推薦

Service Mesh API Gateway關係探討譯文

目錄Service Mesh vs API Gateway在前一篇關於Service Mesh的文章中,我提到了幾個關於Service Mesh和API Gateway之間關係的問題,在本篇文章中,我打算就Service Mesh和API Gateway的用途進行進一步討論。

Service Mesh vs API Gateway

Service Mesh vs API GatewayIn one of my previous articles on service mesh, there were a couple of questions related to the relationship between Service Mes

api-gateway-engine知識點2

val oca ins exc finally jedis throws import nec GroupVersion實現engine本地緩存 package com.inspur.cloud.apigw.engine.cache; import java.util.Ma

Service Mesh 及其主流開源實現解析

什麼是 Service mesh Service Mesh 直譯過來是 服務網格,目的是解決系統架構微服務化後的服務間通訊和治理問題。服務網格由 sidecar 節點組成。在介紹 service mesh 之前,我們先來看一下什麼是 sidecar. Sidecar 在軟體系統架構中特指邊車

Linux程序執行緒關係淺析 轉載

  程序概念   程序是表示資源分配的基本單位,又是排程執行的基本單位。例如,使用者執行自己的程式,系統就建立一個程序,併為它分配資源,包括各種表格、記憶體空間、磁碟空間、I/O裝置等。然後,把該程序放人程序的就緒佇列。程序排程程式選中它,為它分配CPU以及其它有關資源,該程序才真正執行。所以,

關於c++中虛擬函式介面的關係區分簡單

虛擬函式:                 虛擬函式的作用是實現動態聯編,也就是在程式的執行階段動態地選擇合適的成員函式,在定義了虛擬函式後,可以在基類的派生類中對虛擬函式重新定義,在派生類中重新定義的函式應與虛擬函式具有相同的形參個數和形參型別。以實現統一的介面,不同定義

API網關性能比較:NGINX vs. ZUUL vs. Spring Cloud Gateway vs. Linkerd

master 優點 進程間 ring 每次 32gb 性能比較 servlet 以及 前幾天拜讀了 OpsGenie 公司(一家致力於 Dev & Ops 的公司)的資深工程師 Turgay ?elik 博士寫的一篇文章(鏈接在文末),文中介紹了他們最初也是采用 N

全國外語水平考試WSK全國英語等級考試PETS關係是什麼?

全國外語水平考試(WSK)是教育部舉辦的主要用於考查國家公派出國留學人員外語水平的考試,共包括英語(PETS- 5)、法語(TNF)、德語(NTD)、日語(NNS)和俄語(TПPЯ)五個語種的水平考試。從1999年9月開始,全國英語等級考試(PETS)第五級正式替代原有的公派出國留學人員英語水平考試(WSK.

《C++ Primer Plus》學習筆記——第五章 迴圈關係表示式

本章內容: for迴圈和while迴圈 表示式和語句 運算子組合 複合語句 逗號運算子以及關係運算符 typedef工具 字元輸入方法get() 檔案尾條件 巢狀迴圈和二維陣列 計算機除了儲存資料外,還可以做很多其他工作。可以對資料進

API網關Kong:功能梳理插件使用-認證插件使用

nbsp forward gen base64 gre 網頁 title hmac dap 作者: 李佶澳 轉載請保留:原文地址 發布時間:2018/10/18 11:14:00 說明 部署一個echo應用 Basic Auth Key Auth JWT

Layer 建立 lamdba function 建立 API GateWay 配置 新增依賴

    進入控制檯 選擇 Lamdba 服務 進入控制面板, 單擊右邊: 建立函式   然後進入此圖介面 新增lamdba 函式 名稱 選擇執行環境:python 選擇角色 選擇現有角色, 角色建立 可以參考 無服務建立教程 連結:https://ama

C++學習之迴圈關係表示式1

在c語言中我這部分還算學習的挺好,所以這部分我只新增一些我不太懂的點: 1.通常,cout在顯示bool值之前將它們轉換為int,但是在前面使用cout.setf(ios:boolalpha)函式呼叫設定了一個標記,該標記命令cout顯示true和false,而不是1和0;

C++ Primer Plus--迴圈關係表示式

C++提供三種迴圈:for迴圈、while迴圈和do while迴圈。 5.1 for迴圈 int i; for (i = 0; i < 5; i++) cout << "C++ knows loops.\n"; 該迴圈首先將整數變數i設定

mybatis關係一對一,一對多

maven專案各種配置檔案: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.

《C++ Primer Plus》學習筆記——第五章 迴圈關係表示式

while迴圈 while迴圈是沒有初始化和更新部分的for迴圈,它只有測試條件和迴圈體。 while (test-condition) { body; } //當test-condition為true,即不為0時,執行迴圈體。 編寫延時迴圈 long wai

《C++ Primer Plus》學習筆記——第五章 迴圈關係表示式

迴圈與文字輸入 迴圈完成的一項最常見最重要的任務:逐字元地讀取來自檔案或鍵盤的文字。 cin物件支援三種不同模式的單字元輸入,其使用者介面各不相同。 使用原始的cin進行輸入: 通過迴圈來讀取鍵盤的文字輸入,則必須有辦法停止讀取。 一種方法是選擇某個特殊的字元(哨兵

《C++ Primer Plus》學習筆記——第五章 迴圈關係表示式

程式設計練習 1.編寫一個要求使用者輸入兩個整數的程式。該程式將計算並輸出這兩個整數之間(包括這兩個整數)所有整數的和。這裡假設先輸入較小的整數。例如,如果使用者輸入的是2和9,則程式將指出2~9之間的所有整數的和為44. #include <iostream>

Android版本號API對應關係

相信很多開發者對Android平臺和API對應關係不是很清楚,我們不去死記硬背所有的對應關係,筆者截取了Google親兒子Android Studio裡面的模擬器常用的版本號給大家做一個展示: Marshmallow (Android 6.0)

Service API翻譯詳解

很多人對Android中的Service理解不是很深刻(我自己也是)。以前瞭解Service都是通過書籍和別人部落格上的總結學習的,但總是覺得理解不到,更別說靈活運用了。後來上網查了一些資料,還是沒能得到自己想要的結果,於是決定去看API文件學習。英語雖然不好,但還是堅持一

Google Maps Api Geocoding 傳遞引數返回引數的解析Json

Google Geocoding API    http://code.google.com/intl/zh-CN/apis/maps/documentation/geocoding/ 地址解析請求 Google Geocoding API 請求必須採用以下形式: