偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

天天只會(huì)用Java寫(xiě)CRUD,出去面試讓你設(shè)計(jì)API網(wǎng)關(guān)你會(huì)嗎?

開(kāi)發(fā) 前端
那今天來(lái)講講,API 網(wǎng)關(guān)是啥,到底能對(duì)我們起到什么作用呢?這個(gè)一般面試的時(shí)候也很可能會(huì)問(wèn)到這個(gè)知識(shí)點(diǎn)的。

今天給大家分享一個(gè) API 網(wǎng)關(guān)的知識(shí),很多兄弟可能平時(shí)經(jīng)常搞的都是一些 CRUD 的業(yè)務(wù)系統(tǒng)開(kāi)發(fā),從來(lái)沒(méi)接觸過(guò) API 網(wǎng)關(guān)。

那今天來(lái)講講,API 網(wǎng)關(guān)是啥,到底能對(duì)我們起到什么作用呢?這個(gè)一般面試的時(shí)候也很可能會(huì)問(wèn)到這個(gè)知識(shí)點(diǎn)的。

先來(lái)看看業(yè)務(wù)系統(tǒng)技術(shù)棧

平時(shí)咱們可能寫(xiě)系統(tǒng)的時(shí)候,往往就是基于 SpringBoot+Spring MVC+Spring+Mybatis 這套技術(shù)棧來(lái)開(kāi)發(fā)業(yè)務(wù)代碼,然后連接一個(gè) MySQL 就行了。

你調(diào)用別的系統(tǒng)往往就是基于 Dubbo,注冊(cè)中心可能是 Zookeeper 也可能是 Nacos。

就類似下面的這個(gè)圖,對(duì)不對(duì)?

網(wǎng)關(guān)路由請(qǐng)求轉(zhuǎn)發(fā)功能

好,那么現(xiàn)在給大家講第一個(gè)痛點(diǎn),那就是你們公司可能存在 n 多個(gè)業(yè)務(wù)系統(tǒng),那琳瑯滿目的,可能有幾十個(gè)系統(tǒng)。

此時(shí)對(duì)于前端/APP 端他們還能知道哪個(gè)請(qǐng)求發(fā)送給哪個(gè)系統(tǒng)嗎,這真的是太麻煩了,對(duì)不對(duì)?所以說(shuō),此時(shí)一般會(huì)引入一個(gè) API 網(wǎng)關(guān)。

你每個(gè)業(yè)務(wù)系統(tǒng)吧,在 API 網(wǎng)關(guān)里配置一下,自己要處理什么樣的請(qǐng)求 url,然后 API 網(wǎng)關(guān)收到請(qǐng)求以后,根據(jù)請(qǐng)求 url 路徑判斷一下,就知道應(yīng)該把請(qǐng)求轉(zhuǎn)發(fā)給哪個(gè)業(yè)務(wù)系統(tǒng)了,完美,對(duì)不對(duì)?

看看下圖吧:

網(wǎng)關(guān)統(tǒng)一授權(quán)和鑒權(quán)功能

下一個(gè)問(wèn)題來(lái)了,你這個(gè)系統(tǒng)能允許別人誰(shuí)來(lái)都隨便調(diào)用你嗎?你不得搞一個(gè)授權(quán)和鑒權(quán)的過(guò)程?你不得甄別甄別發(fā)送請(qǐng)求來(lái)的這個(gè)人是好人壞人?

你不得想想發(fā)送過(guò)來(lái)的這個(gè)請(qǐng)求到底應(yīng)該不應(yīng)該處理嗎?所以這個(gè)時(shí)候這個(gè)鑒權(quán)的事情你自己搞嗎?那太麻煩了吧,你也鑒權(quán),別的系統(tǒng)自己也鑒權(quán),那真的是麻煩大了。

所以這個(gè)時(shí)候,我們就直接在 API 網(wǎng)關(guān)里加入鑒權(quán)功能不就完了,一個(gè)請(qǐng)求過(guò)來(lái)是好人還是壞人,API 網(wǎng)關(guān)就幫你鑒權(quán)了,通過(guò)鑒權(quán)的請(qǐng)求才能往后端發(fā)送。

如下圖:

API 網(wǎng)關(guān)層流控功能

再下一個(gè)痛點(diǎn)來(lái)了,那就是假設(shè)咱們系統(tǒng)一共就部署了幾臺(tái)機(jī)器,總共每秒幾千請(qǐng)求了不得了,結(jié)果有一天運(yùn)營(yíng)搞了一個(gè)特別棒的活動(dòng),每秒來(lái)了幾萬(wàn)流量和請(qǐng)求,一下子給你擊垮了,你說(shuō)你怎么辦,你扛不住???

所以這個(gè)時(shí)候啊,還得在 API 網(wǎng)關(guān)層加入流控的功能,每個(gè)業(yè)務(wù)系統(tǒng)可以配置自己能抗的 QPS,他根據(jù)這個(gè)來(lái)限制每秒轉(zhuǎn)發(fā)給你的請(qǐng)求不就完了。

如下圖:

API 網(wǎng)關(guān)層灰度發(fā)布功能

然后呢,還有一個(gè)經(jīng)常遇到的痛點(diǎn),那就是咱們每次系統(tǒng)上線部署,如果一下子把新的版本部署到所有機(jī)器里去,就怕新版本上線就掉倆字,直接就崩潰,這可怎么辦。

所以一般來(lái)說(shuō),可以引入一個(gè)灰度發(fā)布,這個(gè)灰度發(fā)布意思就是說(shuō),假設(shè)你系統(tǒng)部署了 3 臺(tái)機(jī)器,每次上線先部署 1 臺(tái)機(jī)器,然后線上的流量里劃分 5% 給這個(gè)新部署的灰度版本機(jī)器,先觀察一下咋樣,要是沒(méi)問(wèn)題,再把后續(xù)兩臺(tái)機(jī)器給部署了,這就是灰度發(fā)布。

灰度發(fā)布也可以叫做金絲雀發(fā)布,這個(gè)金絲雀發(fā)布是啥意思呢,就是以前古代有盜版的人下墓的時(shí)候先把金絲雀扔進(jìn)去看看,如果他不叫了,說(shuō)明墓里有毒氣,現(xiàn)在這個(gè)灰度發(fā)布也是一個(gè)意思,先把新版本部署到一臺(tái)機(jī)器里去,觀察一下,要是他崩了,就說(shuō)明代碼有問(wèn)題。

所以此時(shí)就可以基于 API 網(wǎng)關(guān)來(lái)實(shí)現(xiàn)灰度發(fā)布了,每次部署了灰度版本以后,讓 API 網(wǎng)關(guān)就劃分 5% 的流量給這個(gè)灰度版本,一切正常了再全量部署。

如下圖:

好了,到這里為止,就給大家把這個(gè) API 網(wǎng)關(guān)的作用講清楚了,大家平時(shí)不要老是埋頭寫(xiě) crud 代碼啊,對(duì) API 網(wǎng)關(guān)這些東西,也是要了解一下的,別啥都不知道。

責(zé)任編輯:姜華 來(lái)源: 今日頭條
相關(guān)推薦

2022-04-13 07:51:49

API網(wǎng)關(guān)系統(tǒng)

2022-04-28 21:53:52

TypeScriptany類型

2020-05-14 08:59:28

API網(wǎng)關(guān)性能

2019-06-03 10:14:07

API網(wǎng)關(guān)微服務(wù)

2020-03-06 10:25:10

注解Java代碼

2011-09-30 13:37:35

51CTO博客一周熱門(mén)薪酬

2024-07-30 08:22:47

API前端網(wǎng)關(guān)

2024-07-10 11:40:15

2025-01-20 00:00:00

反射Java語(yǔ)言

2012-06-20 15:01:25

iOS開(kāi)發(fā)

2023-02-27 10:45:16

2025-04-01 08:00:00

curl開(kāi)發(fā)運(yùn)維

2022-02-17 08:57:18

內(nèi)存設(shè)計(jì)進(jìn)程

2021-11-30 10:38:09

splitStringTokenJava

2020-06-04 14:15:55

Java中BigDecimal函數(shù)

2018-09-29 15:34:34

JavaList接口

2019-07-25 12:46:32

Java高并發(fā)編程語(yǔ)言

2021-01-28 09:55:50

while(1)for(;;)Linux

2021-03-17 11:16:58

while(1)for(;;)語(yǔ)言

2021-08-11 10:00:51

緩存MyBatis管理
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)