Tupperware: neach-marbhadh Kubernetes aig Facebook?

Riaghladh èifeachdach agus earbsach air cruinneachaidhean aig ìre sam bith le Tupperware

Tupperware: neach-marbhadh Kubernetes aig Facebook?

An-diugh air adhart Co-labhairt Systems@Scale thug sinn a-steach Tupperware, an siostam riaghlaidh cnuasachaidh againn a bhios a’ stiùireadh shoithichean thar milleanan de luchd-frithealaidh a tha a’ ruith cha mhòr a h-uile seirbheis againn. Chuir sinn Tupperware an sàs an toiseach ann an 2011, agus bhon uairsin tha ar bun-structar air fàs bho 1 ionad dàta suas gu h-iomlan 15 ionadan dàta geo-sgaoileadh. Fad na h-ùine seo, cha do sheas Tupperware fhathast agus leasaich e leinn. Seallaidh sinn dhut mar a tha Tupperware a’ toirt seachad riaghladh cnuasachaidh den chiad ìre, a’ toirt a-steach taic goireasach airson seirbheisean stàiteil, aon phannal smachd airson a h-uile ionad dàta, agus an comas comas a sgaoileadh eadar seirbheisean ann an àm fìor. Roinnidh sinn cuideachd na leasanan a dh’ ionnsaich sinn mar a bhios ar bun-structar a’ fàs.

Bidh Tupperware a’ coileanadh diofar ghnìomhan. Bidh luchd-leasachaidh thagraidhean ga chleachdadh gus tagraidhean a lìbhrigeadh agus a riaghladh. Bidh e a’ pacadh a’ chòd tagraidh agus eisimeileachd ann an ìomhaigh agus ga lìbhrigeadh gu frithealaichean mar shoithichean. Bidh soithichean a’ toirt iomallachd eadar tagraidhean air an aon fhrithealaiche gus am bi luchd-leasachaidh a’ dèiligeadh ri loidsig an tagraidh agus nach fheum iad dragh a ghabhail mu bhith a’ lorg frithealaichean no a’ riaghladh ùrachaidhean. Bidh Tupperware cuideachd a’ cumail sùil air coileanadh an fhrithealaiche, agus ma lorgas e fàiligeadh, bidh e a’ gluasad shoithichean bhon t-seirbheisiche trioblaideach.

Bidh innleadairean dealbhaidh comas a’ cleachdadh Tupperware gus comas frithealaiche a riarachadh do sgiobaidhean stèidhichte air buidseit agus cuingeadan. Bidh iad cuideachd ga chleachdadh gus cleachdadh an fhrithealaiche a leasachadh. Bidh luchd-obrachaidh ionadan dàta a’ tionndadh gu Tupperware gus soithichean a sgaoileadh gu ceart thar ionadan dàta agus stad no gluasad shoithichean aig àm cumail suas. Mar thoradh air an seo, feumar glè bheag de eadar-theachd daonna a chumail suas luchd-frithealaidh, lìonraidhean agus uidheamachd.

Tupperware ailtireachd

Tupperware: neach-marbhadh Kubernetes aig Facebook?

Tha ailtireachd Tupperware PRN mar aon de na roinnean de na h-ionadan dàta againn. Tha an sgìre air a dhèanamh suas de ghrunn thogalaichean ionad dàta (PRN1 agus PRN2) a tha faisg air làimh. Tha sinn an dùil aon phanal smachd a dhèanamh a stiùireas gach frithealaiche ann an aon roinn.

Bidh luchd-leasachaidh thagraidhean a’ lìbhrigeadh sheirbheisean ann an cruth obraichean Tupperware. Tha obair air a dhèanamh suas de ghrunn shoithichean, agus mar as trice bidh iad uile a’ ruith an aon chòd tagraidh.

Tha e an urra ri Tupperware soithichean a sholarachadh agus an cuairt-beatha a riaghladh. Tha e air a dhèanamh suas de ghrunn phàirtean:

  • Tha aghaidh Tupperware a’ toirt seachad APIan airson an eadar-aghaidh cleachdaiche, CLI, agus innealan fèin-ghluasaid eile tron ​​​​urrainn dhut eadar-obrachadh le Tupperware. Bidh iad a’ falach an structair a-staigh gu lèir bho luchd-seilbh obrach Tupperware.
  • Tha Tupperware Scheduler na phannal smachd le uallach airson a bhith a’ riaghladh an t-soithich agus cuairt-beatha na h-obrach. Tha e air a chleachdadh aig ìrean roinneil agus cruinneil, far am bi an clàr-ama roinneil a’ riaghladh luchd-frithealaidh ann an aon roinn agus bidh an clàr-ama cruinneil a’ riaghladh luchd-frithealaidh bho dhiofar roinnean. Tha an clàr-ama air a roinn na shards, agus bidh gach shard a’ riaghladh seata obraichean.
  • Bidh Neach-ionaid Clàr-ama Tupperware a’ falach an rùsgadh a-staigh agus a’ toirt seachad aon phana glainne goireasach dha luchd-cleachdaidh Tupperware.
  • Bidh an riarachadh Tupperware a’ sònrachadh shoithichean gu frithealaichean. Bidh an clàr-ama a’ làimhseachadh stad, tòiseachadh, ùrachadh agus fàilligeadh soithichean. An-dràsta, is urrainn do aon neach-riarachaidh an roinn gu lèir a riaghladh gun a bhith air a roinn na shards. (Thoir an aire don eadar-dhealachadh ann am briathrachas. Mar eisimpleir, tha an clàr-ama ann an Tupperware a 'freagairt ris a' phannal smachd ann an Kubernetes, agus canar clàr-ama ris an neach-cuairteachaidh Tupperware ann an Kubernetes.)
  • Bidh am broker ghoireasan a’ stòradh stòr na fìrinn airson an fhrithealaiche agus tachartasan seirbheis. Bidh sinn a’ ruith aon broker ghoireasan airson gach ionad dàta, agus bidh e a’ stòradh a h-uile fiosrachadh mu na frithealaichean san ionad dàta sin. Bidh am broker ghoireasan agus an siostam riaghlaidh comas, no an siostam solarachaidh ghoireasan, a’ co-dhùnadh gu dinamach dè an lìbhrigeadh clàr-ama a bhios a’ cumail smachd air an fhrithealaiche. Bidh an t-seirbheis sgrùdaidh slàinte a’ cumail sùil air luchd-frithealaidh agus a’ stòradh dàta mun slàinte aca anns a’ bhròcair ghoireasan. Ma tha duilgheadasan aig frithealaiche no ma tha feum air cumail suas, tha am broker ghoireasan ag iarraidh air an neach-riarachaidh agus an clàr-ama stad a chuir air na soithichean no an gluasad gu frithealaichean eile.
  • Tha an Tupperware Agent na dheamhan a’ ruith air gach frithealaiche a bhios a’ làimhseachadh solar agus toirt air falbh shoithichean. Bidh tagraidhean a’ ruith taobh a-staigh soitheach, a bheir barrachd aonaranachd agus ath-riochdachadh dhaibh. Air adhart co-labhairt Systems @Scale an-uiridh Tha sinn mu thràth air cunntas a thoirt air mar a tha soithichean Tupperware fa leth air an cruthachadh a’ cleachdadh ìomhaighean, btrfs, cgroupv2 agus systemd.

Feartan sònraichte de Tupperware

Tha Tupperware coltach ann an iomadh dòigh ri siostaman riaghlaidh brabhsair eile leithid Kubernetes agus Mesos, ach tha eadar-dhealachaidhean ann cuideachd:

  • Taic stèidhichte airson seirbheisean stàiteil.
  • Pannal smachd singilte airson luchd-frithealaidh ann an diofar ionadan dàta gus lìbhrigeadh shoithichean a dhèanamh fèin-ghluasadach stèidhichte air rùn, dì-choimiseanadh chlàran agus cumail suas.
  • Roinn soilleir den phannal smachd airson zooming.
  • Leigidh coimpiutaireachd elastic dhut cumhachd a sgaoileadh eadar seirbheisean ann an àm fìor.

Leasaich sinn na feartan fionnar sin gus taic a thoirt do ghrunn thagraidhean gun stàite agus stàite thairis air cabhlach mòr de luchd-frithealaidh co-roinnte.

Taic stèidhichte airson seirbheisean stàiteil.

Bidh Tupperware ag obrachadh grunn sheirbheisean stàite èiginneach a bhios a’ stòradh dàta toraidh leantainneach airson Facebook, Instagram, Messenger agus WhatsApp. Dh’ fhaodadh iad seo a bhith nan stòran mòra de chàraidean prìomh-luach (m.e. ZippyDB) agus a’ cumail sùil air tasgaidhean dàta (mar eisimpleir, ODS Gorilla и Scuba). Chan eil e furasta seirbheisean stàiteil a chumail suas, oir feumaidh an siostam dèanamh cinnteach gun urrainn do sholarachadh shoithichean seasamh an aghaidh aimhreitean mòra, a’ toirt a-steach briseadh lìonra no brisidhean cumhachd. Agus ged a tha dòighean àbhaisteach, leithid a bhith a’ cuairteachadh shoithichean thairis air raointean locht, ag obair gu math airson seirbheisean gun stàit, tha feum aig seirbheisean stàiteil air taic a bharrachd.

Mar eisimpleir, ma dh’ fhailicheas frithealaiche a’ fàgail nach eil mac-samhail de stòr-dàta ri fhaighinn, am bu chòir dhut cumail suas fèin-ghluasadach a chomasachadh a bheir ùrachadh air na coraichean air 50 frithealaiche bho linne de 10? Tha e an urra ris an t-suidheachadh. Ma tha mac-samhail eile den aon stòr-dàta aig aon de na frithealaichean 50 sin, tha e nas fheàrr feitheamh agus gun a bhith a’ call 2 mhac-samhail aig an aon àm. Gus co-dhùnaidhean a dhèanamh gu dinamach mu chumail suas agus coileanadh siostam, feumaidh sinn fiosrachadh mu ath-riochdachadh dàta a-staigh agus loidsig suidheachaidh gach seirbheis stàiteil.

Tha an eadar-aghaidh TaskControl a’ leigeil le seirbheisean stàiteil buaidh a thoirt air co-dhùnaidhean a bheir buaidh air cothrom air dàta. A’ cleachdadh an eadar-aghaidh seo, bidh an clàr-ama a’ cur fios gu tagraidhean bhon taobh a-muigh mu ghnìomhachd soithichean (ath-thòiseachadh, ùrachadh, imrich, cumail suas). Bidh seirbheis stàiteil a’ cur an gnìomh rianadair a dh’ innseas do Tupperware cuin a tha e sàbhailte gach gnìomh a dhèanamh, agus faodar na h-obraichean sin atharrachadh no dàil a chuir orra rè ùine. Anns an eisimpleir gu h-àrd, dh’ fhaodadh rianadair an stòr-dàta innse do Tupperware 49 de na frithealaichean 50 ùrachadh, ach frithealaiche sònraichte (X) fhàgail leis fhèin airson a-nis. Mar thoradh air an sin, ma thèid an ùine ùrachadh kernel seachad agus nach urrainn don stòr-dàta fhathast an mac-samhail trioblaideach a thoirt air ais, bheir Tupperware ùrachadh air an fhrithealaiche X fhathast.

Tupperware: neach-marbhadh Kubernetes aig Facebook?

Bidh mòran de sheirbheisean stàiteil ann an Tupperware a’ cleachdadh TaskControl chan ann gu dìreach, ach tro ShardManager, àrd-ùrlar cumanta airson seirbheisean stàiteil a chruthachadh air Facebook. Le Tupperware, faodaidh luchd-leasachaidh an rùn a shònrachadh airson dìreach mar a bu chòir soithichean a sgaoileadh thairis air ionadan dàta. Le ShardManager, bidh luchd-leasachaidh a’ sònrachadh an rùn a thaobh mar a bu chòir pìosan dàta a sgaoileadh thairis air soithichean. Tha ShardManager mothachail air suidheachadh dàta agus ath-riochdachadh nan tagraidhean aige agus bidh e a’ conaltradh le Tupperware tron ​​​​eadar-aghaidh TaskControl gus gnìomhachd soithichean a chlàradh gun a bhith an sàs gu dìreach le tagradh. Tha an aonachadh seo gu mòr a’ sìmpleachadh riaghladh sheirbheisean stàiteil, ach tha TaskControl comasach air barrachd. Mar eisimpleir, tha an t-sreath farsaing lìn againn gun stàit agus a’ cleachdadh TaskControl gus ìre ùrachadh nan soithichean atharrachadh gu dinamach. Mu dheireadh thall tha an t-sreath lìn comasach air grunn bhrathan bathar-bog a chrìochnachadh gu sgiobalta gach latha gun a bhith a’ toirt buaidh air ruigsinneachd.

A’ riaghladh luchd-frithealaidh ann an ionadan dàta

Nuair a chaidh Tupperware a chuir air bhog an toiseach ann an 2011, bha gach buidheann frithealaiche air a riaghladh le clàr-ama air leth. Air ais an uairsin, bha cruinneachadh de Facebook na bhuidheann de racaichean frithealaiche ceangailte ri aon tionndadh lìonra, agus bha grunn chlàran anns an ionad dàta. Cha b’ urrainn don chlàr-ama ach frithealaichean a riaghladh ann an aon bhuidheann, a’ ciallachadh nach b’ urrainn don obair sgaoileadh thairis air grunn bhuidhnean. Dh’ fhàs ar bun-structair, tha sinn a’ sìor fhàs air falbh bho bhuidhnean. Leis nach b’ urrainn do Tupperware an obair a ghluasad bhon bhuidheann dì-choimiseanaidh gu cruinneachaidhean eile gun atharrachaidhean, bha feum air tòrr oidhirp agus co-òrdanachadh faiceallach eadar luchd-leasachaidh thagraidhean agus luchd-obrachaidh ionadan dàta. Mar thoradh air a’ phròiseas seo chaidh goireasan a chall nuair a bha frithealaichean leisg airson mìosan mar thoradh air modhan dì-choimiseanaidh.

Chruthaich sinn broker ghoireasan gus fuasgladh fhaighinn air an duilgheadas dì-choimiseanadh brabhsair agus gus gnìomhan cumail suas eile a cho-òrdanachadh. Bidh am broker ghoireasan a’ cumail sùil air a h-uile fiosrachadh fiosaigeach co-cheangailte ri frithealaiche agus gu dinamach a’ co-dhùnadh dè an clàr-ama a bhios a’ cumail smachd air gach frithealaiche. Le bhith a’ ceangal luchd-frithealaidh gu dinamach ri clàran-ama a’ leigeil leis a’ chlàr-ama frithealaichean a riaghladh ann an diofar ionadan dàta. Leis nach eil obair Tupperware a-nis air a chuingealachadh ri aon bhuidheann, faodaidh luchd-cleachdaidh Tupperware sònrachadh mar a bu chòir soithichean a sgaoileadh thairis air raointean locht. Mar eisimpleir, faodaidh leasaiche a rùn fhoillseachadh (canaidh sinn: “ruith m’ obair air raointean locht 2 ann an roinn PRN”) gun a bhith a’ sònrachadh sònaichean ruigsinneachd sònraichte. Lorgaidh Tupperware fhèin frithealaichean freagarrach gus an rùn seo a chuir an gnìomh, eadhon ged a thèid an cruinneachadh no an t-seirbheis a dhì-choimiseanadh.

Scalable gus taic a thoirt don t-siostam chruinneil gu lèir

Gu h-eachdraidheil, chaidh ar bun-structar a roinn na ceudan de amaran frithealaidh sònraichte airson sgiobaidhean fa-leth. Air sgàth sgaradh agus dìth inbhean, bha cosgaisean obrachaidh àrd againn, agus bha e na bu duilghe luchd-frithealaidh leisg a chleachdadh a-rithist. Aig co-labhairt an-uiridh Siostaman @Scale thaisbean sinn bun-structair mar sheirbheis (IaaS), a bu chòir ar bun-structar aonachadh a-steach do phàirc frithealaiche singilte mòr. Ach tha na duilgheadasan aige fhèin aig aon phàirc frithealaiche. Feumaidh e coinneachadh ri riatanasan sònraichte:

  • Scalability. Dh’ fhàs am bun-structar againn mar a chuir sinn ionadan dàta ris anns gach sgìre. Tha luchd-frithealaidh air fàs nas lugha agus nas lùth-èifeachdaiche, agus mar sin tha tòrr a bharrachd dhiubh anns gach sgìre. Mar thoradh air an sin, chan urrainn dha aon chlàr-ama airson gach sgìre dèiligeadh ris an àireamh de shoithichean a ghabhas ruith air ceudan de mhìltean de luchd-frithealaidh anns gach sgìre.
  • Fiachan Eadhon ged as urrainnear an clàr-ama a mheudachadh cho mòr, tha farsaingeachd an neach-clàraidh a’ ciallachadh gu bheil cunnart nas àirde ann de mhearachdan agus gum faodadh raon iomlan de shoithichean a bhith neo-riaghlaidh.
  • Fulangas sgàinidh. Ma dh’ fhàillig bun-structair mòr (mar eisimpleir, bidh na frithealaichean a tha a’ ruith a’ chlàr-ama a’ fàiligeadh ri linn fàilligeadh lìonraidh no briseadh cumhachd), cha bu chòir buaidh a thoirt air na buaidhean àicheil ach air cuid de na frithealaichean san roinn.
  • Facal-cleachdaidh. Is dòcha gu bheil e coltach gum feum thu grunn chlàran neo-eisimeileach a ruith airson aon sgìre. Ach bho shealladh goireasachd, tha aon àite inntrigidh a-steach do amar co-roinnte sgìre ga dhèanamh nas fhasa comas agus obraichean a riaghladh.

Roinn sinn an clàr-ama na shards gus fuasgladh fhaighinn air na duilgheadasan a thaobh cumail suas amar mòr roinnte. Bidh gach shard clàr-ama a’ riaghladh a sheata obraichean fhèin san roinn, agus tha seo a’ lughdachadh a’ chunnairt co-cheangailte ris a’ chlàr-ama. Mar a bhios an amar roinnte a’ fàs, is urrainn dhuinn barrachd shards clàr-ama a chur ris. Airson luchd-cleachdaidh Tupperware, tha shards agus proxies clàr-ama coltach ri aon phannal smachd. Chan fheum iad a bhith ag obair le dòrlach de shards a bhios a’ stiùireadh ghnìomhan. Tha shards clàr-ama gu bunaiteach eadar-dhealaichte bho na clàran cnuasachaidh a chleachd sinn roimhe, nuair a chaidh am pannal smachd a sgaradh gun a bhith a’ roinn an amar co-roinnte de luchd-frithealaidh a rèir topology an lìonraidh.

Leasaich Èifeachdas Cleachdaidh le Coimpiutaireachd Elastic

Mar as motha a tha am bun-structar againn, is ann as cudromaiche a tha e na frithealaichean againn a chleachdadh gu h-èifeachdach gus cosgaisean bun-structair a bharrachadh agus luchdan a lughdachadh. Tha dà dhòigh air èifeachdas cleachdadh frithealaiche àrdachadh:

  • Coimpiutaireachd elastic - cuir sìos seirbheisean air-loidhne aig uairean sàmhach agus cleachd frithealaichean saor airson eallach obrach far-loidhne, leithid ionnsachadh innealan agus obraichean MapReduce.
  • A’ luchdachadh cus - Cuir seirbheisean air-loidhne agus eallach obrach baidse air na h-aon luchd-frithealaidh gus am bi eallach obrach baidse a’ ruith aig prìomhachas ìosal.

Tha an cnap-starra anns na h-ionadan dàta againn cleachdadh cumhachd. Mar sin, is fheàrr leinn frithealaichean beaga, lùth-èifeachdach a bheir seachad barrachd cumhachd giollachd còmhla. Gu mì-fhortanach, air frithealaichean beaga le glè bheag de CPU agus cuimhne, chan eil cus luchdachadh cho èifeachdach. Gu dearbh, is urrainn dhuinn grunn shoithichean de sheirbheisean beaga a chuir air aon fhrithealaiche beag lùth-èifeachdach a bhios ag ithe glè bheag de ghoireasan pròiseasar agus cuimhne, ach bidh coileanadh ìosal aig seirbheisean mòra san t-suidheachadh seo. Mar sin, tha sinn a’ comhairleachadh do luchd-leasachaidh ar seirbheisean mòra an fheum as fheàrr a dhèanamh dhiubh gus an cleachd iad na frithealaichean gu lèir.


Gu bunaiteach, bidh sinn a’ leasachadh èifeachdas cleachdaidh le bhith a’ cleachdadh coimpiutaireachd elastagach. Bidh mòran de na prìomh sheirbheisean againn, leithid am News Feed, am feart Teachdaireachdan, agus an t-sreath lìn aghaidh, ag atharrachadh a rèir an àm den latha. Bidh sinn a’ lughdachadh seirbheisean air-loidhne a dh’aona ghnothach aig amannan sàmhach agus a’ cleachdadh frithealaichean saor airson eallach obrach far-loidhne, leithid ionnsachadh innealan agus obraichean MapReduce.

Tupperware: neach-marbhadh Kubernetes aig Facebook?

Tha fios againn bho eòlas gu bheil e nas fheàrr frithealaichean slàn a sholarachadh mar aonadan de chomas elastagach oir tha seirbheisean mòra an dà chuid nan luchd-tabhartais mòr agus nam prìomh luchd-cleachdaidh de chomas elastagach, agus tha iad air an ùrachadh gus frithealaichean slàn a chleachdadh. Nuair a thèid am frithealaiche a leigeil ma sgaoil bho sheirbheis air-loidhne aig uairean sàmhach, bidh am broker ghoireasan a’ toirt an fhrithealaiche air màl don chlàr-ama gus eallach obrach far-loidhne a ruith air. Ma dh’ aithnicheas an t-seirbheis air-loidhne eallach as àirde, bidh am broker ghoireasan gu sgiobalta a’ cuimhneachadh air an fhrithealaiche a fhuair iasad agus, còmhla ris a’ chlàr-ama, ga thilleadh chun t-seirbheis air-loidhne.

Leasanan a chaidh ionnsachadh agus planaichean airson an ama ri teachd

Thairis air na 8 bliadhna a dh’ fhalbh, tha sinn air a bhith a’ leasachadh Tupperware gus cumail suas ri fàs luath Facebook. Bidh sinn a’ roinn na dh’ ionnsaich sinn agus an dòchas gun cuidich e daoine eile le bhith a’ riaghladh bun-structaran a tha a’ fàs gu luath:

  • Stèidhich ceangal sùbailte eadar am pannal smachd agus na frithealaichean a bhios e a’ riaghladh. Tha an sùbailteachd seo a’ leigeil leis a’ phannal smachd luchd-frithealaidh a riaghladh ann an diofar ionadan dàta, a’ cuideachadh le bhith a’ dèanamh fèin-ghluasad air dì-choimiseanadh agus cumail suas chlàran, agus a’ comasachadh riarachadh comas fiùghantach a’ cleachdadh coimpiutaireachd elastagach.
  • Le aon phannal smachd san roinn, bidh e nas goireasaiche obrachadh le gnìomhan agus nas fhasa cabhlach mòr frithealaiche co-roinnte a riaghladh. Thoir an aire gu bheil am pannal smachd a’ cumail aon àite inntrigidh, eadhon ged a tha an structar a-staigh air a sgaradh airson adhbharan sgèile no fulangas sgàinidhean.
  • A’ cleachdadh modal plugan, faodaidh am pannal smachd fios a chuir gu tagraidhean taobh a-muigh mu ghnìomhachd soithichean a tha ri thighinn. A bharrachd air an sin, faodaidh seirbheisean stàiteil an eadar-aghaidh plugan a chleachdadh gus riaghladh soithichean a ghnàthachadh. Leis a’ mhodail plugan seo, tha am pannal smachd a’ toirt seachad sìmplidheachd agus aig an aon àm a’ frithealadh mòran de sheirbheisean stàiteil.
  • Tha sinn den bheachd gur e coimpiutaireachd elastagach, far am bi sinn a’ toirt air falbh frithealaichean slàn bho sheirbheisean tabhartais airson obraichean baidse, ionnsachadh innealan, agus seirbheisean neo-èiginneach eile, an dòigh as fheàrr air èifeachdas frithealaichean beaga, lùth-èifeachdach a leasachadh.

Tha sinn dìreach a’ tòiseachadh air a bhuileachadh aon chabhlach frithealaiche co-roinnte cruinne. An-dràsta tha timcheall air 20% de na frithealaichean againn ann an amar co-roinnte. Gus 100% a choileanadh, feumar dèiligeadh ri mòran chùisean, a’ gabhail a-steach cumail suas amar-stòraidh co-roinnte, cumail suas fèin-ghluasadach, riaghladh riatanasan tar-ghabhail, leasachadh cleachdadh frithealaichean, agus leasachadh taic airson eallach obrach ionnsachadh innealan. Chan urrainn dhuinn feitheamh gus na dùbhlain sin a ghabhail os làimh agus ar soirbheachas a cho-roinn.

Source: www.habr.com

Cuir beachd ann