{"id":30785,"date":"2019-10-31T21:37:25","date_gmt":"2019-10-31T18:37:25","guid":{"rendered":"https:\/\/prohoster.info\/blog\/stroitelnye-bloki-raspredelennyh-prilozhenij-nulevoe-priblizhenie\/"},"modified":"2019-10-31T21:37:25","modified_gmt":"2019-10-31T18:37:25","slug":"stroitelnye-bloki-raspredelennyh-prilozhenij-nulevoe-priblizhenie","status":"publish","type":"post","link":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/stroitelnye-bloki-raspredelennyh-prilozhenij-nulevoe-priblizhenie","title":{"rendered":"Jaotatud rakenduste ehitusplokid. Null l\u00e4henemine","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Jaotatud rakenduste ehitusplokid. Null l\u00e4henemine\" src=\"\/wp-content\/uploads\/2019\/04\/88d4e363538bdfc67690c8339dca790b.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Maailm ei seisa paigal. Edusammud loovad uusi tehnoloogilisi v\u00e4ljakutseid. Muutunud n\u00f5udmistega peab arenema ka infotehnoloogia arhitektuur. T\u00e4na r\u00e4\u00e4gime s\u00fcndmustele orienteeritud arhitektuurist, konkurentsist, paralleelsusest, as\u00fcnkroonsusest ja sellest, kuidas Erlangiga k\u00f5iki neid aspekte rahumeelselt k\u00e4sitleda.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2 id=\"vvedenie\">Sissejuhatus<\/h2>\n<p><\/p>\n<p>S\u00f5ltuvalt projekteeritava s\u00fcsteemi suurusest ja n\u00f5udmistest valime meie, arendajad, teabevahetuse viisi s\u00fcsteemis. Enamasti on teenuste vahelise suhtluse korraldamiseks sobiv lahendus n\u00e4iteks brokerip\u00f5hine skeem, nagu RabbitMQ v\u00f5i Kafka. Kuid m\u00f5nikord on s\u00fcndmuste voog, SLA ja kontrollitase s\u00fcsteemis selline, et valmis s\u00f5numitoomine ei sobi. Loomulikult on v\u00f5imalik s\u00fcsteemi veidi keerulisemaks muuta, v\u00f5ttes vastutuse transporditasandi ja klastrite loomise eest, n\u00e4iteks kasutades ZeroMQ v\u00f5i nanomsg. Kuid kui s\u00fcsteemi standardse Erlangi klastrite l\u00e4bilaskev\u00f5ime ja v\u00f5imalused on piisavad, siis t\u00e4iendava \u00fcksuse lisamise k\u00fcsimus n\u00f5uab p\u00f5hjalikku uurimist ja majanduslikku p\u00f5hjendust.<\/p>\n<p><\/p>\n<p>Reaktiivsete jaotatud rakenduste teema on \u00fcsna ulatuslik. K\u00e4esoleva artikli raamides k\u00e4sitleme ainult homogeenseid keskkondi, mis p\u00f5hinevad Erlang\/Elixir. Erlang\/OTP \u00f6kos\u00fcsteem v\u00f5imaldab reaktiivset arhitektuuri rakendada minimaalsete t\u00f6\u00f6kuludega. Siiski on meil vaja suhtlemise kihti. <\/p>\n<p><\/p>\n<h2 id=\"teoreticheskiy-bazis\">Teoreetiline alus<\/h2>\n<p><\/p>\n<p>Projektimine algab eesm\u00e4rkide ja piirangute m\u00e4\u00e4ratlemisest. Peamine eesm\u00e4rk ei seisne arendamises iseenesest. Me peame looma turvalise ja skaleeritava t\u00f6\u00f6riista, mille alusel on v\u00f5imalik luua ja mis k\u00f5ige t\u00e4htsam \u2013 arendada kaasaegseid rakendusi erinevatel tasanditel: alates \u00fcheserverilistest, mis teenindavad v\u00e4ikest publikume, mis v\u00f5ivad hiljem areneda klastriteks kuni 50-60 s\u00f5lme, kuni klastrite f\u00f6deratsioonideni. Seega on peamine eesm\u00e4rk kasumi maksimeerimine arendus- ja omamiskulude v\u00e4hendamise kaudu.<\/p>\n<p><\/p>\n<p>Toome v\u00e4lja 4 peamist n\u00f5uet l\u00f5pp-s\u00fcsteemile:<\/p>\n<p><\/p>\n<ul>\n<li><strong>C<\/strong>s\u00fcndmusp\u00f5hisus.<br \/>\nSisene on alati valmis edastama s\u00fcndmuste voogu ja teostama vajalikke toiminguid;<\/li>\n<li><strong>M<\/strong>\u00f5\u00f5tlemine.<br \/>\nEraldi plokke saab skaleerida nii vertikaalselt kui ka horisontaalselt. Kogu s\u00fcsteem peab olema v\u00f5imeline l\u00f5pmatuks horisontaalseks kasvuks;<\/li>\n<li><strong>Umbes<\/strong>rikketaluvus.<br \/>\nK\u00f5ik tasemed ja teenused peavad olema v\u00f5imelised automaatselt taastuma t\u00f5rgete korral;<\/li>\n<li><strong>G<\/strong>arantiseeritud reageerimisaeg.<br \/>\nAeg on v\u00e4\u00e4rtuslik ja kasutajad ei tohiks liiga kaua oodata.<\/li>\n<\/ul>\n<p><\/p>\n<p>Kas tead vana muinasjuttu \u201eThe little engine that could\u201d, ka tuntud kui \u201ePaarovozik, kes suutis\u201d? Et projekteeritav s\u00fcsteem suudaks edukalt protot\u00fc\u00fcbist v\u00e4lja tulla ja olla edumeelne, peab selle alus vastama minimaalsetele n\u00f5udmistele <strong>SUUTIS<\/strong>.<\/p>\n<p><\/p>\n<p>S\u00f5numite edastamine kui infrastruktuuri t\u00f6\u00f6riist ja teenuste p\u00f5hialus lisab veel \u00fche punkti: kasutusmugavus arendajatele.<\/p>\n<p><\/p>\n<h3 id=\"orientirovannost-na-sobytiya\">S\u00fcndmustele orienteeritus<\/h3>\n<p><\/p>\n<p>Et rakendus saaks kasvada \u00fchest <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/et\/server\/dts-los-angeles\/\"   title=\"serverid\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"3480\">serverid<\/a> Klastri jaoks peab selle arhitektuur tagama n\u00f5rga seotuse. Sellele n\u00f5udele vastab as\u00fcnkrooniline mudel. Selles mudelis muretsevad saatja ja saaja teate infokoormuse p\u00e4rast, kuid nad ei pea muretsema s\u00f5numi edastamise ja marsruutimise \u00fcle s\u00fcsteemis.<\/p>\n<p><\/p>\n<h3 id=\"masshtabiruemost\">Skaleeritavus<\/h3>\n<p><\/p>\n<p>S\u00fcsteemi skaleeritavus ja efektiivsus k\u00e4ivad k\u00e4sik\u00e4es. Rakenduse komponendid peavad suutma kasutada k\u00f5iki saadaval olevaid ressursse. Mida t\u00f5husamalt suudame neid ressursse kasutada ja mida optimaalsemad on meie t\u00f6\u00f6tlemismeetodid, seda v\u00e4hem raha kulutame varustusele. <\/p>\n<p><\/p>\n<p>\u00dche masina raames loob Erlang k\u00f5rge konkurentsikeskkonna. Konkurentsi ja paralleelsuse vaheline tasakaal saab m\u00e4\u00e4rata operatsioonis\u00fcsteemi saadaval olevate l\u00f5imede arvu ja nende l\u00f5imede kasutavate ajakava m\u00e4\u00e4ratlemise kaudu.<br \/>\nErlang'i protsessidel ei ole \u00fchist olekut ja need t\u00f6\u00f6tavad mittesahnivas re\u017eiimis. See tagab v\u00f5rreldes traditsiooniliste blokeerivate s\u00fcnkroonimise alusel loodud rakendustega suhteliselt madala latentsuse ja k\u00f5rgema l\u00e4bilaskev\u00f5ime. Erlang'i ajakava hoolitseb \u00f5iglasest CPU ja IO jaotamisest ning lukustuste puudumine v\u00f5imaldab rakendusel vastata isegi tipukoormuse v\u00f5i rike ajal. <\/p>\n<p><\/p>\n<p>Klastri tasandil eksisteerib probleem ka ressursikasutuses. On oluline, et k\u00f5ik masinad klastris oleksid \u00fchtlaselt koormatud ja v\u00f5rk ei oleks \u00fclekoormatud. Kujutame ette olukorda: kasutaja liiklus j\u00f5uab sissetulevatesse tasakaalustajatesse (haproxy, nginx jne), mis jaotavad p\u00e4ringud t\u00f6\u00f6tlemiseks v\u00f5imalikult \u00fchtlaselt saadaval olevate tagapooltade vahel. Rakenduse infrastruktuuris teenus, mis rakendab vajalikku liidest, on vaid viimane miil ning tal tuleb esmase p\u00e4ringu vastamiseks k\u00fcsida mitmeid teisi teenuseid. Siseriiklikud p\u00e4ringud vajavad samuti marsruutimist ja tasakaalustamist.<br \/>\nAndmete voo t\u00f5husaks juhtimiseks peab s\u00f5numite edastamine pakkuma arendajatele liidese koormuse ja marsruutimise haldamiseks. Sel viisil saavad arendajad, kasutades mikroteenuste mustreid (aggregator, proxy, chain, branch jne), lahendada nii tavalisi \u00fclesandeid kui ka harva esinevaid. <\/p>\n<p><\/p>\n<p>\u00c4riperspektiivist on skaleeritavus \u00fcks riskijuhtimise t\u00f6\u00f6riistu. Peamine on rahuldada klientide n\u00f5udmisi, optimaalselt kasutades varustust:<\/p>\n<p><\/p>\n<ul>\n<li>Seoses seadmete v\u00f5imsuse suurenemisega l\u00e4bi edusammude ei j\u00e4\u00e4 see seisma tarkvara ebat\u00e4iuslikkuse t\u00f5ttu. Erlang suudab suurep\u00e4raselt vertikaalselt skaleeruda ja suudab alati kasutada k\u00f5iki CPU tuumasid ja saadaval olevaid m\u00e4lusid;<\/li>\n<li>Pilvandmet\u00f6\u00f6tlus keskkondades saame juhtida varustuse hulka s\u00f5ltuvalt praegusest v\u00f5i prognoositavast koormusest ning tagada SLA.<\/li>\n<\/ul>\n<p><\/p>\n<h3 id=\"otkazoustoychivost\">Veadeta t\u00f6\u00f6<\/h3>\n<p><\/p>\n<p>Vaatleme kahte aksioomi: \"Rikked on lubamatud\" ja \"Rikked juhtuvad alati\". \u00c4ri jaoks t\u00e4hendab tarkvara riknemine rahakaotust ja veelgi hullem, maine kaotust. Otsides tasakaalu v\u00f5imalike kaotuste ja t\u00f5rketaluvate tarkvara arendamise kulude vahel, v\u00f5ib sageli leida kompromissi.<\/p>\n<p><\/p>\n<p>L\u00fchiajaliselt s\u00e4\u00e4stab arhitektuur, mis sisaldab usaldusv\u00e4\u00e4rsuse tagamist, raha valmis klasterdamise lahenduste ostmisel. Need on kallid ja neidki iseloomustavad vead.<br \/>\nPikaajaliselt tasub usaldusv\u00e4\u00e4rne arhitektuur end korduvalt \u00e4ra oma rakenduskuludega kogu arenduse v\u00e4ltel.<br \/>\nS\u00f5numite edastamine koodibaasis juba arenduse faasis v\u00f5imaldab p\u00f5hjalikult l\u00e4bi m\u00f5elda komponentide koost\u00f6\u00f6 s\u00fcsteemis. See lihtsustab reageerimise ja rikkehaldamise \u00fclesannet, kuna k\u00f5ik vastutavad komponendid t\u00f6\u00f6tlevad rikkeid ning l\u00f5pp-s\u00fcsteem teab, kuidas automaatselt p\u00e4rast riket tagasi normaalsesse olekusse naasta by design.<\/p>\n<p><\/p>\n<h3 id=\"otzyvchivost\">Reageerimisv\u00f5ime<\/h3>\n<p><\/p>\n<p>Olenemata rikete olemasolust peab rakendus vastama p\u00e4ringutele ja rahuldama SLA-d. T\u00f5de on see, et inimesed ei soovi oodata, seet\u00f5ttu peab \u00e4ri sellele kohanema. \u00dcha rohkemalt rakendustelt oodatakse k\u00f5rget reageerimisv\u00f5imet.<br \/>\nReageerivad rakendused t\u00f6\u00f6tavad peaaegu reaalajas. Erlang VM t\u00f6\u00f6tab pehme reaalaja re\u017eiimis. M\u00f5nes valdkonnas, nagu b\u00f6rsikaubandus, meditsiin ja t\u00f6\u00f6stusseadmete haldamine, on ranget reaalajare\u017eiimi oluline.<br \/>\nReageerivad s\u00fcsteemid parandavad kasutajakogemust ja on ettev\u00f5tetele kasulikud.<\/p>\n<p><\/p>\n<h2 id=\"predvaritelnyy-itog\">Esialgne kokkuv\u00f5te<\/h2>\n<p><\/p>\n<p>Selle artikli kirjutamisel tahtsin jagada oma kogemusi s\u00f5numivahetuss\u00fcsteemi loomisel ja keerukate s\u00fcsteemide arendamisel selle p\u00f5hjal. Kuid teoreetiline ja motiveeriv osa tuli \u00fcsna mahukas.<br \/>\nArtikli teises osas r\u00e4\u00e4gin vahetuspunktide elluviimise n\u00fcanssidest, s\u00f5numivahetuse mallidest ja nende rakendamisest.<br \/>\nKolmandas osas k\u00e4sitleme teenuste, marsruutimise ja tasakaalustamise \u00fcldk\u00fcsimusi. R\u00e4\u00e4gime praktilisest k\u00fcljest skaleeritavuse ja t\u00f5rketaluvuse s\u00fcsteemides.<\/p>\n<p><\/p>\n<p>Esimese osa l\u00f5pp.<\/p>\n<p><\/p>\n<p>Foto <noindex><a rel=\"nofollow\" href=\"https:\/\/unsplash.com\/photos\/SRjZtxsK3Os\">@lucabravo<\/a><\/noindex>.<\/p>\n<p>Allikas: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/446028\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041c\u0438\u0440 \u043d\u0435 \u0441\u0442\u043e\u0438\u0442 \u043d\u0430 \u043c\u0435\u0441\u0442\u0435. \u041f\u0440\u043e\u0433\u0440\u0435\u0441\u0441 \u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u043d\u043e\u0432\u044b\u0435 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0432\u044b\u0437\u043e\u0432\u044b. \u0412 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 \u0438\u0437\u043c\u0435\u043d\u0438\u0432\u0448\u0438\u043c\u0438\u0441\u044f \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f\u043c\u0438, \u0434\u043e\u043b\u0436\u043d\u0430 \u044d\u0432\u043e\u043b\u044e\u0446\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c \u043e \u0441\u043e\u0431\u044b\u0442\u0438\u0439\u043d\u043e-\u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0435, \u043a\u043e\u043d\u043a\u0443\u0440\u0435\u043d\u0442\u043d\u043e\u0441\u0442\u0438, \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438, \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0441\u0442\u0438 \u0438 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u0432 Erlang \u043c\u043e\u0436\u043d\u043e \u0441\u043e \u0432\u0441\u0435\u043c \u044d\u0442\u0438\u043c \u0436\u0438\u0442\u044c \u043c\u0438\u0440\u043d\u043e. \u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0412 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u0443\u0435\u043c\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0438 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0439 \u043a \u043d\u0435\u0439, \u043c\u044b, [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":22770,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-30785","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.0.1 - aioseo.com -->\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/stroitelnye-bloki-raspredelennyh-prilozhenij-nulevoe-priblizhenie\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.0.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"et_EE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0421\u0442\u0440\u043e\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0431\u043b\u043e\u043a\u0438 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439. \u041d\u0443\u043b\u0435\u0432\u043e\u0435 \u043f\u0440\u0438\u0431\u043b\u0438\u0436\u0435\u043d\u0438\u0435 | ProHoster\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/stroitelnye-bloki-raspredelennyh-prilozhenij-nulevoe-priblizhenie\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T18:37:25+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:37:25+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Jaotatud rakenduste ehitustooted. Nullkasutamise l\u00e4henemine | ProHoster","description":"","canonical_url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/stroitelnye-bloki-raspredelennyh-prilozhenij-nulevoe-priblizhenie","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"et_EE","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0421\u0442\u0440\u043e\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0431\u043b\u043e\u043a\u0438 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439. \u041d\u0443\u043b\u0435\u0432\u043e\u0435 \u043f\u0440\u0438\u0431\u043b\u0438\u0436\u0435\u043d\u0438\u0435 | ProHoster","og:url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/stroitelnye-bloki-raspredelennyh-prilozhenij-nulevoe-priblizhenie","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T18:37:25+00:00","article:modified_time":"2019-10-31T18:37:25+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"30785","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-02-22 15:31:13","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 03:29:56","updated":"2026-02-22 15:31:13","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/30785","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/comments?post=30785"}],"version-history":[{"count":1,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/30785\/revisions"}],"predecessor-version":[{"id":162006,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/30785\/revisions\/162006"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media\/22770"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media?parent=30785"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/categories?post=30785"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/tags?post=30785"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}