Chiitiko chedu mukugadzira API Gateway

Mamwe makambani, kusanganisira mutengi wedu, anovandudza chigadzirwa kuburikidza netiweki yeshamwari. Semuenzaniso, zvitoro zvakakura zvepamhepo zvakabatanidzwa nebasa rekutumira - unoodha chigadzirwa uye nekukurumidza unogamuchira nhamba yekutevera yepakeji. Mumwe muenzaniso ndewe paunotenga inishuwarenzi kana tikiti yeAeroexpress pamwe netikiti rako remhepo.

Kune izvi, imwe API inoshandiswa, iyo inofanirwa kupihwa kune vanobatana kuburikidza neiyo API Gateway. Tagadzirisa dambudziko iri. Munyaya ino tichakuudza zvakadzama.

Yakapihwa: ecosystem uye API portal ine interface uko vashandisi vakanyoreswa, vanogamuchira ruzivo, nezvimwe. Isu tinofanirwa kugadzira iri nyore uye yakavimbika API Gateway. Mukuita kudaro, taifanira kupa

  • kunyoresa,
  • API yekubatanidza kutonga,
  • kutarisa kuti vashandisi vanoshandisa sei yekupedzisira system,
  • accounting yezviratidzi zvebhizinesi.

Chiitiko chedu mukugadzira API Gateway

Muchinyorwa tichataura nezve ruzivo rwedu mukugadzira API Gateway, panguva yatakagadzirisa anotevera mabasa:

  • chokwadi chemushandisi,
  • mvumo yemushandisi,
  • kugadziriswa kwechikumbiro chekutanga,
  • kukumbira proxy,
  • mhinduro postprocessing.


Kune marudzi maviri eAPI manejimendi:

1. Standard, iyo inoshanda sezvinotevera. Asati abatanidza, mushandisi anoedza maficha, obva abhadhara uye anomisikidza panzvimbo yake. Kazhinji kazhinji anoshandiswa mumabhizinesi madiki uye epakati.

2. Yakakura B2B API Management, apo kambani inotanga kuita sarudzo yebhizimisi yekubatanidza, inova shamwari yekambani ine chisungo chebvumirano, uye yozobatana neAPI. Uye mushure mekunge zvimiro zvese zvagadziriswa, kambani inogamuchira bvunzo kupinda, inopasa bvunzo uye inoenda mukugadzira. Asi izvi hazvigoneke pasina manejimendi sarudzo yekubatanidza.

Chiitiko chedu mukugadzira API Gateway

Mhinduro yedu

Muchikamu chino, tichataura nezve kugadzira API Gateway.

Vashandisi vekupedzisira veiyo yakagadzirwa API gedhi vanodyidzana nemutengi wedu. Isu tatova nemakondirakiti anodiwa kune mumwe nemumwe wavo. Tichangoda kuwedzera kushanda nekumaka iyo yakapihwa mukana wekupinda gedhi. Saizvozvo, inodzorwa yekubatanidza uye manejimendi maitiro anodiwa.

Ehe, zvaigoneka kutora imwe yakagadzirira-yakagadziriswa mhinduro yekugadzirisa dambudziko reAPI Management uye kugadzira API Gateway kunyanya. Somuenzaniso, izvi zvinogona kuva Azure API Management. Izvo hazvina kuenderana nesu, nekuti mune yedu isu takanga tatova neAPI portal uye yakakura ecosystem yakavakirwa pairi. Vese vashandisi vakatonyoreswa, vakatonzwisisa kupi uye sei kwavanogona kuwana ruzivo rwakakosha. Iwo anodiwa anopindirana anga atovepo mune API portal, isu taingoda iyo API Gateway. Chaizvoizvo, isu tiri kuita mukukura kwayo.

Chatinodaidza kuti API Gateway imhando yeproxy. Pano isu zvakare takava nesarudzo - iwe unogona kunyora yako wega proxy, kana iwe unogona kusarudza chinhu chakagadzirira-chakagadzirwa. Muchiitiko ichi, takaenda nenzira yechipiri uye takasarudza iyo nginx + Lua bundle. Sei? Isu taida yakavimbika, yakaedzwa software inotsigira kuyera. Mushure mekuita, isu hatina kuda kutarisa zvese iko kurongeka kwebhizinesi logic uye kurongeka kweiyo proxy.

Yese sevha yewebhu ine chikumbiro chekugadzirisa pombi. Panyaya ye nginx, zvinoita seizvi:

Chiitiko chedu mukugadzira API Gateway

(mufananidzo kubva GitHub Lua Nginx)

Chinangwa chedu chaive chekupinda mupombi iyi panguva yatinogona kugadzirisa chikumbiro chekutanga.

Tinoda kugadzira proxy inoonekera kuitira kuti chikumbiro chirambe chichishanda sezvachakauya. Isu tinongotonga kupinda kune yekupedzisira API, batsira chikumbiro kusvika pachiri. Kana chikumbiro chisina kururama, API yekupedzisira inofanira kuratidza kukanganisa, asi kwete isu. Chikonzero chete chatinogona kuramba chikumbiro ndechekuti mutengi haakwanise kuwana.

Yatovepo yenginx kuwedzera pamusoro Lua. Lua mutauro wekunyora, wakareruka uye nyore kudzidza. Nekudaro, isu takaita inodiwa pfungwa tichishandisa Lua.

Iyo nginx configuration (inofananidzira nzira yekushandiswa), apo basa rose rinoitwa, rinonzwisisika. Chinokosha heino murairo wekupedzisira - post_action.

location /middleware {
      more_clear_input_headers Accept-Encoding;
      lua_need_request_body on;
      rewrite_by_lua_file 'middleware/rewrite.lua';
      access_by_lua_file 'middleware/access.lua';
      proxy_pass https://someurl.com;
      body_filter_by_lua_file 'middleware/body_filter.lua';
      post_action /process_session;
}

Chimbofunga zvinoitika mukugadziriswa uku:
more_clear_input_headers - inobvisa kukosha kwemisoro inotsanangurwa mushure mekuraira.
lua_need_request_body - inodzora kana iyo yekutanga chikumbiro body inofanira kuverengwa isati yaita rewrite/access/access_by_lua mirairo kana kwete. Nekumisikidza, nginx haiverenge mutumbi wechikumbiro chemutengi, uye kana iwe uchida kuiwana, saka kuraira uku kunofanirwa kusetwa.
rewrite_by_lua_file - nzira inoenda kune script, iyo inotsanangura pfungwa yekugadzirisa chikumbiro
access_by_lua_file - iyo nzira inoenda kune script, iyo inotsanangura iyo logic inotarisa kuwana kune iyo sosi.
proxy_pass - url iyo iyo chikumbiro ichaendeswa kune proxied.
body_filter_by_lua_file - nzira inoenda kune script, iyo inotsanangura pfungwa yekusefa chikumbiro usati wadzosera kumutengi.
Uye, pakupedzisira, post_action - chirevo chisina kunyorwa pamutemo chaunogona kuita nacho zvimwe zviito mushure mekunge mhinduro yapihwa kumutengi.

Zvadaro, tichatsanangura nenzira yatakaita matambudziko edu.

Mvumo/kutendeseka uye kugadziridzwa kwekukumbira

Mvumo

Isu takavaka mvumo uye huchokwadi tichishandisa kuwana chitupa. Pane root certificate. Kune yega yega mutengi mutsva wemutengi, chitupa chake chega chinogadzirwa, chaanokwanisa kuwana iyo API. Ichi chitupa chakagadzirirwa muchikamu cheseva chenginx marongero.

ssl on;
ssl_certificate /usr/local/openresty/nginx/ssl/cert.pem;
ssl_certificate_key /usr/local/openresty/nginx/ssl/cert.pem;
ssl_client_certificate /usr/local/openresty/nginx/ssl/ca.crt;
ssl_verify_client on;

Kugadziriswa

Mubvunzo wakanaka unogona kumuka: chii chaunofanira kuita nemutengi akavimbiswa kana tikangoerekana tada kuibvisa kubva kuhurongwa? Usabudise zvitupa zvevamwe vatengi vese.

Saka isu takasvika zvakanaka kune rinotevera basa - kugadzirisa chikumbiro chepakutanga. Chikumbiro chekutanga chemutengi, kazhinji kutaura, hachishande kune yekupedzisira system. Rimwe remabasa nderekuwedzera zvikamu zvisipo kune chikumbiro kuti chiite kuti chishande. Icho chiripo ndechekuti iyo inoshaikwa data yakasiyana kune yega yega mutengi. Isu tinoziva kuti mutengi anouya kwatiri aine chitupa matinogona kutora zvigunwe uye kubvisa inodiwa data yemutengi kubva kudhatabhesi.

Kana pane imwe nguva iwe uchida kubvisa mutengi kubva mubasa redu, data yake ichanyangarika kubva kune database uye haazokwanisi kuita chero chinhu.

Kushanda nevatengi data

Taifanira kuita kuti mhinduro iwanikwe zvakanyanya, kunyanya mawaniro atinoita data revatengi. Chinetso ndechekuti iyo yekutanga sosi yeiyi data ibasa rechitatu-bato risingavimbisi kusakanganiswa uye nekumhanya kwakanyanya.

Naizvozvo, taifanira kuve nechokwadi chekuwanikwa kwepamusoro kwedata revatengi. Sechishandiso, takasarudza hazelcastinotipa:

  • kukurumidza kuwana data
  • kugona kuronga sumbu remanodhi akati wandei nedata rakadzokororwa pamanodhi akasiyana.

Isu takaenda neyakapusa zano rekuendesa data kune cache:

Chiitiko chedu mukugadzira API Gateway

Kushanda nemagumo ekupedzisira kunoitika mukati mezvikamu uye pane muganhu wehuwandu hwehuwandu. Kana mutengi asina kuvhara chikamu, tichafanirwa kuita izvi.

Iyo yakavhurika chikamu data inouya kubva kumagumo system uye inotanga kugadziriswa padivi reLua. Takasarudza kushandisa Hazelcast kuchengetedza iyi data ne.NET basa. Zvadaro, pane dzimwe nguva, tinotarisa kodzero yehupenyu hwezvikamu zvakazaruka uye kuvhara iyo yakaora.

Kuwana Hazelcast kubva kuLua ne.NET

Iko hakuna vatengi veLua vekushanda neHazelcast, asi Hazelcast ine REST API, yatakafunga kushandisa. For .NET pane mutengi, yatakaronga kuwana Hazelcast data pa.NET side. Asi yakanga isipo.

Chiitiko chedu mukugadzira API Gateway

Paunenge uchichengetedza data kuburikidza neREST uye uchitsvaga data kuburikidza ne.NET client, zvakasiyana-siyana serializers uye deserializers zvinoshandiswa. Nokudaro, hazvibviri kuisa data kuburikidza neREST, asi iwane kuburikidza ne.NET client uye zvakasiyana.

Kana pane vanofarira, tichakuudza zvakawanda nezvedambudziko iri mune imwe nyaya. Spoiler - pane schematic.

Chiitiko chedu mukugadzira API Gateway

Kutema nekutarisa

Yedu yekambani chiyero chekutema matanda kuburikidza ne.NET iSerilog, matanda ese anopera muElasticsearch, uye tinoaongorora kuburikidza neKibana. Ndinoda kuita zvakafanana munyaya iyi. Imwe chete mutengi kushanda neElastic paLua, iyo yakawanikwa, yakaputsika pane yekutanga inoda. Uye isu takashandisa Fluentd.

fluentd - yakavhurika sosi mhinduro yekupa imwechete layer yekutema application. Inokutendera kuti utore matanda kubva kune akasiyana maseru ekushandisa, wobva waaparadzira mune imwechete sosi.

API Gedhi rinoshanda muK8S, saka takafunga kuwedzera mudziyo une hunyanzvi mune imwechete pody kuitira kuti tinyore matanda kune iripo yakavhurika tcp port inonzwika.

Isu takaongororawo kuti kutsetsenura kwaizoita sei kana isina kubatana neElasticsearch. Kwemazuva maviri, zvikumbiro zvairamba zvichitumirwa kugedhi, matanda aitumirwa kune akatsetseka, asi fluent yakarambidzwa kubva kuIP Elastic. Mushure mekubatanidza kwadzoreredzwa, fluentd yakanyatso tora matanda ese muElastic.

mhedziso

Nzira yakasarudzwa yekushandiswa yakatibvumira kuendesa chigadzirwa chinoshanda chaizvo kunzvimbo yekurwisana mumwedzi 2.5 chete.

Kana rimwe zuva ukaitika kuti uite zvinhu zvakadaro, tinokupa zano kuti utange wanyatsonzwisisa kuti dambudziko ripi rauri kugadzirisa uye kuti ndezvipi zviwanikwa zvaunazvo. Ziva kuoma kwekubatanidza neiyo iripo API manejimendi masisitimu.

Zvinzwisise iwe pachako kuti chii chaizvo chauchagadzira - chete bhizinesi logic yekugadzirisa zvikumbiro, kana, sezvazvingave kwatiri, iyo yese proxy. Usakanganwa kuti zvese zvaunoita iwe pachako zvinofanirwa kuyedzwa zvakakwana mushure.

Source: www.habr.com

Tenga inovimbika yekutambira kwemasaiti ane DDoS dziviriro, VPS VDS maseva 🔥 Tenga webhusaiti yakavimbika ine dziviriro yeDDoS, maseva eVPS VDS | ProHoster