Ukuhlola okuzenzakalelayo kwama-microservices ku-Docker ukuze kuhlanganiswe okuqhubekayo

Kumaphrojekthi ahlobene nokuthuthukiswa kwe-microservice architecture, i-CI/CD isuka esigabeni sethuba elimnandi iye esigabeni sesidingo esiphuthumayo. Ukuhlola okuzenzakalelayo kuyingxenye ebalulekile yokuhlanganiswa okuqhubekayo, indlela efanele enganikeza iqembu ubusuku obuningi obujabulisayo nomndeni nabangane. Uma kungenjalo, iphrojekthi isengozini yokungaqedwa.

Kungenzeka ukumboza yonke ikhodi ye-microservice ngokuhlolwa kweyunithi ngezinto mbumbulu, kodwa lokhu kuyixazulula kancane inkinga futhi kushiya imibuzo eminingi nobunzima, ikakhulukazi lapho kuhlolwa umsebenzi ngedatha. Njengenjwayelo, okucindezela kakhulu ukuhlola ukuvumelana kwedatha kusizindalwazi esihlobene, umsebenzi wokuhlola ngamasevisi wamafu, nokwenza ukuqagela okungalungile lapho ubhala izinto eziyinhlekisa.

Konke lokhu nokunye okuncane kungaxazululwa ngokuhlola yonke i-microservice esitsheni se-Docker. Inzuzo engangabazeki yokuqinisekisa ukufaneleka kokuhlolwa ukuthi izithombe ze-Docker ezifanayo eziya ekukhiqizweni ziyahlolwa.

I-automation yale ndlela iveza izinkinga eziningi, isisombululo esizochazwa ngezansi:

  • izingxabano zemisebenzi efanayo kumsingathi wedokhi ofanayo;
  • izihlonzi ezishayisanayo kusizindalwazi ngesikhathi sokuphindaphinda ukuhlolwa;
  • ukulinda ama-microservices ukuthi alungele;
  • ukuhlanganisa nokukhipha izingodo ezinhlelweni zangaphandle;
  • ukuhlola izicelo ze-HTTP eziphumayo;
  • ukuhlola isokhethi lewebhu (usebenzisa iSignalR);
  • ukuhlola ukuqinisekiswa kwe-OAuth nokugunyazwa.

Lesi sihloko sisekelwe ku inkulumo yami ku-SECR 2019. Ngakho-ke kulabo abavilapha kakhulu ukufunda, nansi inkulumo eqoshiwe.

Ukuhlola okuzenzakalelayo kwama-microservices ku-Docker ukuze kuhlanganiswe okuqhubekayo

Kulesi sihloko ngizokutshela ukuthi ungasebenzisa kanjani iskripthi ukuze usebenzise isevisi ngaphansi kokuhlolwa, i-database kanye nezinsizakalo ze-Amazon AWS ku-Docker, bese uhlola ku-Postman futhi, ngemva kokuqedwa, yima futhi ususe iziqukathi ezidaliwe. Ukuhlola kwenziwa njalo lapho ikhodi ishintsha. Ngale ndlela, senza isiqiniseko sokuthi inguqulo ngayinye isebenza kahle nesizindalwazi se-AWS namasevisi.

Umbhalo ofanayo uqhutshwa ngabathuthukisi ngokwabo kumadeskithophu abo e-Windows kanye neseva ye-Gitlab CI ngaphansi kwe-Linux.

Ukuze kuthethelelwe, ukwethulwa kokuhlola okusha akumele kudinge ukufakwa kwamathuluzi engeziwe kukhompuyutha kanjiniyela noma kuseva lapho ukuhlola kwenziwa khona ngesibopho. I-Docker ixazulula le nkinga.

Ukuhlola kufanele kusebenze kuseva yendawo ngenxa yezizathu ezilandelayo:

  • Inethiwekhi ayithembeki ngokuphelele. Ezicelweni eziyinkulungwane, esisodwa singahluleka;
    Kulesi simo, ukuhlolwa okuzenzakalelayo ngeke kusebenze, umsebenzi uzoyeka, futhi kuzodingeka ubheke isizathu ezingodweni;
  • Izicelo ezivame kakhulu azivunyelwe izinsizakalo zezinkampani zangaphandle.

Ngaphezu kwalokho, akuthandeki ukusebenzisa isitendi ngoba:

  • Isitendi singaphulwa hhayi kuphela ngekhodi embi esebenza kuso, kodwa futhi ngedatha ikhodi efanele engakwazi ukuyicubungula;
  • Kungakhathaliseki ukuthi sizama kanzima kangakanani ukubuyisela emuva zonke izinguquko ezenziwe ukuhlolwa ngesikhathi sokuhlolwa ngokwako, kukhona okungahamba kahle (ngaphandle kwalokho, kungani kuhlolwa?).

Mayelana nephrojekthi nenhlangano yenqubo

Inkampani yethu ithuthukise uhlelo lwewebhu lwe-microservice olusebenza e-Docker efwini le-Amazon AWS. Ukuhlolwa kweyunithi kwase kusetshenzisiwe kakade kuphrojekthi, kodwa amaphutha ngokuvamile ayenzeka lapho ukuhlolwa kweyunithi akuzange kubonwe. Bekudingeka ukuhlola yonke i-microservice kanye ne-database kanye nezinsizakalo ze-Amazon.

Iphrojekthi isebenzisa inqubo ejwayelekile yokuhlanganisa eqhubekayo, ehlanganisa ukuhlola i-microservice ngakho konke ukuzibophezela. Ngemva kokunikeza umsebenzi, umthuthukisi wenza izinguquko ku-microservice, ayihlole mathupha futhi aqhube zonke izivivinyo ezizenzakalelayo ezitholakalayo. Uma kunesidingo, umthuthukisi ushintsha izivivinyo. Uma zingekho izinkinga ezitholakele, kwenziwa isibophezelo egatsheni lalolu daba. Ngemva kokuzibophezela ngakunye, ukuhlola kuqaliswa ngokuzenzakalelayo kuseva. Ukuhlanganisa egatsheni elivamile kanye nokuqalisa ukuhlola okuzenzakalelayo kulo kwenzeka ngemva kokubuyekeza okuyimpumelelo. Uma izivivinyo egatsheni okwabelwana ngazo zidlula, isevisi ibuyekezwa ngokuzenzakalelayo endaweni yokuhlola ku-Amazon Elastic Container Service (ibhentshi). Isitendi siyadingeka kubo bonke abathuthukisi nabahloli, futhi akufanelekile ukusiphula. Abahloli kule ndawo bahlola ukulungisa noma isici esisha ngokwenza izivivinyo ezenziwa mathupha.

Isakhiwo sephrojekthi

Ukuhlola okuzenzakalelayo kwama-microservices ku-Docker ukuze kuhlanganiswe okuqhubekayo

Isicelo siqukethe izinkonzo ezingaphezu kweshumi. Ezinye zazo zibhalwe nge-.NET Core kanti ezinye ku-NodeJs. Isevisi ngayinye isebenza esitsheni se-Docker ku-Amazon Elastic Container Service. Ngayinye ine-database yayo ye-Postgres, kanti abanye bane-Redis. Azikho izizindalwazi ezivamile. Uma izinsiza eziningana zidinga idatha efanayo, khona-ke le datha, uma ishintsha, idluliselwa kumasevisi ngayinye yalezi zinsizakalo nge-SNS (Isevisi Yesaziso Esilula) kanye ne-SQS (Isevisi Yomugqa Olula we-Amazon), futhi izinsizakalo zigcina kudathabhesi yazo ehlukene.

SQS kanye SNS

I-SQS ikuvumela ukuthi ufake imilayezo kulayini usebenzisa iphrothokholi ye-HTTPS futhi ufunde imilayezo evela kulayini.

Uma amasevisi amaningana efunda umugqa owodwa, umbiko ngamunye ufika kowodwa kuphela. Lokhu kuyasiza uma usebenzisa izimo ezimbalwa zesevisi efanayo ukusabalalisa umthwalo phakathi kwazo.

Uma ufuna umlayezo ngamunye ulethwe kumasevisi amaningi, umamukeli ngamunye kufanele abe nomugqa wakhe, futhi i-SNS iyadingeka ukuze imilayezo iphinde ibe kolayini abaningi.

Ku-SNS udala isihloko bese ubhalisa kuso, isibonelo, ulayini we-SQS. Ungathumela imilayezo esihlokweni. Kulokhu, umlayezo uthunyelwa kulayini ngamunye obhalisele lesi sihloko. I-SNS ayinayo indlela yokufunda imilayezo. Uma ngesikhathi sokulungisa iphutha noma ukuhlola udinga ukuthola ukuthi yini ethunyelwa ku-SNS, ungakha ulayini we-SQS, uwubhalisele esihlokweni osifunayo futhi ufunde ulayini.

Ukuhlola okuzenzakalelayo kwama-microservices ku-Docker ukuze kuhlanganiswe okuqhubekayo

Isango le-API

Izinsizakalo eziningi azitholakali ngokuqondile ku-inthanethi. Ukufinyelela kunge-API Gateway, ehlola amalungelo okufinyelela. Lokhu futhi kuyinkonzo yethu, futhi kukhona nezivivinyo zayo futhi.

Izaziso zesikhathi sangempela

Uhlelo lokusebenza lusebenzisa IsiginaliRukukhombisa izaziso zesikhathi sangempela kumsebenzisi. Lokhu kwenziwa kusevisi yezaziso. Ifinyeleleka ngokuqondile ku-inthanethi futhi ngokwayo isebenza ne-OAuth, ngoba kubonakale kungenangqondo ukwakha usekelo lwamasokhethi eWebhu ku-Gateway, uma kuqhathaniswa nokuhlanganisa i-OAuth nesevisi yesaziso.

Indlela Eyaziwa Kahle Yokuhlola

Ukuhlolwa kweyunithi esikhundleni sezinto ezifana nesizindalwazi ngezinto mbumbulu. Uma ngabe i-microservice, ngokwesibonelo, izama ukwenza irekhodi kuthebula ngokhiye wangaphandle, futhi irekhodi elibhekiselwa kulowo khiye lingekho, isicelo asikwazi ukuqaliswa. Ukuhlolwa kweyunithi akukwazi ukubona lokhu.

Π’ isihloko esivela ku-Microsoft Kuhlongozwa ukuthi kusetshenziswe isizindalwazi esisenkumbulo futhi kusetshenziswe izinto mbumbulu.

Isizindalwazi esingaphakathi kwenkumbulo ingenye yama-DBMS asekelwa Uhlaka Lwebhizinisi. Yakhelwe ukuhlola ngqo. Idatha kusizindalwazi esinjalo igcinwa kuphela kuze kube yilapho inqubo yokuyisebenzisa iphela. Ayidingi ukudala amathebula futhi ayihloli ubuqotho bedatha.

Izinto mbumbulu ziyimodeli yekilasi ezishintshayo kuphela ngendlela umthuthukisi wokuhlola aqonda ngayo ukuthi isebenza kanjani.

Ungawathola kanjani ama-Postgres ukuthi aqale futhi enze ukuthutha ngokuzenzakalelayo lapho uhlola akucacisiwe esihlokweni se-Microsoft. Isixazululo sami senza lokhu futhi, ngaphezu kwalokho, asingezi noma iyiphi ikhodi yokuhlola ku-microservice ngokwayo.

Ake siqhubekele esixazululo

Phakathi nenqubo yokuthuthukiswa, kwacaca ukuthi ukuhlolwa kweyunithi kwakunganele ukuthola zonke izinkinga ngesikhathi, ngakho-ke kwanqunywa ukuba lolu daba lubhekwe ngenye indlela.

Ukusetha indawo yokuhlola

Umsebenzi wokuqala ukufaka indawo yokuhlola. Izinyathelo ezidingekayo ukuze usebenzise i-microservice:

  • Lungiselela isevisi ngaphansi kokuhlolwa kwendawo yasendaweni, cacisa imininingwane yokuxhuma kusizindalwazi kanye ne-AWS kokuhlukahluka kwemvelo;
  • Qala ama-Postgres futhi wenze ukufuduka ngokusebenzisa i-Liquibase.
    Kuma-DBMS ahlobene, ngaphambi kokubhala idatha kusizindalwazi, udinga ukwakha i-schema yedatha, ngamanye amazwi, amathebula. Lapho ubuyekeza uhlelo lokusebenza, amathebula kufanele alethwe efomini elisetshenziswe inguqulo entsha, futhi, okungcono, ngaphandle kokulahlekelwa idatha. Lokhu kubizwa ngokufuduka. Ukudala amathebula kusizindalwazi esingenalutho ekuqaleni kuyisimo esikhethekile sokufuduka. Ukufuduka kungakhelwa kuhlelo lokusebenza ngokwalo. Kokubili i-.NET ne-NodeJS zinezinhlaka zokufuduka. Esimweni sethu, ngenxa yezizathu zokuphepha, ama-microservices aphucwa ilungelo lokushintsha i-schema yedatha, futhi ukuthutha kwenziwa kusetshenziswa i-Liquibase.
  • Yethula i-Amazon LocalStack. Lokhu ukuqaliswa kwezinsizakalo ze-AWS okufanele zisetshenziswe ekhaya. Kunesithombe esenziwe ngomumo se-LocalStack ku-Docker Hub.
  • Qalisa iskripthi ukuze udale amabhizinisi adingekayo ku-LocalStack. Izikripthi zeShell zisebenzisa i-AWS CLI.

Isetshenziselwa ukuhlola kuphrojekthi Postman. Yayikhona ngaphambili, kodwa yethulwa mathupha futhi yahlolwa uhlelo lokusebenza oseluvele lufakwe esitobhini. Leli thuluzi likuvumela ukuthi wenze izicelo ze-HTTP(S) ngokunganaki futhi uhlole ukuthi izimpendulo ziyafana yini nokulindelwe. Imibuzo ihlanganiswa ibe yiqoqo, futhi lonke iqoqo lingaqhutshwa.

Ukuhlola okuzenzakalelayo kwama-microservices ku-Docker ukuze kuhlanganiswe okuqhubekayo

Ngabe ukuhlola okuzenzakalelayo kusebenza kanjani?

Ngesikhathi sokuhlolwa, yonke into isebenza ku-Docker: isevisi evivinywayo, i-Postgres, ithuluzi lokufuduka, kanye ne-Postman, noma kunalokho inguqulo yayo ye-console - Newman.

I-Docker ixazulula izinkinga eziningi:

  • Ukuzimela ekucushweni komsingathi;
  • Ukufaka okuncikile: I-Docker ilanda izithombe ku-Docker Hub;
  • Ukubuyisela isistimu esimweni sayo sokuqala: ukususa iziqukathi kalula.

Docker-compose ihlanganisa iziqukathi zibe inethiwekhi ebonakalayo, ehlukanisiwe ne-inthanethi, lapho iziqukathi zitholana ngamagama wesizinda.

Ukuhlola kulawulwa iskripthi segobolondo. Ukwenza isivivinyo kuWindows sisebenzisa i-git-bash. Ngakho, iskripthi esisodwa sanele kokubili iWindows ne-Linux. I-Git ne-Docker ifakwe yibo bonke abathuthukisi kuphrojekthi. Lapho ufaka i-Git ku-Windows, i-git-bash ifakiwe, ngakho wonke umuntu unalokho.

Iskripthi senza izinyathelo ezilandelayo:

  • Ukwakha izithombe zedokhu
    docker-compose build
  • Kwethulwa isizindalwazi kanye ne-LocalStack
    docker-compose up -d <ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€>
  • Ukuthuthwa kwesizindalwazi nokulungiswa kwe-LocalStack
    docker-compose run <ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€>
  • Kwethulwa isevisi ngaphansi kokuhlolwa
    docker-compose up -d <сСрвис>
  • Ukwenza ukuhlolwa (Newman)
  • Ukumisa zonke iziqukathi
    docker-compose down
  • Ithumela imiphumela ku-Slack
    Siba nengxoxo lapho imilayezo enophawu oluluhlaza noma isiphambano esibomvu kanye nesixhumanisi selogi iya khona.

Izithombe ezilandelayo ze-Docker ziyabandakanyeka kulezi zinyathelo:

  • Isevisi ehlolwayo iyisithombe esifanayo nesokukhiqiza. Ukulungiselelwa kokuhlolwa kungokwahluka kwemvelo.
  • Ku-Postgres, Redis kanye ne-LocalStack, izithombe ezenziwe ngomumo ezivela ku-Docker Hub ziyasetshenziswa. Kukhona nezithombe esezenziwe ngomumo ze-Liquibase ne-Newman. Sakha okwethu phezu kwamathambo abo, sengeza amafayela ethu lapho.
  • Ukuze ulungise i-LocalStack, usebenzisa isithombe esenziwe ngomumo se-AWS CLI bese udala isithombe esiqukethe iskripthi esisekelwe kuso.

Isebenzisa imiqulu, awudingi ukwakha isithombe se-Docker ukuze nje wengeze amafayela esitsheni. Kodwa-ke, amavolumu awafanele indawo yethu ngoba imisebenzi ye-Gitlab CI ngokwayo isebenza ezitsheni. I-Docker ingaphathwa kusukela esitsheni esinjalo, kodwa amavolumu akhweza kuphela amafolda asuka kusistimu yokusingatha, hhayi kwesinye isitsha.

Izinkinga ongase uhlangane nazo

Ilinde ukulungela

Uma isiqukathi esinesevisi sisebenza, lokhu akusho ukuthi sesikulungele ukwamukela ukuxhunywa. Kufanele ulinde ukuthi uxhumano luqhubeke.

Le nkinga kwesinye isikhathi ixazululwa kusetshenziswa umbhalo linda-i-it.sh, elinda ithuba lokusungula uxhumano lwe-TCP. Nokho, i-LocalStack ingaphonsa iphutha le-502 Bad Gateway. Ngaphezu kwalokho, iqukethe izinsizakalo eziningi, futhi uma enye yazo isilungile, lokhu akusho lutho ngabanye.

Isixazululo: Imibhalo yokuhlinzeka ye-LocalStack elinda impendulo engu-200 kusuka kokubili i-SQS ne-SNS.

Izingxabano Zomsebenzi Ohambisanayo

Ukuhlola okuningi kungasebenza ngesikhathi esisodwa kumsingathi we-Docker ofanayo, ngakho-ke amagama esiqukathi nawenethiwekhi kufanele ahluke. Ngaphezu kwalokho, izivivinyo ezivela emagatsheni ahlukene esevisi efanayo zingasebenza kanyekanye, ngakho-ke akwanele ukubhala amagama abo efayeleni ngalinye lokuqamba.

Isixazululo: Umbhalo usetha okuguquguqukayo kwe-COMPOSE_PROJECT_NAME kunani eliyingqayizivele.

Izici zeWindows

Kunezinto ezimbalwa engifuna ukuziveza uma usebenzisa i-Docker ku-Windows, njengoba lokhu okuhlangenwe nakho kubalulekile ekuqondeni ukuthi kungani kwenzeka amaphutha.

  1. Izikripthi zeshell esitsheni kufanele zibe neziphetho zomugqa we-Linux.
    Uphawu lwegobolondo le-CR yiphutha le-syntax. Kunzima ukusho ngomlayezo wephutha ukuthi lokhu kunjalo. Lapho uhlela imibhalo enjalo ku-Windows, udinga umhleli wombhalo ofanele. Ngaphezu kwalokho, uhlelo lokulawula inguqulo kufanele lumiswe ngendlela efanele.

Nansi indlela i-git elungiselelwe ngayo:

git config core.autocrlf input

  1. I-Git-bash ilingisa amafolda e-Linux ajwayelekile futhi, lapho ibiza ifayela le-exe (okuhlanganisa ne-docker.exe), ithatha indawo yezindlela ze-Linux eziphelele ngeWindows. Kodwa-ke, lokhu akuwenzi umqondo ngezindlela ezingekho emshinini wendawo (noma izindlela ezisesitsheni). Lokhu kuziphatha akukwazi ukukhutshazwa.

Isixazululo: engeza i-slash eyengeziwe ekuqaleni kwendlela: //bin esikhundleni sika-/bin. I-Linux iyaziqonda izindlela ezinjalo; ngakho, ama-slash amaningi afana neyodwa. Kepha i-git-bash ayiziboni izindlela ezinjalo futhi ayizami ukuziguqula.

Ukukhishwa kwelogi

Lapho ngisebenzisa izivivinyo, ngingathanda ukubona izingodo ezivela kokubili kwa-Newman kanye nesevisi ehlolwayo. Njengoba izehlakalo zalawa malogi zixhumene, ukuwahlanganisa kukhonsoli eyodwa kulula kakhulu kunamafayela amabili ahlukene. U-Newman uqala nge i-docker-compose run, ngakho-ke ukuphuma kwayo kugcina kukhonsoli. Okusele wukuqinisekisa ukuthi okukhiphayo kwenkonzo nakho kuya lapho.

Isixazululo sokuqala kwaba ukwenza docker-bhala phezulu alikho ifulegi -d, kodwa usebenzisa amandla egobolondo, thumela le nqubo ngemuva:

docker-compose up <service> &

Lokhu kusebenze kwaze kwadingeka ukuthi kuthunyelwe izingodo zisuka ku-Docker ziye kusevisi yenkampani yangaphandle. docker-bhala phezulu uyeke ukukhipha izingodo kukhonsoli. Nokho, iqembu lasebenza i-docker ifakiwe.

Isixazululo:

docker attach --no-stdin ${COMPOSE_PROJECT_NAME}_<сСрвис>_1 &

Ukungqubuzana kwesikhombi ngesikhathi sokuphindaphinda ukuhlolwa

Ukuhlola kwenziwa ngokuphindaphinda okuningana. Isizindalwazi asisuliwe. Amarekhodi kusizindalwazi anama-ID ahlukile. Uma sibhala phansi ama-ID athile ezicelweni, sizothola ukungqubuzana ekuphindaphindweni kwesibili.

Ukuze ugweme, ama-ID kufanele ahluke, noma zonke izinto ezidalwe ukuhlolwa kufanele zisuswe. Ezinye izinto azikwazi ukususwa ngenxa yezidingo.

Isixazululo: khiqiza ama-GUID usebenzisa imibhalo ye-Postman.

var uuid = require('uuid');
var myid = uuid.v4();
pm.environment.set('myUUID', myid);

Bese usebenzisa uphawu embuzweni {{myUUID}}, okuzothathelwa indawo inani lokuguquguquka.

Ukusebenzisana nge-LocalStack

Uma isevisi ehlolwayo ifunda noma ibhalela kulayini we-SQS, ukuze uqinisekise lokhu, ukuhlolwa ngokwako kufanele futhi kusebenze nalo mugqa.

Isixazululo: izicelo ezivela ku-Postman kuya ku-LocalStack.

I-AWS services API ibhaliwe, ivumela imibuzo ukuthi yenziwe ngaphandle kwe-SDK.

Uma isevisi ibhalela umugqa, siyayifunda futhi sihlole okuqukethwe komlayezo.

Uma isevisi ithumela imilayezo ku-SNS, esigabeni sokulungiselela i-LocalStack iphinda idale ulayini futhi ibhalisele lesi sihloko se-SNS. Khona-ke konke kuza kulokho okuchazwe ngenhla.

Uma isevisi idinga ukufunda umlayezo ovela kulayini, khona-ke esinyathelweni sokuhlola sangaphambilini sibhala lo mlayezo kulayini.

Ihlola izicelo ze-HTTP ezivela ku-microservice ngaphansi kokuhlolwa

Ezinye izinsiza zisebenza nge-HTTP ngokuthile okungeyona i-AWS, futhi ezinye izici ze-AWS azenziwa ku-LocalStack.

Isixazululo: kulezi zimo kungasiza I-MockServer, enesithombe esenziwe ngomumo Ihabhu ledokodo. Izicelo ezilindelwe nezimpendulo kuzo zilungiswa ngesicelo se-HTTP. I-API ibhaliwe, ngakho senza izicelo ku-Postman.

Ukuhlola Ukuqinisekiswa Kwe-OAuth Nokugunyazwa

Sisebenzisa i-OAuth kanye I-JSON Web Tokens (JWT). Ukuhlola kudinga umhlinzeki we-OAuth esingamsebenzisa endaweni.

Konke ukusebenzisana phakathi kwesevisi nomhlinzeki we-OAuth kwehla ezicelweni ezimbili: okokuqala, ukulungiselelwa kucelwa. /.well-known/openid-configuration, bese kucelwa ukhiye womphakathi (JWKS) ekhelini ekucushweni. Konke lokhu okuqukethwe okumile.

Isixazululo: Umhlinzeki wethu we-OAuth wokuhlola uyiseva yokuqukethwe emile namafayela amabili kuyo. Ithokheni ikhiqizwa kanye futhi izinikele ku-Git.

Izici zokuhlolwa kwe-SignalR

U-postman akasebenzi nama-websockets. Ithuluzi elikhethekile ladalwa ukuhlola i-SignalR.

Iklayenti le-SignalR lingaba ngaphezu kwesiphequluli nje. Kukhona umtapo wezincwadi weklayenti wayo ngaphansi kwe-.NET Core. Iklayenti, elibhalwe ku-.NET Core, lisungula uxhumano, ligunyazwe, futhi lilinda ukulandelana okuthile kwemilayezo. Uma umlayezo obungalindelekile wamukelwe noma uxhumano lulahleka, iklayenti liphuma nekhodi 1. Uma umyalezo wokugcina olindelwe wamukelwe, iklayenti liphuma nekhodi engu-0.

U-Newman usebenza kanyekanye neklayenti. Amaklayenti amaningana ethulwa ukuze ahlole ukuthi imilayezo ilethwa kuwo wonke umuntu oyidingayo.

Ukuhlola okuzenzakalelayo kwama-microservices ku-Docker ukuze kuhlanganiswe okuqhubekayo

Ukuze usebenzise amaklayenti amaningi sebenzisa inketho --isikali kulayini womyalo we-docker-compose.

Ngaphambi kokusebenza, umbhalo we-Postman ulinda wonke amaklayenti ukuthi asungule ukuxhumana.
Sesivele sihlangabezane nenkinga yokulinda uxhumano. Kodwa kwakukhona amaseva, futhi nali iklayenti. Kudingeka indlela ehlukile.

Isixazululo: iklayenti esitsheni lisebenzisa indlela I-HealthCheckukwazisa iskripthi kumsingathi mayelana nesimo saso. Iklayenti lidala ifayela ngendlela ethile, ithi /healthcheck, ngokushesha nje lapho uxhumano selusungulwe. Iskripthi se-HealthCheck kufayela le-docker sibukeka kanjena:

HEALTHCHECK --interval=3s CMD if [ ! -e /healthcheck ]; then false; fi

Ithimba hlola i-docker Ibonisa isimo esijwayelekile, isimo sempilo kanye nekhodi yokuphuma yesiqukathi.

Ngemuva kokuthi u-Newman eqedile, umbhalo uhlola ukuthi zonke iziqukathi ezineklayenti ziphelile, ngekhodi 0.

UHappinnes ukhona

Ngemva kokunqoba ubunzima obuchazwe ngenhla, saba nesethi yezivivinyo ezizinzile. Ekuhlolweni, isevisi ngayinye isebenza njengeyunithi eyodwa, isebenzisana nesizindalwazi kanye ne-Amazon LocalStack.

Lezi zivivinyo zivikela ithimba lonjiniyela abangu-30+ emaphutheni kuhlelo lokusebenza olunokusebenzelana okuyinkimbinkimbi kwama-microservices angu-10+ nokuthunyelwa okuvamile.

Source: www.habr.com

Engeza amazwana