Iontráil
Dia duit!
San Airteagal seo, roinnfidh mé mo thaithí ar ailtireacht microservice a thógáil do thionscadal ag baint úsáide as líonraí néaracha.
Déanfaimid labhairt faoi na ceanglais don ailtireacht, féachfaimid ar léaráidí struchtúracha éagsúla, anailís a dhéanamh ar gach ceann de na comhpháirteanna den ailtireacht chríochnaithe, agus déan measúnú ar mhéadracht theicniúil an réitigh.
Bíodh léamh deas agat!
Cúpla focal faoin bhfadhb agus an réiteach atá uirthi
Is é an príomh-smaoineamh ná tarraingteacht duine a mheas ar scála deich bpointe bunaithe ar ghrianghraf.
San Airteagal seo, imeoidh muid ón gcur síos ar na líonraí neural a úsáidtear agus ar an bpróiseas ullmhúcháin agus oiliúna sonraí. I gceann de na foilseacháin seo a leanas, áfach, is cinnte go bhfillfimid ar an anailís ar an bpíblíne meastóireachta ag leibhéal domhain.
Anois, rachaidh muid tríd an bpíblíne meastóireachta ar an leibhéal is airde, agus beidh an bhéim ar idirghníomhaíocht na micrisheirbhísí i gcomhthéacs ailtireacht iomlán an tionscadail.
Agus an obair á déanamh ar an bpíblíne measúnaithe tarraingteachta, rinneadh an tasc a dhianscaoileadh sna comhpháirteanna seo a leanas:
- Roghnú aghaidheanna i ngrianghraf
- Measúnú ar gach ceann de na aghaidheanna
- Rindreáil torthaí
Is é an chéad réiteach ag na fórsaí de réamh-oilte
Léaráid píblíne meastóireachta feidhme
Anailís ar riachtanais ailtireachta tionscadail
Sa saolré
Saolré tionscadail ML
Ní haon eisceacht é an tionscadal seo - socraíodh an phíblíne measúnaithe a fhilleadh isteach i seirbhís ar líne, le haghaidh seo bhí sé riachtanach tú féin a thumadh san ailtireacht. Aithníodh na bunriachtanais seo a leanas:
- Stóráil logáil aontaithe - ba chóir do gach seirbhís logaí a scríobh in aon áit amháin, ba cheart go mbeadh siad áisiúil anailís a dhéanamh
- Féidearthacht scálú cothrománach na seirbhíse measúnaithe - mar an Scragall is dóichí
- Ba cheart an méid céanna acmhainní próiseálaithe a leithdháileadh chun gach íomhá a mheas - chun spící a sheachaint i ndáileadh an ama tátail.
- (ath)imscaradh tapa seirbhísí sonracha agus an chairn ina iomláine
- Deis, más gá, rudaí coitianta a úsáid i seirbhísí éagsúla
ailtireacht
Tar éis anailís a dhéanamh ar na ceanglais, ba léir go n-oireann an ailtireacht microservice beagnach foirfe.
D'fhonn fáil réidh le tinneas cinn gan ghá, roghnaíodh an Telegram API mar an tosaigh.
Gcéad dul síos, déanaimis féachaint ar an léaráid struchtúrach den ailtireacht chríochnaithe, ansin téigh ar aghaidh go dtí an cur síos ar gach ceann de na comhpháirteanna, agus freisin an próiseas próiseála íomhá rathúil a fhoirmiú.
Léaráid struchtúrach den ailtireacht chríochnaithe
Déanaimis labhairt níos mine faoi gach ceann de na comhpháirteanna den léaráid, cuir in iúl iad mar Fhreagracht Aonair sa phróiseas chun an íomhá a mheas.
Micreasheirbhís "attrai-telegram-bot"
Cuimsíonn an microservice seo gach idirghníomhaíocht leis an Telegram API. Tá 2 phríomh-chásanna ann - ag obair le híomhá saincheaptha agus ag obair le toradh an phíblíne meastóireachta. Breathnaímis ar an dá chás.
Agus teachtaireacht shaincheaptha á fáil le híomhá:
- Déantar scagadh, ina bhfuil na seiceálacha seo a leanas:
- Ag an méid íomhá is fearr is féidir
- Líon na n-íomhánna úsáideora atá sa scuaine cheana féin
- Agus an príomhscagadh á rith, stóráiltear an íomhá sa toirt docker
- Déanfar tasc a tháirgeadh sa scuaine “to_meastachán”, ina bhfeicfear, i measc rudaí eile, an cosán chuig an íomhá inár n-imleabhar
- Má chuirtear na céimeanna thuas i gcrích go rathúil, gheobhaidh an t-úsáideoir teachtaireacht le ham próiseála íomhá measta, a ríomhtar bunaithe ar líon na dtascanna sa scuaine. I gcás earráide, cuirfear an t-úsáideoir ar an eolas go sainráite faoi seo - trí theachtaireacht a sheoladh le faisnéis faoi na rudaí a d'fhéadfadh a bheith mícheart.
Chomh maith leis sin, éisteann an micreasheirbhís seo, mar oibrí soilire, leis an scuaine “iar-mheastachán”, atá beartaithe le haghaidh tascanna a chuaigh tríd an bpíblíne meastóireachta.
Agus tasc nua á fháil ó “after_estimate”:
- Má dhéantar an íomhá a phróiseáil go rathúil, cuirimid an toradh chuig an úsáideoir; mura bhfuil, cuirimid earráid in iúl don úsáideoir.
- An íomhá atá mar thoradh ar an bpíblíne meastóireachta a scriosadh
Micreaseirbhís meastóireachta Attrai-meastóir
Is oibrí soilire é an microservice seo agus cuimsíonn sé gach rud a bhaineann leis an bpíblíne meastóireachta íomhá. Níl ach algartam oibre amháin anseo - déanfaimid anailís air.
Agus tasc nua á fháil ó “to_estimate”:
- Rith an íomhá tríd an bpíblíne meastóireachta:
- Íoslódáil an pictiúr i gcuimhne
- Cuirimid an íomhá ar an méid atá ag teastáil
- Aimsigh gach aghaidh (MTCNN)
- Déanaimid na aghaidheanna go léir a mheas (cuimeoimid na héadain a fuarthas sa mhír dheireanach i mbaisc ResNet34 agus inferensim)
- Rindreáil an íomhá deiridh
- Tarraing boscaí teorann
- Ag tarraingt na ngrád
- An íomhá saincheaptha (bunaidh) a bhaint
- Sábháil an t-aschur ón bpíblíne meastóireachta
- Chuireamar an tasc sa scuaine “after_estimate”, a n-éisteann an micreasheirbhís “attrai-telegram-bot” atá parsáilte thuas leis an tasc
Log liath (+ mongoDB + Elasticsearch)
Thit an rogha air, agus ní ar an ngnáth
Mar dhuine nár oibrigh ach le cruach ELK roimhe seo, bhí taithí dhearfach agam go ginearálta agus mé ag obair le Graylog. Is é an rud amháin a depresses an superiority i gnéithe de Kibana thar an comhéadan gréasáin Graylog.
Coinín MQ
Sa tionscadal seo, baineadh úsáid as mar
Redis
Uaireanta bíonn sé riachtanach rudaí coitianta a úsáid i micreasheirbhísí python éagsúla a chuireann aon struchtúir sonraí i bhfeidhm.
Mar shampla, stórálann Redis hashmap den fhoirm “telegram_user_id => líon na dtascanna gníomhacha sa scuaine”, a ligeann duit líon na n-iarratas ó úsáideoir amháin a theorannú go luach áirithe agus, ar an gcaoi sin, ionsaithe DoS a chosc.
Déanaimid an próiseas próiseála íomhá rathúil a fhoirmiú
- Seolann an t-úsáideoir íomhá chuig Telegram bot
- Faigheann "attrai-telegram-bot" teachtaireacht ón Telegram API agus parsálann sé é
- Cuirtear an tasc leis an íomhá leis an scuaine asincrónach "to_estimate"
- Faigheann an t-úsáideoir teachtaireacht leis an am meastóireachta measta
- tógann "attrai-estimator" tasc ón scuaine "to_estimate", ritheann sé na meastacháin tríd an bpíblíne agus táirgeann sé an tasc sa scuaine "tar éis_meastachán"
- cuireann "attrai-telegram-bot" éisteacht leis an scuaine "after_estimate" an toradh chuig an úsáideoir
DevOps
Ar deireadh, tar éis athbhreithniú a dhéanamh ar an ailtireacht, is féidir linn bogadh ar aghaidh go dtí an chuid chomh suimiúil - DevOps
Swarm Docker
Le cabhair ó "swarm", is féidir nóid uile ár mbraisle a roinnt ina 2 chineál - oibrí agus bainisteoir. Ar mheaisíní den chéad chineál, imscartar grúpaí coimeádán (cruachanna), tá meaisíní den dara cineál freagrach as scálaithe, cothromú agus
Cnuasach le bainisteoir ceannaire amháin agus triúr oibrí
Is é an méid braisle íosta is féidir ná 1 nód, gníomhóidh an t-aon mheaisín ag an am céanna mar bhainisteoir ceannaire agus oibrí. Bunaithe ar mhéid an tionscadail agus na ceanglais íosta maidir le lamháltas lochtanna, socraíodh an cur chuige seo a úsáid.
Ag breathnú amach romhainn, déarfaidh mé, ó rinneadh an chéad léiriú, a bhí i lár mhí an Mheithimh, nach bhfuil aon fhadhbanna ag baint leis an gcnuaseagraíocht seo (ach ní chiallaíonn sé sin go bhfuil a leithéid d’eagraíocht inghlactha ar a laghad in aon mheán-. tionscadail mhóra, atá faoi réir ceanglais lamháltais locht).
Cruach Docker
Sa mhodh “swarm”, tá imscaradh stoic (tacair de sheirbhísí duganna) freagrach
Tacaíonn sé le cumraíochtaí cumadóireachta docker, rud a ligeann duit roghanna imlonnaithe a úsáid go roghnach.
Mar shampla, agus na paraiméadair seo á n-úsáid, bhí acmhainní teoranta do gach ceann de na cásanna meastóireachta micriseirbhíse (leithdháileann muid croíleacáin N do chásanna N, sa mhicriseirbhís féin cuirimid teorainn le líon na gcroíthe a úsáideann PyTorch go ceann amháin)
attrai_estimator:
image: 'erqups/attrai_estimator:1.2'
deploy:
replicas: 4
resources:
limits:
cpus: '4'
restart_policy:
condition: on-failure
…
Tá sé tábhachtach a thabhairt faoi deara gur seirbhísí stáit iad Redis, RabbitMQ agus Graylog agus nach n-oibreoidh sé chun iad a scála chomh simplí le “attrai-estimator”.
Foreshadowing na ceiste - cén fáth nach Kubernetes?
Dealraíonn sé go bhfuil úsáid Kubernetes i dtionscadail bheaga agus mheánmhéide ina forchostais, is féidir an fheidhmiúlacht riachtanach go léir a fháil ó Docker Swarm, atá éasca le húsáid go leor do cheoltóir coimeádán, agus tá tairseach iontrála íseal aige freisin.
Bonneagar
Imscaradh é seo go léir ar VDS leis na tréithe seo a leanas:
- LAP: 4 cores Intel® Xeon® Gold 5120 CPU @ 2.20GHz
- RAM: 8 GB
- SSD: 160GB
Tar éis tástáil ualaigh áitiúil, ba chosúil, le sní isteach tromchúiseach úsáideoirí, gur leor an meaisín seo cúl le cúl.
Ach, díreach tar éis an imscartha, phostáil mé nasc chuig ceann de na cláir íomhá is coitianta sa CIS (tá, an ceann céanna), tar éis a chuir daoine spéis agus i gceann cúpla uair an chloig d'éirigh leis an tseirbhís na mílte íomhánna a phróiseáil. Ag an am céanna, ag buaic-amanna, níor úsáideadh acmhainní LAP agus RAM fiú ag leath.
Roinnt grafaicí níos mó
Líon na n-úsáideoirí uathúla agus na hiarratais mheastóireachta, ó imscaradh, de réir an lae
Píblíne Meastacháin Tátail Dáileadh Ama
Torthaí
Ag achoimre, is féidir liom a rá go raibh údar iomlán ag ailtireacht agus cur chuige ceolfhoirne coimeádán - fiú ag buaic-amanna ní raibh aon titeann agus turnamh san am próiseála.
Is dóigh liom gur féidir le tionscadail bheaga agus mheánmhéide a úsáideann tátal fíor-ama ar líonraí neural ar an LAP ina bpróiseas na cleachtais a thuairiscítear san Airteagal seo a ghlacadh go rathúil.
Cuirfidh mé leis go raibh an t-alt níos faide ar dtús, ach d'fhonn gan léamh fada a phostáil, chinn mé roinnt pointí san Airteagal seo a fhágáil ar lár - cuirfimid ar ais chucu sna foilseacháin seo a leanas.
Is féidir leat an bot a bhrú i Telegram - @AttraiBot, oibreoidh sé go dtí deireadh an fhómhair 2020 ar a laghad. Lig dom a mheabhrú duit - ní stóráiltear aon sonraí úsáideora - ná na híomhánna bunaidh, ná torthaí na píblíne meastóireachta - scartar gach rud tar éis a phróiseáil.
Foinse: will.com