chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

3天內不再提示

微服務架構必讀篇-網關

馬哥Linux運維 ? 來源:稀土掘金 ? 2023-06-30 10:06 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

前言

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

什么是API網關

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

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

網關工作流程如下圖:

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.高可用

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

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

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

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

3.高擴展

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

網關主要功能

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

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

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

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

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

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

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

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

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

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

目前主流的網關

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

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

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

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

網關之間的對比如下圖:

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

總結

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

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





審核編輯:劉清

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

    關注

    3

    文章

    180

    瀏覽量

    24093
  • Linux系統(tǒng)

    關注

    4

    文章

    614

    瀏覽量

    29914
  • URL
    URL
    +關注

    關注

    0

    文章

    142

    瀏覽量

    16224
  • JAVA語言
    +關注

    關注

    0

    文章

    138

    瀏覽量

    21532
  • AMQP
    +關注

    關注

    0

    文章

    7

    瀏覽量

    2820

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

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

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

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

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

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

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

    微服務優(yōu)勢_微服務架構的好處與不足

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

    微服務架構與實踐基礎

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

    什么是微服務架構_微服務架構的優(yōu)缺點及應用

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

    SOA架構微服務架構的主要區(qū)別

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

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

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

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

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

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

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

    什么是微服務架構?

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

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

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

    從分層架構微服務架構介紹(五)

    本文要介紹的是 服務架構 (Service-Based Architecture, SBA )。 SBA 可以看成是單體架構微服務架構
    的頭像 發(fā)表于 05-10 17:02 ?1674次閱讀
    從分層<b class='flag-5'>架構</b>到<b class='flag-5'>微服務</b><b class='flag-5'>架構</b>介紹(五)

    springcloud微服務架構

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

    docker微服務架構實戰(zhàn)

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

    設計微服務架構的原則

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