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 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. /products 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 Kuvinjari kwa mechi Imerudiwa juu ya mkondo! Kusimamia mechi Wateja walioidhinishwa pekee wanaweza kutumia njia hii; ndio programu-jalizi rahisi zaidi ya hii key-auth Tulirekebisha suala la usalama kwa njia rahisi iwezekanavyo: kwa kunakili-kubandika. Kwa kufanya hivyo, tulinakili sehemu . Ikiwa tunahitaji kubadilisha topolojia, , kwa kuongeza au kuondoa nodi, lazima tuifanye katika sehemu mbili. Inashinda kanuni ya KAVU. upstream kwa mfano Katika hali za ulimwengu halisi, haswa zinapohusisha kontena, huwezi kutekeleza kwa kuorodhesha . Unapaswa badala yake utekeleze 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. upstream nodes ugunduzi wa huduma Pamoja na muhtasari wa , APISIX inatoa muhtasari wa ili kutekeleza KAUSHA. Tunaweza kuandika tena kijisehemu kilicho hapo juu kama hii: Njia Mkondo wa Juu 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: ~ Bainisha mkondo kwa kutumia ID 1 Irejelee kwenye njia Iwapo chochote kitatokea katika topolojia, lazima tusasishe mabadiliko katika mkondo mmoja pekee. wa Juu Kumbuka kuwa kufafanua uliopachikwa na kuirejelea ni . upstream upstream_id wa kipekee Usanidi wa programu-jalizi KAVU Eneo lingine ambalo APISIX inaweza kukusaidia KUKAUSHA usanidi wako kwa uondoaji jalizi. APISIX hutekeleza vipengele vingi, kama si vyote, kupitia programu-jalizi wa Programu- Wacha tutekeleze kwenye API yetu. Tunahitaji kuandika upya URL kabla ya kuisambaza. toleo linalotegemea njia 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 Ondoa kiambishi awali cha kabla ya kusambaza /v1 Kama ilivyo hapo juu, sehemu ya inarudiwa. Tunaweza pia kuainisha usanidi wa programu-jalizi katika kipengee maalum cha . Kijisehemu kifuatacho kina athari sawa na kilicho hapo juu: upstream plugins Usanidi wa Programu-jalizi 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 Eleza usanidi wa programu-jalizi katika kitu maalum Rejea Wasomaji werevu wanaweza kuwa wamegundua kuwa ninakosa sehemu ya usanidi: kilitoweka kwa njia ya ajabu! Hakika mimi niliiondoa kwa ajili ya uwazi. auth-key Tofauti na na , na . Tunaweza kurekebisha suala hilo kwa kuongeza tu inayokosekana: upstream upstream_id plugins plugin_config_id hazitengani plugin 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 Irekebishe! Kwa njia hii, unaweza kuhamisha usanidi ulioshirikiwa kwa kitu na kuweka maalum mahali inatumika. Lakini vipi ikiwa programu-jalizi sawa na usanidi tofauti inatumiwa kwenye na moja kwa moja kwenye ? ziko wazi juu yake: plugin_config plugin_config route Nyaraka > > > > Consumer Consumer Group Route Plugin Config Service Kwa kifupi, usanidi wa katika hukataza usanidi katika . Pia huturuhusu kutoa utofauti wa kwa programu-jalizi ya katika na kuiweka kwenye njia pekee. APISIX itapata na kutumia ufunguo kwa kila ! plugin route plugin_config_id apikey key-auth consumer 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 - , na moja ya - . Mito ya juu ni ya kipekee; programu-jalizi huruhusu kubatilisha. upstream upstream_id plugin plugin_config_id Taratibu zote mbili zinapaswa kukusaidia kuelekea KUKAUSHA usanidi wako na kuifanya iweze kudumishwa kwa muda mrefu. Ili kwenda zaidi: Kanuni ya Usijirudie Utangulizi wa kuunganisha usanidi Ilichapishwa awali katika mnamo Septemba 1, 2024 A Java Geek