Ár dtaithí maidir le API Gateway a chruthú

Forbraíonn roinnt cuideachtaí, ár gcustaiméir san áireamh, an táirge trí líonra comhpháirtíochta. Mar shampla, déantar siopaí móra ar líne a chomhtháthú leis an tseirbhís seachadta - ordaíonn tú táirge agus go luath gheobhaidh tú uimhir rianaithe don phacáiste. Sampla eile is ea nuair a cheannaíonn tú árachas nó ticéad Aeroexpress in éineacht le do thicéad aeir.

Chun seo, úsáidtear API amháin, a chaithfear a eisiúint chuig comhpháirtithe tríd an API Gateway. Tá an fhadhb seo réitithe againn. San Airteagal seo inseoimid duit na sonraí.

Mar gheall ar: éiceachóras agus tairseach API le comhéadan ina bhfuil úsáideoirí cláraithe, faisnéis a fháil, etc. Ní mór dúinn Geata API áisiúil agus iontaofa a dhéanamh. Sa phróiseas, ní mór dúinn a chur ar fáil

  • clárú,
  • Rialú nasc API,
  • monatóireacht a dhéanamh ar conas a úsáideann úsáideoirí an córas deiridh,
  • cuntasaíocht do tháscairí gnó.

Ár dtaithí maidir le API Gateway a chruthú

San alt labhróimid faoinár dtaithí maidir le API Gateway a chruthú, inar réitigheamar na tascanna seo a leanas:

  • fíordheimhniú úsáideora,
  • údarú úsáideora,
  • modhnú ar an iarratas bunaidh,
  • seachfhreastalaí a iarraidh,
  • iarphróiseáil freagartha.


Tá dhá chineál bainistíochta API ann:

1. Caighdeán, a oibríonn mar seo a leanas. Sula ndéanann sé ceangal, déanann an t-úsáideoir na gnéithe a thástáil, ansin íocann sé agus neadaíonn sé ar a shuíomh. Is minic a úsáidtear iad i ngnólachtaí beaga agus meánmhéide.

2. Bainistíocht API Mór B2B, nuair a dhéanann an chuideachta cinneadh gnó ar dtús chun ceangal a dhéanamh, go dtiocfaidh sé ina chomhpháirtí den chuideachta le oibleagáid chonarthach, agus ansin nascann sé leis an API. Agus tar éis na foirmiúlachtaí go léir a shocrú, faigheann an chuideachta rochtain tástála, pasann an tástáil agus téann sé isteach i dtáirgeadh. Ach ní féidir é seo a dhéanamh gan cinneadh bainistíochta ceangal a dhéanamh.

Ár dtaithí maidir le API Gateway a chruthú

Ár réiteach

Sa chuid seo, labhairfimid faoi Geata API a chruthú.

Is comhpháirtithe dár gcustaiméirí iad úsáideoirí deiridh an gheata API cruthaithe. Tá na conarthaí riachtanacha againn cheana féin do gach ceann acu. Ní bheidh orainn ach an fheidhmiúlacht a leathnú tríd an rochtain a deonaíodh ar an ngeata a mharcáil. Dá réir sin, tá gá le próiseas nasctha agus bainistíochta rialaithe.

Ar ndóigh, bhíothas in ann roinnt réiteach réidh a ghlacadh chun fadhb na Bainistíochta API a réiteach agus Geata API a chruthú go háirithe. Mar shampla, d'fhéadfadh sé seo a bheith Bainistíocht API Azure. Ní raibh sé oiriúnach dúinn, mar inár gcás bhí tairseach API againn cheana féin agus éiceachóras ollmhór tógtha timpeall air. Tá na húsáideoirí go léir cláraithe cheana féin, thuig siad cheana féin cén áit agus conas is féidir leo an fhaisnéis riachtanach a fháil. Bhí na comhéadain riachtanacha ann cheana féin sa tairseach API, ní raibh ach an API Gateway ag teastáil uainn. I ndáiríre, táimid i mbun a fhorbairt.

Is cineál seachfhreastalaí é an rud a dtugaimid Geata API air. Anseo bhí rogha againn arís - is féidir leat do sheachvótálaí féin a scríobh, nó is féidir leat rud réidh de dhéantús an duine a roghnú. Sa chás seo, chuaigh muid an dara bealach agus roghnaigh an nginx + Lua bundle. Cén fáth? Bhí bogearraí iontaofa, tástálaithe ag teastáil uainn a thacaíonn le scálaithe. Tar éis an cur i bhfeidhm, níor theastaigh uainn cruinneas an loighic ghnó agus cruinneas an tseachfhreastalaí a sheiceáil.

Tá píblíne próiseála iarratais ag gach freastalaí gréasáin. I gcás nginx, tá sé mar seo:

Ár dtaithí maidir le API Gateway a chruthú

(léaráid ó GitHub Lua Nginx)

Ba é an sprioc a bhí againn ná luí isteach sa phíblíne seo ag pointe inar féidir linn an buniarratas a mhodhnú.

Is mian linn seachfhreastalaí trédhearcach a chruthú ionas go bhfanfaidh an t-iarratas mar an gcéanna ó thaobh feidhme agus a tháinig sé. Ní rialaimid ach rochtain ar an API deiridh, cabhraímid leis an iarratas a fháil. I gcás go raibh an t-iarratas mícheart, ba cheart go dtaispeánfadh an API deiridh an earráid, ach ní sinne. Is é an t-aon chúis ar féidir linn iarratas a dhiúltú ná nach bhfuil rochtain ag an gcliant.

Tá do nginx ann cheana féin расширение ar Lua. Is teanga scriptithe í Lua, tá sé an-éadrom agus éasca le foghlaim. Mar sin, chuireamar an loighic riachtanach i bhfeidhm ag baint úsáide as Lua.

Tá cumraíocht nginx (analaí le bealach an iarratais), ina ndéantar an obair ar fad, intuigthe go leor. Is fiú a lua anseo an treoir dheireanach - 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;
}

Smaoinigh ar cad a tharlaíonn sa chumraíocht seo:
níos_soiléir_ionchur_ceanntásca — ghlanann luach na gceannteideal a shonraítear tar éis na treorach.
lua_ghá_iarraidh_chomhlacht - rialaíonn cé acu ar cheart an bunchomhlacht iarratais a léamh roimh na treoracha athscríobh/rochtain/access_by_lua a fhorghníomhú nó nár cheart. De réir réamhshocraithe, ní léann nginx corp iarratais cliant, agus más gá duit rochtain a fháil air, ba cheart an treoir seo a chur ar aghaidh.
athscríobh_le_lua_comhad - an cosán chuig an script, a chuireann síos ar an loighic chun an t-iarratas a mhodhnú
rochtain_le_lua_comhad — an cosán go dtí an script, a chuireann síos ar an loighic a sheiceálann an rochtain ar an acmhainn.
seachfhreastalaí_pas — url a ndéanfar an iarraidh a sheachfhreastal.
comhlacht_scagaire_by_lua_comhad — an cosán chuig an script, a chuireann síos ar an loighic chun an t-iarratas a scagadh sula gcuirtear ar ais chuig an gcliant é.
Agus, ar deireadh, post_aicsean - treoir nach bhfuil doiciméadaithe go hoifigiúil aici lenar féidir leat roinnt gníomhartha eile a dhéanamh tar éis an freagra a thabhairt don chliant.

Ansin, déanfaimid cur síos in ord ar conas a réitigh muid ár gcuid fadhbanna.

Údarú/fíordheimhniú agus mionathrú a iarraidh

Údarú

Thógamar údarú agus fíordheimhniú ag baint úsáide as rochtain deimhnithe. Tá teastas fréimhe ann. Gintear a theastas pearsanta do gach cliant nua de chuid an chustaiméara, lena bhféadfaidh sé rochtain a fháil ar an API. Tá an teastas seo cumraithe sa rannán freastalaí de na socruithe nginx.

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;

Modhnú

D'fhéadfadh ceist chothrom teacht chun cinn: cad atá le déanamh le cliant deimhnithe má theastaíonn uainn go tobann é a dhícheangal ón gcóras? Ná atheisigh teastais do gach cliant eile.

Mar sin chuamar i ngleic go réidh leis an gcéad tasc eile - an t-iarratas bunaidh a mhodhnú. Níl iarratas tosaigh an chliaint, go ginearálta, bailí don chóras deiridh. Ceann de na tascanna is ea na codanna atá in easnamh a chur leis an iarratas chun é a dhéanamh bailí. Is é an pointe go bhfuil na sonraí atá ar iarraidh difriúil do gach cliant. Tá a fhios againn go dtagann cliant chugainn le teastas ónar féidir linn méarloirg a thógáil agus na sonraí cliant riachtanacha a bhaint as an mbunachar sonraí.

Más gá duit ag pointe éigin an cliant a dhícheangal ónár seirbhís, imeoidh a chuid sonraí ón mbunachar sonraí agus ní bheidh sé in ann aon rud a dhéanamh.

Ag obair le sonraí custaiméirí

Bhí orainn an réiteach a chur ar fáil go hard, go háirithe an chaoi a bhfaighimid sonraí custaiméirí. Is é an deacracht atá ann gurb é príomhfhoinse na sonraí seo ná seirbhís tríú páirtí nach ráthaíonn luas ard a dhóthain gan bhriseadh.

Dá bhrí sin, bhí orainn fáil ard ar shonraí custaiméirí a chinntiú. Mar uirlis, roghnaigh muid coilla sholáthraíonn dúinn:

  • rochtain thapa ar shonraí
  • an cumas braisle de roinnt nóid a eagrú le sonraí a mhacasamhlú ar nóid éagsúla.

Chuaigh muid leis an straitéis is simplí chun sonraí a sheachadadh chuig an taisce:

Ár dtaithí maidir le API Gateway a chruthú

Tarlaíonn obair leis an gcóras deiridh laistigh de sheisiúin agus tá teorainn leis an uaslíon. Mura bhfuil an seisiún dúnta ag an gcliant, beidh orainn é seo a dhéanamh.

Tagann na sonraí seisiún oscailte ón gcóras deiridh agus déantar iad a phróiseáil ar dtús ar thaobh Lua. Shocraigh muid Hazelcast a úsáid chun na sonraí seo a stóráil le post .NET. Ansin, ag roinnt eatraimh, déanaimid seiceáil ar cheart chun na beatha de sheisiúin oscailte agus dúnaimid na cinn lofa.

Teacht ar Hazelcast ó Lua agus .NET araon

Níl aon chliaint Lua ag obair le Hazelcast, ach tá API REST ag Hazelcast, a shocraigh muid a úsáid. Le haghaidh .NET tá custaiméir, trína raibh sé beartaithe againn rochtain a fháil ar shonraí Hazelcast ar thaobh .NET. Ach ní raibh sé ann.

Ár dtaithí maidir le API Gateway a chruthú

Nuair a bhíonn sonraí á stóráil trí REST agus sonraí á n-aisghabháil trí chliant .NET, úsáidtear sraitheoirí agus dísháireoirí éagsúla. Mar sin, tá sé dodhéanta sonraí a chur trí REST, ach é a fháil tríd an gcliant .NET agus vice versa.

Má tá suim agat, inseoimid duit níos mó faoin bhfadhb seo in alt ar leith. Spoiler - ar an scéimreach.

Ár dtaithí maidir le API Gateway a chruthú

Logáil agus monatóireacht

Is é an caighdeán corparáideach atá againn le haghaidh logáil isteach trí .NET ná Serilog, críochnaíonn gach logáil isteach i Elasticsearch, agus déanaimid anailís orthu trí Kibana. Ba mhaith liom rud éigin den chineál céanna a dhéanamh sa chás seo. An t-aon cheann custaiméir a bheith ag obair le Elastic ar Lua, a fuarthas, bhris ar an gcéad riachtanas. Agus d’úsáideamar Fluentd.

líofa - réiteach foinse oscailte chun sraith amháin de logáil feidhmchlár a sholáthar. Ligeann sé duit logaí a bhailiú ó shraitheanna éagsúla den fheidhmchlár, agus ansin iad a chraoladh isteach i bhfoinse amháin.

Oibríonn API Gateway i K8S, agus mar sin shocraigh muid coimeádán a chur leis a bhfuil líofa sa chodán céanna aige chun logaí a scríobh chuig an gcalafort tcp oscailte atá ann cheana féin fluentd.

Rinneamar iniúchadh freisin ar cé chomh líofa is a bheadh ​​iompar mura mbeadh baint aige le Elasticsearch. Ar feadh dhá lá, seoladh iarratais go leanúnach chuig an geata, cuireadh logs chuig fluentd, ach cuireadh cosc ​​​​ar líofa ó IP Elastic. Tar éis an nasc a athchóiriú, rug líofa suas go hiomlán na logaí go léir i Leaisteacha.

Conclúid

Thug an cur chuige roghnaithe maidir le cur i bhfeidhm deis dúinn táirge fíor-oibreach a sheachadadh chuig an timpeallacht chomhrac i díreach 2.5 mí.

Má tharlaíonn sé go ndéanann tú rudaí den sórt sin lá éigin, molaimid duit a thuiscint go soiléir ar dtús cén fhadhb atá á réiteach agat agus cad iad na hacmhainní atá agat cheana féin. Bí ar an eolas faoi na castachtaí a bhaineann le comhtháthú le córais bhainistíochta API atá ann cheana féin.

A thuiscint duit féin cad go díreach atá tú ag dul a fhorbairt - ach an loighic ghnó chun iarratais a phróiseáil, nó, mar a d'fhéadfadh sé a bheith inár gcás, an seachfhreastalaí ar fad. Ná déan dearmad go gcaithfear gach rud a dhéanann tú féin a thástáil go críochnúil ina dhiaidh sin.

Foinse: will.com

Ceannaigh óstáil iontaofa do shuímh le cosaint DDoS, freastalaithe VPS VDS 🔥 Ceannaigh óstáil gréasáin iontaofa le cosaint DDoS, freastalaithe VPS VDS | ProHoster