Khatello ea data ho Apache Ignite. Phihlelo ea Sber

Khatello ea data ho Apache Ignite. Phihlelo ea SberHa o sebetsa ka bongata ba data, bothata ba ho hloka sebaka sa disk ka linako tse ling bo ka hlaha. Tsela e 'ngoe ea ho rarolla bothata bona ke khatello, ka lebaka leo, ka thepa e tšoanang, u ka khonang ho eketsa boholo ba polokelo. Sehloohong sena, re tla sheba hore na compression ea data e sebetsa joang ho Apache Ignite. Sengoliloeng sena se tla hlalosa feela mekhoa ea compression ea disk e kentsoeng ka har'a sehlahisoa. Mekhoa e meng ea khatello ea data (ho feta marang-rang, mohopolong), ebang e kentsoe kapa che, e tla lula e le ka ntle ho sebaka.

Kahoo, ka mokhoa oa ho phehella o nolofalitsoe, ka lebaka la liphetoho tsa data ho li-cache, Ignite e qala ho ngolla disk:

  1. Litaba tsa cache
  2. Ngola Pele Log (ka mor'a mona ke feela WAL)

Ho bile le mochini oa khatello ea WAL nako e telele joale, o bitsoang WAL compaction. Apache Ignite 2.8 e sa tsoa lokolloa e hlahisitse mekhoa e meng e 'meli e u lumellang hore u hatelle data ho disk: compression ea leqephe la disk bakeng sa ho hatella litaba tsa cache le WAL leqepheng la snapshot compression bakeng sa ho hatella tse ling tsa WAL. Lintlha tse ling mabapi le mekhoa ena e meraro e ka tlase.

Khatello ea leqephe la Disk

Joang mosebetsing ona

Taba ea pele, ha re shebeng ka bokhutšoane kamoo Ignite e bolokang data kateng. Memori ea leqephe e sebelisoa ho boloka. Boholo ba leqephe bo behiloe qalong ea node 'me bo ke ke ba fetoloa hamorao; hape, boholo ba leqephe e lokela ho ba matla a mabeli le boholo ba boholo ba li-block system. Maqephe a kenngoa ka har'a RAM ho tloha ho disk ha ho hlokahala; boholo ba data ho disk bo ka feta palo ea RAM e fanoeng. Haeba ho se na sebaka se lekaneng ho RAM ho kenya leqephe ho disk, maqephe a khale, a seng a sa sebelisoe a tla lelekoa ho RAM.

Lintlha li bolokiloe ho disk ka mokhoa o latelang: faele e arohaneng e etsoa bakeng sa karohano ka 'ngoe ea sehlopha se seng le se seng sa cache; faeleng ena, maqephe a hlaha ka ho latellana ka tatellano ea index. Sekhetho se felletseng sa leqephe se na le sekhetho sa sehlopha sa cache, nomoro ea karohano, le index ea maqephe faeleng. Ka hona, ka ho sebelisa sekhetho se felletseng sa leqephe, re ka tseba ka mokhoa o ikhethileng hore na faele e felisitsoe joang le hore na e felletse ka har'a faele bakeng sa leqephe ka leng. U ka bala haholoanyane ka mohopolo oa paging ho sengoloa sa Apache Ignite Wiki: Ignite Persistant Store - tlas'a hood.

Mochine oa khatiso oa leqephe la disk, joalo ka ha u ka nahana ho tsoa ho lebitso, o sebetsa maemong a leqephe. Ha mochini ona o nolofalitsoe, data ho RAM e sebetsoa joalo ka, ntle le khatello ea letho, empa ha maqephe a bolokoa ho tloha ho RAM ho ea ho disk, a hatelloa.

Empa ho hatella leqephe le leng le le leng ka bonngoe ha se tharollo bothateng; o hloka ka tsela e itseng ho fokotsa boholo ba lifaele tsa data tse hlahisitsoeng. Haeba boholo ba leqephe bo se bo sa tsitsa, re ke ke ra hlola re ngola maqephe ho faele ka mor'a e 'ngoe, kaha sena se ka baka mathata a mangata:

  • Ka ho sebelisa index ea maqephe, re ke ke ra khona ho bala offset eo e leng ka eona faeleng.
  • Ha ho hlake hore na ho etsoa eng ka maqephe a seng qetellong ea faele le ho fetola boholo ba bona. Haeba boholo ba leqephe bo fokotseha, sebaka seo e se lokolotseng sea nyamela. Haeba boholo ba leqephe bo ntse bo eketseha, o hloka ho batla sebaka se secha faeleng bakeng sa eona.
  • Haeba leqephe le tsamaea ka palo ea li-byte tseo e seng boholo ba li-block tsa sistimi ea faele, joale ho e bala kapa ho e ngola ho tla hloka ho ama sebaka se le seng sa sistimi ea faele, e leng se ka lebisang ho senyeha ha ts'ebetso.

Ho qoba ho rarolla mathata ana ka boemo ba eona, compression ea leqephe la disk ho Apache Ignite e sebelisa mochini oa faele o bitsoang li-sparse files. Faele e fokolang ke e 'ngoe eo ho eona libaka tse nang le zero li ka tšoauoang e le "likoti". Tabeng ena, ha ho na li-block tsa tsamaiso ea lifaele tse tla abeloa ho boloka masoba ana, e leng se tla fella ka ho boloka sebaka sa disk.

Hoa utloahala hore e le hore u lokolle thibelo ea tsamaiso ea faele, boholo ba lesoba bo tlameha ho ba bo boholo ho feta kapa bo lekanang le "block" ea tsamaiso ea faele, e leng se behang moeli o eketsehileng ho boholo ba leqephe le Apache Ignite: hore compression e be le phello leha e le efe, boholo ba leqephe bo tlameha ho ba kholo ka thata ho feta boholo ba block system ea faele. Haeba boholo ba leqephe bo lekana le boholo ba li-block, joale re ke ke ra khona ho lokolla boloko bo le bong, hobane e le hore re lokolle boloko bo le bong, leqephe le hatisitsoeng le tlameha ho nka li-byte tse 0. Haeba boholo ba leqephe bo lekana le boholo ba li-block tsa 2 kapa 4, re tla be re se re khona ho lokolla bonyane boloko bo le bong haeba leqephe la rona le hatelloa bonyane 50% kapa 75%, ka ho latellana.

Kahoo, tlhaloso ea ho qetela ea hore na mochine o sebetsa joang: Ha u ngola leqephe ho disk, ho etsoa boiteko ba ho hatella leqephe. Haeba boholo ba leqephe le hatisitsoeng le lumella li-blocks tse le 'ngoe kapa tse ngata hore li lokolloe, joale leqephe le ngoloa ka mokhoa o hatelitsoeng, ebe "sekoti" se etsoa sebakeng sa li-blocks tse lokolotsoeng (mohala oa sistimi o etsoa. fallocate() e nang le folakha ea lesoba la punch). Haeba boholo ba leqephe le hatisitsoeng bo sa lumelle hore li-blocks li lokolloe, leqephe le bolokoa joalo ka ha le sa hatelloa. Liphetoho tsohle tsa maqephe li baloa ka mokhoa o ts'oanang le ntle le ho hatella, ka ho atisa index ea maqephe ka boholo ba leqephe. Ha ho hlokahale hore maqephe a fallisetsoe ka bouena. Li-offsets tsa maqephe, joalo ka ntle le khatello, li oela meeling ea li-block tsa sistimi ea faele.

Khatello ea data ho Apache Ignite. Phihlelo ea Sber

Ts'ebetsong ea hajoale, Ignite e ka sebetsa feela ka lifaele tse fokolang tlasa Linux OS; ka hona, khatello ea leqephe la disk e ka nolofalloa ha u sebelisa Ignite ho sistimi ena ea ts'ebetso.

Li-algorithms tsa compression tse ka sebelisoang ho hatella leqephe la disk: ZSTD, LZ4, Snappy. Ho phaella moo, ho na le mokhoa oa ho sebetsa (SKIP_GARBAGE), moo sebaka se sa sebelisoang feela leqepheng le lahleloa ntle le ho sebelisa khatello ho data e setseng, e fokotsang mojaro ho CPU ha e bapisoa le li-algorithms tse thathamisitsoeng pele.

Tšusumetso ea Ts'ebetso

Ka bomalimabe, ha kea ka ka etsa litekanyo tsa 'nete tsa ts'ebetso ho litepisi tsa' nete, kaha ha rea ​​rera ho sebelisa mochini ona tlhahisong, empa re ka hakanya hore na re tla lahleheloa ke eng le hore na re tla hlola hokae.

Ho etsa sena, re hloka ho hopola hore na maqephe a baloa le ho ngoloa joang ha a fumaneha:

  • Ha ho etsoa ts'ebetso ea ho bala, e batlisisoa pele ho RAM; haeba patlo e sa atlehe, leqephe le kenngoa ho RAM ho tsoa ho disk ka khoele e tšoanang e balang.
  • Ha ts'ebetso ea ho ngola e etsoa, ​​​​leqephe la RAM le tšoauoa le le litšila, empa leqephe ha le bolokehe ho disk hang-hang ka khoele e ngolang. Maqephe ohle a litšila a bolokoa ho disk hamorao ts'ebetsong ea tlhahlobo ka likhoele tse arohaneng.

Kahoo phello ea ts'ebetso ea ho bala ke:

  • Positive (disk IO), ka lebaka la ho fokotseha ha palo ea li-blocks tsa tsamaiso ea lifaele.
  • Negative (CPU), ka lebaka la mojaro o eketsehileng o hlokehang ke sistimi e sebetsang ho sebetsa le lifaele tse fokolang. Hape ho ka etsahala hore lits'ebetso tse ling tsa IO li tla hlaha mona ka mokhoa o hlakileng ho boloka sebopeho se rarahaneng sa faele sa sparse (ka bomalimabe, ha ke tsebe lintlha tsohle tsa hore na lifaele tse fokolang li sebetsa joang).
  • Negative (CPU), ka lebaka la tlhokahalo ea ho senya maqephe.
  • Ha ho na tšusumetso mesebetsing ea ho ngola.
  • Tšusumetso ts'ebetsong ea ho hlahloba (ntho e 'ngoe le e' ngoe mona e tšoana le ts'ebetso ea ho bala):
  • Positive (disk IO), ka lebaka la ho fokotseha ha palo ea li-blocks tsa tsamaiso ea lifaele tse ngotsoeng.
  • Negative (CPU, mohlomong disk IO), ka lebaka la ho sebetsa ka lifaele tse fokolang.
  • Negative (CPU), ka lebaka la tlhokahalo ea ho hatella leqephe.

Ke lehlakore lefe la sekala le tla phahamisa sekala? Sena sohle se itšetlehile haholo ka tikoloho, empa ke na le tšekamelo ea ho lumela hore khatello ea leqephe la disk e tla lebisa ho senyeha ha ts'ebetso ho litsamaiso tse ngata. Ho feta moo, liteko ho tse ling tsa DBMS tse sebelisang mokhoa o ts'oanang le lifaele tse fokolang li bonts'a ho theoha ha ts'ebetso ha compression e nolofalitsoe.

Mokhoa oa ho nolofalletsa le ho lokisa

Joalokaha ho boletsoe ka holimo, mofuta o fokolang oa Apache Ignite o tšehetsang compression ea leqephe la disk ke 2.8 mme ke sistimi e sebetsang ea Linux feela e tšehetsoang. Lumella le ho lokisa ka tsela e latelang:

  • Ho tlameha ho ba le mojule oa ho hatella-ho chesa ka har'a tsela ea sehlopha. Ka nako e sa lekanyetsoang, e fumaneha kabong ea Apache Ignite bukeng ea libs/optional mme ha e kenyellelitsoe tseleng ea sehlopha. U ka tsamaisa directory ho ea boemong bo le bong ho ea ho libs ebe ha u e tsamaisa ka ignite.sh e tla nolofalloa ka bo eona.
  • Ho phehella ho tlameha ho lumelloa (E nolofalitsoe ka DataRegionConfiguration.setPersistenceEnabled(true)).
  • Saese ea leqephe e tlameha ho ba kholo ho feta boholo ba block system ea faele (o ka e beha o sebelisa DataStorageConfiguration.setPageSize() ).
  • Bakeng sa cache e 'ngoe le e' ngoe eo data ea eona e hlokang ho hatelloa, o tlameha ho lokisa mokhoa oa ho hatella le (ka boikhethelo) boemo ba khatello (mekhoa). CacheConfiguration.setDiskPageCompression() , CacheConfiguration.setDiskPageCompressionLevel()).

WAL compaction

Joang mosebetsing ona

WAL ke eng mme hobaneng e hlokahala? Ka bokhuts'oane haholo: lena ke logi e nang le liketsahalo tsohle tse qetellang li fetola polokelo ea maqephe. Hoa hlokahala haholo-holo ho khona ho hlaphoheloa ha motho a ka oa. Ts'ebetso efe kapa efe, pele e fana ka taolo ho mosebelisi, e tlameha ho qala ho rekota ketsahalo ho WAL, e le hore haeba e ka hloleha, e ka bapaloa hape ka har'a logi mme e tsosolose lits'ebetso tsohle tseo mosebelisi a li fumaneng karabelo e atlehileng, leha lits'ebetso tsena li ka bapaloa. e ne e se na nako ea ho bonahatsoa sebakeng sa polokelo ea maqephe ho disk (e se e ka holimo Ho hlalositsoe hore ho ngola ha sebele ho lebenkele la maqephe ho etsoa ka mokhoa o bitsoang "checkpointing" ka ho lieha ho itseng ka likhoele tse arohaneng).

Kenyelletso ho WAL e arotsoe ka mokhoa o utloahalang le oa 'mele. Boolean ke linotlolo ebile ke tsa bohlokoa. 'Mele - e bonahatsa liphetoho maqepheng a lebenkele la maqephe. Le hoja litlaleho tse utloahalang li ka ba molemo bakeng sa linyeoe tse ling, litlaleho tsa 'mele li hlokahala feela bakeng sa ho hlaphoheloa ha kotsi e ka ba teng,' me litlaleho li hlokahala feela ho tloha ha ho hlahlojoa katleho ea ho qetela. Mona re ke ke ra kena ka botlalo le ho hlalosa hore na hobaneng e sebetsa ka tsela ena, empa ba thahasellang ba ka bua ka sengoloa se seng se boletsoe ho Apache Ignite Wiki: Ignite Persistant Store - tlas'a hood.

Hangata ho na le lirekoto tsa 'mele tse' maloa rekotong e 'ngoe le e 'ngoe e utloahalang. Ke hore, mohlala, ts'ebetso e le 'ngoe ka har'a cache e ama maqephe a' maloa mohopolong oa leqephe (leqephe le nang le data ka boeona, maqephe a nang le li-index, maqephe a nang le manane a mahala). Litekong tse ling tsa maiketsetso, ke fumane hore lirekoto tsa 'mele li nkile ho fihla ho 90% ea faele ea WAL. Leha ho le joalo, li hlokahala ka nako e khuts'oane haholo (ka ho sa feleng, nako e pakeng tsa li-checkpoints ke metsotso e 3). E ka ba ntho e utloahalang ho tlosa data ena ka mor'a ho lahleheloa ke bohlokoa ba eona. Sena ke sona hantle seo mochini oa compaction oa WAL o se etsang: o tlosa lirekoto tsa 'mele mme o hatella lirekoto tse setseng tse utloahalang o sebelisa zip, athe boholo ba faele bo fokotsehile haholo (ka linako tse ling ka makhetlo a mashome).

Ha e le hantle, WAL e na le likarolo tse 'maloa (tse 10 ka ho sa feleng) tsa boholo bo tsitsitseng (64MB ka ho sa feleng), tse ngotsoeng ka mokhoa o chitja. Hang ha karolo ea hona joale e tlatsitsoe, karolo e latelang e abeloa e le ea morao-rao, 'me karolo e tlatsitsoeng e kopitsoa sebakeng sa polokelo ka khoele e fapaneng. WAL compaction e se e sebetsa le likarolo tsa polokelo. Hape, joalo ka khoele e arohaneng, e beha leihlo ts'ebetso ea sebaka sa ho hlahloba 'me e qala ho hatella likarolo tsa polokelo eo ho seng ho sa hlokahale hore lirekoto tsa tsona li se ke tsa hlola li hlokahala.

Khatello ea data ho Apache Ignite. Phihlelo ea Sber

Tšusumetso ea Ts'ebetso

Kaha WAL compaction e sebetsa e le khoele e arohaneng, ha hoa lokela ho ba le tšusumetso e tobileng mesebetsing e etsoang. Empa e ntse e beha moroalo o eketsehileng oa mokokotlo ho CPU (compression) le disk (ho bala karolo e 'ngoe le e' ngoe ea WAL ho tloha polokelong ea boitsebiso le ho ngola likarolo tse hatelitsoeng), kahoo haeba tsamaiso e ntse e sebetsa ka boholo ba eona, e tla boela e lebise ho senyeha ha tshebetso.

Mokhoa oa ho nolofalletsa le ho lokisa

O ka nolofalletsa WAL compaction ho sebelisa thepa WalCompactionEnabled в DataStorageConfiguration (DataStorageConfiguration.setWalCompactionEnabled(true)). Hape, ka ho sebelisa mokhoa oa DataStorageConfiguration.setWalCompactionLevel(), u ka beha boemo ba khatello haeba u sa khotsofatsoe ke boleng ba kamehla (BEST_SPEED).

Qetello ea senepe sa leqephe la WAL

Joang mosebetsing ona

Re se re fumane hore litlalehong tsa WAL li arotsoe ka mokhoa o utloahalang le oa 'mele. Bakeng sa phetoho e 'ngoe le e' ngoe leqepheng ka leng, rekoto ea 'mele ea WAL e hlahisoa mohopolong oa leqephe. Lirekoto tsa 'mele, le tsona, li arotsoe ka li-subtypes tse peli: rekoto ea setšoantšo sa leqephe le rekoto ea delta. Nako le nako ha re fetola ntho e itseng leqepheng ebe re e fetisetsa ho tloha sebakeng se hloekileng ho ea sebakeng se litšila, kopi e feletseng ea leqephe lena e bolokiloe ho WAL (rekoto ea setšoantšo sa leqephe). Leha re fetotse baiti e le 'ngoe feela ho WAL, rekoto e tla ba kholo hanyane ho feta boholo ba leqephe. Haeba re fetola ntho e 'ngoe leqepheng le seng le le litšila, rekoto ea delta e thehoa ho WAL, e bontšang liphetoho feela ha li bapisoa le boemo bo fetileng ba leqephe, empa eseng leqephe lohle. Kaha ho tsosolosa boemo ba maqephe ho tloha ho litšila ho ea ho ho hloekisa ho etsoa nakong ea ts'ebetso ea ho hlahloba, hang ka mor'a ho qala ha sebaka sa ho hlahloba, hoo e batlang e le litlaleho tsohle tsa 'mele li tla ba le litšoantšo feela tsa maqephe (kaha maqephe ohle hang ka mor'a ho qala ha sebaka sa ho hlahloba se hloekile) , joale ha re ntse re atamela sebaka se latelang sa tlhahlobo, karoloana ea rekoto ea delta e qala ho hōla le ho tsosolosa hape qalong ea sebaka se latelang sa tlhahlobo. Litekanyo litekong tse ling tsa maiketsetso li bonts'itse hore karolo ea likhakanyo tsa maqephe ka kakaretso ea lirekoto tsa 'mele e fihla ho 2%.

Mohopolo oa WAL snapshot compression ke ho hatella linepe tsa leqephe ho sebelisa sesebelisoa sa compression sa leqephe se entsoeng hantle (sheba compression ea leqephe la disk). Ka nako e ts'oanang, ho WAL, lirekoto li bolokoa ka tatellano ka mokhoa oa li-append-feela 'me ha ho hlokahale ho tlama litlaleho ho meeli ea li-blocks tsa tsamaiso ea lifaele, kahoo mona, ho fapana le mochine oa khatiso oa leqephe la disk, ha re hloke lifaele tse fokolang. tsohle; ka hona, mochine ona o ke ke oa sebetsa feela ho OS Linux. Ho feta moo, ha e sa na taba ho rona hore na re khonne ho hatella leqephe hakae. Leha re lokolotse 1 byte, sena e se e le sephetho se setle mme re ka boloka data e hatelitsoeng ho WAL, ho fapana le compression ea leqephe la disk, moo re bolokang leqephe le hatisitsoeng ha feela re lokolotse block e fetang 1 ea sistimi ea faele.

Maqephe ke data e hatellehang haholo, karolo ea bona ka kakaretso ea molumo oa WAL e phahame haholo, kahoo ntle le ho fetola WAL fomate ea faele re ka fumana phokotso e kholo ea boholo ba eona. Ho hatella, ho kenyelletsa le litlaleho tse utloahalang, ho tla hloka phetoho ea sebopeho le tahlehelo ea ho lumellana, mohlala, bakeng sa bareki ba ka ntle ba ka 'nang ba thahasella litlaleho tse utloahalang, empa ba ke ke ba lebisa ho fokotseha ho hoholo ha boholo ba faele.

Joalo ka khatello ea leqephe la disk, khatello ea leqephe la WAL e ka sebelisa ZSTD, LZ4, Snappy compression algorithms, hammoho le mokhoa oa SKIP_GARBAGE.

Tšusumetso ea Ts'ebetso

Ha ho thata ho hlokomela hore ka ho toba ho nolofalletsa WAL snapshot compression e ama feela likhoele tse ngolang data ho memori ea leqephe, ke hore, likhoele tse fetolang data ka li-cache. Ho bala litlaleho tsa 'mele ho tloha WAL ho etsahala hanngoe feela, ka nako eo node e tsosoa ka mor'a ho oa ('me hafeela e oela nakong ea ho hlahloba).

Sena se ama likhoele tse fetolang data ka tsela e latelang: re fumana phello e mpe (CPU) ka lebaka la tlhokahalo ea ho hatella leqephe nako le nako pele u ngolla disk, le phello e ntle (disk IO) ka lebaka la ho fokotseha ha palo ea lintlha tse ngotsoeng. Ka lebaka leo, ntho e 'ngoe le e' ngoe e bonolo mona: haeba ts'ebetso ea tsamaiso e lekanyelitsoe ke CPU, re fumana ho senyeha hanyenyane, haeba e lekanyelitsoe ke disk I / O, re fumana keketseho.

Ka mokhoa o sa tobang, ho fokotsa boholo ba WAL ho boetse ho ama (ka mokhoa o motle) ​​melapo e lahlelang likarolo tsa WAL polokelong ea boitsebiso le melapo ea WAL ea compaction.

Liteko tsa 'nete tsa ts'ebetso tikolohong ea rona ho sebelisa data ea maiketsetso li bonts'itse keketseho e nyane (karolo e eketsehile ka 10% -15%, latency e fokotsehile ka 10% -15%).

Mokhoa oa ho nolofalletsa le ho lokisa

Mofuta o fokolang oa Apache Ignite: 2.8. Lumella le ho lokisa ka tsela e latelang:

  • Ho tlameha ho ba le mojule oa ho hatella-ho chesa ka har'a tsela ea sehlopha. Ka nako e sa lekanyetsoang, e fumaneha kabong ea Apache Ignite bukeng ea libs/optional mme ha e kenyellelitsoe tseleng ea sehlopha. U ka tsamaisa directory ho ea boemong bo le bong ho ea ho libs ebe ha u e tsamaisa ka ignite.sh e tla nolofalloa ka bo eona.
  • Ho phehella ho tlameha ho lumelloa (E nolofalitsoe ka DataRegionConfiguration.setPersistenceEnabled(true)).
  • Mokhoa oa ho hatella o tlameha ho hlophisoa ho sebelisoa mokhoa DataStorageConfiguration.setWalPageCompression(), compression e emisitsoe ka ho sa feleng (DISABLED mode).
  • Ka boikhethelo, o ka beha boemo ba compression ho sebelisa mokhoa DataStorageConfiguration.setWalPageCompression(), bona javadoc bakeng sa mokhoa oa boleng bo nepahetseng bakeng sa mokhoa o mong le o mong.

fihlela qeto e

Mekhoa e nkoang e le ea khatello ea data ho Apache Ignite e ka sebelisoa e ikemetseng, empa motsoako ofe kapa ofe oa bona oa amoheleha. Ho utloisisa hore na li sebetsa joang ho tla u fa monyetla oa ho tseba hore na li loketse mesebetsi ea hau tikolohong ea heno le hore na u tla tlameha ho tela eng ha u li sebelisa. Khatello ea leqephe la Disk e etselitsoe ho hatella polokelo ea mantlha mme e ka fana ka tekanyo e mahareng ea compression. Khatello ea setšoantšo sa leqephe la WAL e tla fana ka tekanyo e tloaelehileng ea khatello bakeng sa lifaele tsa WAL, 'me mohlomong e tla ntlafatsa ts'ebetso. WAL compaction e ke ke ea e-ba le phello e ntle mosebetsing, empa e tla fokotsa boholo ba lifaele tsa WAL ka hohle kamoo ho ka khonehang ka ho tlosa litlaleho tsa 'mele.

Source: www.habr.com

Eketsa ka tlhaloso