paint-brush
Jinsi ya KUKAUSHA Usanidi wako wa Apache APISIXkwa@nfrankel
163 usomaji Historia mpya

Jinsi ya KUKAUSHA Usanidi wako wa Apache APISIX

kwa Nicolas Fränkel8m2024/09/05
Read on Terminal Reader

Ndefu sana; Kusoma

Usijirudie au KUKAUSHA ni kanuni muhimu katika ukuzaji wa programu. Chapisho hili litakuonyesha jinsi ya kuitumia kwa usanidi wa Apache APISIX. Kanuni hiyo imetungwa na Andy Hunt na Dave Thomas katika kitabu chao The Pragmatic Programmer. Wanaitumia kwa upana ili kujumuisha schema za hifadhidata, mipango ya majaribio, mfumo wa ujenzi, hata hati.
featured image - Jinsi ya KUKAUSHA Usanidi wako wa Apache APISIX
Nicolas Fränkel HackerNoon profile picture

Usijirudie au KUKAUSHA ni kanuni muhimu katika ukuzaji wa programu. Chapisho hili litakuonyesha jinsi ya kuitumia kwa usanidi wa Apache APISIX.

Kanuni ya KAVU

"Usijirudie" (DRY) ni kanuni ya ukuzaji wa programu inayolenga kupunguza marudio ya habari ambayo kuna uwezekano wa kubadilika, badala yake na vifupisho ambavyo vina uwezekano mdogo wa kubadilika, au kutumia urekebishaji wa data ambao huepuka kupunguzwa tena. .


-- Wikipedia - Usijirudie


Wazo kuu la DRY ni kwamba ikiwa utajirudia na habari inabadilika, basi lazima usasishe habari iliyobadilishwa katika sehemu nyingi. Sio tu juhudi za ziada; kuna nafasi utaisahau na kuwa na habari tofauti katika sehemu tofauti. KAVU huangaza katika kurekebisha hitilafu.


Hebu fikiria kijisehemu cha msimbo kilicho na hitilafu. Fikiria sasa kwamba umenakili kijisehemu katika sehemu mbili tofauti. Sasa, lazima urekebishe hitilafu katika sehemu hizi mbili, na hiyo ndiyo sehemu rahisi; kiumbe kigumu kujua kuhusu kurudia mara ya kwanza.


Kuna uwezekano mkubwa kwamba mtu anayenakili na yule anayerekebisha ni tofauti. Ikiwa kijisehemu kilikuwa kimerekebishwa ili kushirikiwa na kuitwa kutoka sehemu hizo mbili badala yake, unahitaji tu kurekebisha hitilafu katika sehemu hii moja.


Watu wengi huhusisha DRY na msimbo. Walakini, inaweza kuwa kikwazo zaidi na kinyume na wazo la asili.


Kanuni hiyo imetungwa na Andy Hunt na Dave Thomas katika kitabu chao The Pragmatic Programmer. Wanaitumia kwa upana ili kujumuisha schema za hifadhidata, mipango ya majaribio, mfumo wa ujenzi, hata hati.


-- Wikipedia - Usijirudie


Mifumo ya usanidi wa sauti inaruhusu KAUSHA au hata kuihimiza.

DRY katika Apache APISIX

Apache APISIX inatoa usanidi wa KAVU katika sehemu mbili.

KUKAUSHA Mito ya Juu

Katika muktadha wa biashara ya mtandaoni, safari yako ya mwanzo ya kufafanua njia kwenye Apache APISIX huenda inaanza kama ifuatavyo:


 routes: - id: 1 name: Catalog uri: /products* upstream: nodes: "catalog:8080": 1


Ikiwa unaifahamu APISIX, tulifafanua njia ya kwenda kwenye katalogi chini ya /products URI. Hata hivyo, kuna tatizo: pengine ungependa wanaotarajia kuwa wateja kuvinjari katalogi lakini unataka kuzuia watu kuunda, kufuta au kusasisha bidhaa. Bado, njia inalingana na kila njia ya HTTP kwa chaguo-msingi.


Tunapaswa kuruhusu watumiaji walioidhinishwa pekee kudhibiti katalogi ili kila mtu aweze kuivinjari bila malipo. Ili kutekeleza mbinu hii, tunahitaji kugawanya njia katika sehemu mbili:


 routes: - id: 1 name: Read the catalogue methods: [ "GET", "HEAD" ] #1 uri: /products* upstream: #2 nodes: "catalog:8080": 1 - id: 1 name: Read the catalogue methods: [ "PUT", "POST", "PATCH", "DELETE" ] #3 uri: /products* plugins: key-auth: ~ #4 upstream: #2 nodes: "catalog:8080": 1
  1. Kuvinjari kwa mechi
  2. Imerudiwa juu ya mkondo!
  3. Kusimamia mechi
  4. Wateja walioidhinishwa pekee wanaweza kutumia njia hii; key-auth ndio programu-jalizi rahisi zaidi ya hii


Tulirekebisha suala la usalama kwa njia rahisi iwezekanavyo: kwa kunakili-kubandika. Kwa kufanya hivyo, tulinakili sehemu upstream . Ikiwa tunahitaji kubadilisha topolojia, kwa mfano , kwa kuongeza au kuondoa nodi, lazima tuifanye katika sehemu mbili. Inashinda kanuni ya KAVU.


Katika hali za ulimwengu halisi, haswa zinapohusisha kontena, huwezi kutekeleza upstream kwa kuorodhesha nodes . Unapaswa badala yake utekeleze ugunduzi wa huduma thabiti ili kushughulikia mabadiliko ya topolojia. Hata hivyo, hatua bado inasimama wakati unahitaji kubadilisha usanidi wa ugunduzi wa huduma au utekelezaji. Kwa hivyo, hoja yangu inatumika sawa kwa nodi na ugunduzi wa huduma.


Pamoja na muhtasari wa Njia , APISIX inatoa muhtasari wa Mkondo wa Juu ili kutekeleza KAUSHA. Tunaweza kuandika tena kijisehemu kilicho hapo juu kama hii:


 upstreams: - id: 1 #1 name: Catalog nodes: "catalog:8080": 1 routes: - id: 1 name: Read the catalogue methods: [ "GET", "HEAD" ] uri: /products* upstream_id: 1 #2 - id: 1 name: Read the catalogue methods: [ "PUT", "POST", "PATCH", "DELETE" ] uri: /products* upstream_id: 1 #2 plugins: key-auth: ~
  1. Bainisha mkondo kwa kutumia ID 1
  2. Irejelee kwenye njia


Iwapo chochote kitatokea katika topolojia, lazima tusasishe mabadiliko katika mkondo mmoja wa Juu pekee.


Kumbuka kuwa kufafanua upstream uliopachikwa na kuirejelea upstream_id ni wa kipekee .

Usanidi wa programu-jalizi KAVU

Eneo lingine ambalo APISIX inaweza kukusaidia KUKAUSHA usanidi wako kwa uondoaji wa Programu- jalizi. APISIX hutekeleza vipengele vingi, kama si vyote, kupitia programu-jalizi


Wacha tutekeleze toleo linalotegemea njia kwenye API yetu. Tunahitaji kuandika upya URL kabla ya kuisambaza.


 routes: - id: 1 name: Read the catalogue methods: [ "GET", "HEAD" ] uri: /v1/products* upstream_id: 1 plugins: proxy-rewrite: regex_uri: [ "/v1(.*)", "$1" ] #1 - id: 1 name: Read the catalogue methods: [ "PUT", "POST", "PATCH", "DELETE" ] uri: /v1/products* upstream_id: 1 plugins: proxy-rewrite: regex_uri: [ "/v1(.*)", "$1" ] #1
  1. Ondoa kiambishi awali cha /v1 kabla ya kusambaza


Kama ilivyo upstream hapo juu, sehemu ya plugins inarudiwa. Tunaweza pia kuainisha usanidi wa programu-jalizi katika kipengee maalum cha Usanidi wa Programu-jalizi . Kijisehemu kifuatacho kina athari sawa na kilicho hapo juu:


 plugin_configs: - id: 1 #1 plugins: proxy-rewrite: regex_uri: [ "/v1(.*)", "$1" ] routes: - id: 1 name: Read the catalogue methods: [ "GET", "HEAD" ] uri: /v1/products* upstream_id: 1 plugin_config_id: 1 #2 - id: 1 name: Read the catalogue methods: [ "PUT", "POST", "PATCH", "DELETE" ] uri: /v1/products* upstream_id: 1 plugin_config_id: 1 #2
  1. Eleza usanidi wa programu-jalizi katika kitu maalum
  2. Rejea


Wasomaji werevu wanaweza kuwa wamegundua kuwa ninakosa sehemu ya usanidi: auth-key kilitoweka kwa njia ya ajabu! Hakika mimi niliiondoa kwa ajili ya uwazi.


Tofauti na upstream na upstream_id , plugins na plugin_config_id hazitengani . Tunaweza kurekebisha suala hilo kwa kuongeza tu plugin inayokosekana:


 routes: - id: 1 name: Read the catalogue methods: [ "GET", "HEAD" ] uri: /v1/products* upstream_id: 1 plugin_config_id: 1 - id: 1 name: Read the catalogue methods: [ "PUT", "POST", "PATCH", "DELETE" ] uri: /v1/products* upstream_id: 1 plugin_config_id: 1 plugins: key-auth: ~ #1
  1. Irekebishe!


Kwa njia hii, unaweza kuhamisha usanidi ulioshirikiwa kwa kitu plugin_config na kuweka maalum mahali inatumika. Lakini vipi ikiwa programu-jalizi sawa na usanidi tofauti inatumiwa kwenye plugin_config na moja kwa moja kwenye route ? Nyaraka ziko wazi juu yake:


Consumer > Consumer Group > Route > Plugin Config > Service


Kwa kifupi, usanidi wa plugin katika route hukataza usanidi katika plugin_config_id . Pia huturuhusu kutoa utofauti wa apikey kwa programu-jalizi ya key-auth katika consumer na kuiweka kwenye njia pekee. APISIX itapata na kutumia ufunguo kwa kila consumer !

Hitimisho

KUKAUSHA sio tu kuhusu msimbo; ni kuhusu usimamizi wa data kwa ujumla. Usanidi ni data na kwa hivyo iko chini ya mwavuli huu wa jumla.

APISIX inatoa chaguzi mbili za KAVU: moja ya upstream - upstream_id , na moja ya plugin - plugin_config_id . Mito ya juu ni ya kipekee; programu-jalizi huruhusu kubatilisha.


Taratibu zote mbili zinapaswa kukusaidia kuelekea KUKAUSHA usanidi wako na kuifanya iweze kudumishwa kwa muda mrefu.


Ili kwenda zaidi:



Ilichapishwa awali katika A Java Geek mnamo Septemba 1, 2024