精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

微服務架構必讀篇-網關

馬哥Linux運維 ? 來源:稀土掘金 ? 2023-06-30 10:06 ? 次閱讀

前言

由于互聯網的高速發展,網絡數據請求數激增,使得服務器承受的壓力越來越大。在早期的系統架構中,為減輕單臺服務器的壓力,通常使用 Load Balancer 來將網絡流量平攤到多個服務器中。如今后端服務的種類和數量在不斷變多,傳統的 Load Balancer 為主的系統架構的局限性就變得明顯起來,于是一款主要工作在七層且具有豐富擴展能力的基礎設施便應運而生,那便是API Gateway

什么是API網關

API網關簡單來說是一種主要工作在七層、專門用于 API 的管理和流量轉發的基礎設施,并擁有強大的擴展性。

網關的角色是作為一個API架構,用來保護、增強和控制對于API服務的訪問。它是一個處于應用程序或服務(提供REST API接口服務)之前的系統,用來管理授權、訪問控制和流量限制等。這樣REST API接口服務就被網關保護起來,對所有的調用者透明。因此,隱藏在API網關后面的業務系統就可以專注于創建和管理服務,無需關心這些策略性的請求。

網關工作流程如下圖:

920b0f72-168f-11ee-962d-dac502259ad0.jpg

網關必須具備的特點

1.高性能

對于高性能而言,網關不應該也不能成為性能的瓶頸,最好使用高性能的編程語言來實現,如 C、C++、Go 和 Java。網關對后端的請求,以及對前端的請求的服務一定要使用異步非阻塞的 I/O 來確保后端延遲不會導致應用程序中出現性能問題。C 和 C++ 可以參看 Linux 下的 epoll 和 Windows 的 I/O Completion Port 的異步 IO 模型,Java 下如 Netty、Spring Reactor 的 NIO 框架。

2.高可用

所有的流量或調用都要經過網關,所以網關必須成為一個高可用的組件,它的穩定直接關系到了所有服務的穩定。不能出現單點故障,因此,一個好的網關至少做到以下幾點。

集群化。網關要成為一個集群,并可以自己同步集群數據,而不需要依賴于第三方系統來同步數據。

服務化。網關還需要做到在不間斷的情況下修改配置,一種是像 Nginx reload 配置那樣,可以做到不停服務,另一種是最好做到服務化。也就是說,得要有自己的 Admin API 來在運行時修改配置。

持續化。比如重啟,就是像 Nginx 那樣優雅地重啟。有一個主管請求分發的主進程。當我們需要重啟時,新的請求被分配到新的進程中,而老的進程處理完正在處理的請求后就退出。

3.高擴展

網關要承接所有的業務流量和請求,所以一定存在或多或少的業務邏輯。而業務邏輯是多變和不確定的,比如,需要在網關上加入一些和業務相關的東西。因此一個好的網關還需要是可以擴展的,并能進行二次開發。當然,像 Nginx 那樣通過 Module 進行二次開發的也是可以的。

網關主要功能

路由功能:路由是微服務網關的核心能力。通過路由功能微服務網關可以將請求轉發到目標微服務。在微服務架構中,網關可以結合注冊中心的動態服務發現,實現對后端服務的發現,調用方只需要知道網關對外暴露的服務API就可以透明地訪問后端微服務。

負載均衡:API網關結合負載均衡技術,利用Eureka或者Consul等服務發現工具,通過輪詢、指定權重、IP地址哈希等機制實現下游服務的負載均衡。

統一鑒權:一般而言,無論對內網還是外網的接口都需要做用戶身份認證,而用戶認證在一些規模較大的系統中都會采用統一的單點登錄(Single Sign On)系統,如果每個微服務都要對接單點登錄系統,那么顯然比較浪費資源且開發效率低。API網關是統一管理安全性的絕佳場所,可以將認證的部分抽取到網關層,微服務系統無須關注認證的邏輯,只關注自身業務即可。

限流熔斷:在某些場景下需要控制客戶端的訪問次數和訪問頻率,一些高并發系統有時還會有限流的需求。在網關上可以配置一個閾值,當請求數超過閾值時就直接返回錯誤而不繼續訪問后臺服務。當出現流量洪峰或者后端服務出現延遲或故障時,網關能夠主動進行熔斷,保護后端服務,并保持前端用戶體驗良好。

灰度發布:微服務網關可以根據HTTP請求中的特殊標記和后端服務列表元數據標識進行流量控制,實現在用戶無感知的情況下完成灰度發布。

日志審計:微服務網關可以作為統一的日志記錄和收集器,對服務URL粒度的日志請求信息和響應信息進行攔截。

指標監控:網關可以統計后端服務的請求次數,并且可以實時地更新當前的流量健康狀態,可以對URL粒度的服務進行延遲統計,也可以使用Hystrix Dashboard查看后端服務的流量狀態及是否有熔斷發生。

協議轉換:API網關的一大作用在于構建異構系統,API網關作為單一入口,通過協議轉換整合后臺基于REST、AMQP、Dubbo等不同風格和實現技術的微服務,面向Web Mobile、開放平臺等特定客戶端提供統一服務。

黑白名單:微服務網關可以使用系統黑名單,過濾HTTP請求特征,攔截異常客戶端的請求,例如DDoS攻擊等侵蝕帶寬或資源迫使服務中斷等行為,可以在網關層面進行攔截過濾。比較常見的攔截策略是根據IP地址增加黑名單。在存在鑒權管理的路由服務中可以通過設置白名單跳過鑒權管理而直接訪問后端服務資源。

文檔中心:網關結合Swagger,可以將后端的微服務暴露給網關,網關作為統一的入口給接口的使用方提供查看后端服務的API規范,不需要知道每一個后端微服務的Swagger地址,這樣網關起到了對后端API聚合的效果。

目前主流的網關

Spring Cloud Gateway:是springcloud的全新API網關項目,旨在替換zuul的網關服務,基于spring framework5.0+springboot 2.0+webFlux開發,其也實現了異步非阻塞的特性,有較高的性能,其有豐富的過濾器類型,可以根據自身需求來自定義過濾器。

Zuul 2.0: 采用Netty實現異步非阻塞編程模型,一個CPU一個線程,能夠處理所有的請求和響應,請求響應的生命周期通過事件和回調進行處理,減少線程數量,開銷較小。相比于zuul 1.0,zuul 2.0實現的異步非阻塞的特性,在性能上有較大提升。

OpenResty: OpenResty基于 Nginx與 Lua 的高性能 Web 平臺,其內部集成了大量精良的 Lua 庫、第三方模塊以及大多數的依賴項。用于方便地搭建能夠處理超高并發、擴展性極高的動態 Web 應用、Web 服務和動態網關。

Kong: 基于OpenResty(Nginx + Lua模塊)編寫的高可用、易擴展的,性能高效且穩定,支持多個可用插件(限流、鑒權)等,開箱即可用,只支持HTTP協議,且二次開發擴展難,缺乏更易用的管理和配置方式

網關之間的對比如下圖:

92209efa-168f-11ee-962d-dac502259ad0.png

總結

總體而言,API Gateway 主要用于作為后端的 API 接口代理,提供對外訪問不同種類 API 的一個單獨入口,并且可以提供獨立于后端服務的限流、認證、監控等功能。

在合理的架構設計下,一般都將 API Gateway 和 Load Balancer 配合使用,使用 Load Balancer 作為整個系統的網絡出入口,將流量分發到多個 API Gateway 實例,然后每個 API Gateway 實例分別對請求進行路由、認證、鑒權等操作,這樣可以使得整個網絡更加穩健、可靠、可擴展。





審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • DDoS
    +關注

    關注

    3

    文章

    169

    瀏覽量

    23041
  • Linux系統
    +關注

    關注

    4

    文章

    591

    瀏覽量

    27355
  • URL
    URL
    +關注

    關注

    0

    文章

    139

    瀏覽量

    15312
  • JAVA語言
    +關注

    關注

    0

    文章

    138

    瀏覽量

    20075
  • AMQP
    +關注

    關注

    0

    文章

    6

    瀏覽量

    2551

原文標題:微服務架構必讀篇 - 網關

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    微服務架構和CQRS架構基本概念介紹

    微服務架構現在很熱,到處可以看到各大互聯網公司的微服務實踐的分享總結。但是,我今天的分享和微服務沒有關系,希望可以帶給大家一些新的東西。如果一定要說
    發表于 05-22 09:03

    微服務網關gateway的相關資料推薦

    目錄微服務網關 gateway 概述[路由器網關 Zuul 概述]嵌入式 Zuul 反向代理微服務網關 gateway 概述1、想象一下一個購物應用程序的產品詳情頁面展示了指定商品的信息:2、若是
    發表于 12-23 08:19

    微服務優勢_微服務架構的好處與不足

    微服務是用一組小服務的方式來構建一個應用,服務獨立運行在不同的進程中,服務之間通過輕量的通訊機制(如RESTful接口)來交互,并且服務可以
    發表于 02-23 11:24 ?4385次閱讀

    微服務架構與實踐基礎

    微服務架構中,應用程序由多個服務組成,每個服務都是高度自治的獨立業務實體,可以運行在獨立的進程中,不同的服務能非常容易地部署到不同的主機上
    的頭像 發表于 04-10 14:23 ?4216次閱讀
    <b class='flag-5'>微服務</b><b class='flag-5'>架構</b>與實踐基礎<b class='flag-5'>篇</b>

    什么是微服務架構_微服務架構的優缺點及應用

    什么是微服務架構 簡單地說,微服務是系統架構上的一種設計風格, 它的主旨是將一個原本獨立的系統拆分成多個小型服務,這些小型
    的頭像 發表于 06-02 10:03 ?1.7w次閱讀
    什么是<b class='flag-5'>微服務</b><b class='flag-5'>架構</b>_<b class='flag-5'>微服務</b><b class='flag-5'>架構</b>的優缺點及應用

    SOA架構微服務架構的主要區別

    SOA和微服務架構一個層面的東西,而對于ESB和微服務網關是一個層面的東西,一個談到是架構風格和方法,一個談的是實現工具或組件。SOA架構
    的頭像 發表于 05-04 14:11 ?5822次閱讀
    SOA<b class='flag-5'>架構</b>和<b class='flag-5'>微服務</b><b class='flag-5'>架構</b>的主要區別

    微服務架構有哪些_微服務架構設計模式

    小伙伴們知道常用的微服務架構框架有哪些嗎?上回我們介紹了一些常用的微服務架構設計模式,這次我們就來了解一下一些常用的微服務
    的頭像 發表于 05-17 17:06 ?2.9w次閱讀
    <b class='flag-5'>微服務</b><b class='flag-5'>架構</b>有哪些_<b class='flag-5'>微服務</b><b class='flag-5'>架構</b>設計模式

    微服務架構的特點_微服務架構適用場景

     微服務架構是一項在云中部署應用和服務的新技術。
    的頭像 發表于 05-17 17:28 ?5067次閱讀

    微服務軟件架構應用研究綜述

    自2014年,微服務架構概念經Martin Flower提出以來,受到廣泛關注,為更好了解微服務架構風格,本文首先分析、梳理了軟件架構的發展
    發表于 05-26 09:26 ?2次下載

    什么是微服務架構

    在Medium,我們的技術堆棧始于2012年的單片Node.js應用程序。我們已經構建了幾個衛星服務,但我們還沒有制定一個系統地采用微服務架構的策略。隨著系統變得越來越復雜并且團隊不斷發展,我們在2018年初轉向了
    的頭像 發表于 02-24 11:15 ?1321次閱讀
    什么是<b class='flag-5'>微服務</b><b class='flag-5'>架構</b>?

    微服務為什么要用到API網關

    微服務架構(通常簡稱為微服務)是指開發應用所用的一種架構形式。通過微服務,可將大型應用分解成多個獨立的組件,其中每個組件都有各自的責任領域。
    的頭像 發表于 04-14 09:17 ?719次閱讀

    基于Traefik自研的微服務網關

    數據平面主要功能是接入用戶的HTTP請求和微服務被拆分后的聚合。使用微服務網關統一對外暴露后端服務的API和契約,路由和過濾功能正是網關的核心能力模塊。另外,
    的頭像 發表于 04-16 11:08 ?2570次閱讀

    springcloud微服務架構

    Spring Cloud是一個開源的微服務架構框架,它提供了一系列工具和組件,用于構建和管理分布式系統中的微服務。它基于Spring框架,旨在通過簡化開發過程和降低系統復雜性來幫助開發人員構建彈性
    的頭像 發表于 11-23 09:24 ?1219次閱讀

    docker微服務架構實戰

    隨著云計算和容器化技術的快速發展,微服務架構在軟件開發領域中變得越來越流行。微服務架構將一個大型的軟件應用拆分成多個小型的、獨立部署的服務
    的頭像 發表于 11-23 09:26 ?628次閱讀

    設計微服務架構的原則

    微服務是一種軟件架構策略,有利于改善整體性能和可擴展性。你可能會想,我的團隊需不需要采用微服務,設計微服務架構有哪些原則?本文會給你一些靈感
    的頭像 發表于 11-26 08:05 ?562次閱讀
    設計<b class='flag-5'>微服務</b><b class='flag-5'>架構</b>的原則