{"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\/sv\/blog\/administrirovanie\/stroitelnye-bloki-raspredelennyh-prilozhenij-nulevoe-priblizhenie","title":{"rendered":"Byggstenar i distribuerade applikationer. Nollapproximationen","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Byggstenar i distribuerade applikationer. Nollapproximationen\" src=\"\/wp-content\/uploads\/2019\/04\/88d4e363538bdfc67690c8339dca790b.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>V\u00e4rlden st\u00e5r inte still. Framsteg skapar nya teknologiska utmaningar. I enlighet med de f\u00f6r\u00e4ndrade kraven m\u00e5ste ocks\u00e5 arkitekturen f\u00f6r informationssystem evolutionera. Idag kommer vi att tala om h\u00e4ndelseorienterad arkitektur, konkurrens, parallellitet, samtidighet och hur man kan hantera allt detta p\u00e5 ett harmoniskt s\u00e4tt med Erlang.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2 id=\"vvedenie\">Introduktion<\/h2>\n<p><\/p>\n<p>Beroende p\u00e5 storleken p\u00e5 det planerade systemet och dess krav v\u00e4ljer vi som utvecklare s\u00e4ttet att utbyta information i systemet. I de flesta fall kan en arbetsl\u00f6sning f\u00f6r att organisera interaktion mellan tj\u00e4nster vara en l\u00f6sning med en broker, till exempel baserat p\u00e5 RabbitMQ eller Kafka. Men ibland \u00e4r h\u00e4ndelsefl\u00f6det, SLA och niv\u00e5n av kontroll \u00f6ver systemet s\u00e5dana att en f\u00e4rdig messaging-l\u00f6sning inte passar. Sj\u00e4lvklart kan man komplicera systemet n\u00e5got genom att ta ansvar f\u00f6r transportniv\u00e5n och bildandet av kluster, till exempel genom att anv\u00e4nda ZeroMQ eller nanomsg. Men om systemet har tillr\u00e4cklig bandbredd och kapacitet fr\u00e5n en standard Erlang-kluster, kr\u00e4ver fr\u00e5gan om att l\u00e4gga till en extra enhet noggrant \u00f6verv\u00e4gande och ekonomisk motivering.<\/p>\n<p><\/p>\n<p>\u00c4mnet om reaktiva distribuerade applikationer \u00e4r ganska omfattande. F\u00f6r att passa inom ramen f\u00f6r artikeln kommer dagens diskussion endast att omfatta homogena milj\u00f6er byggda p\u00e5 Erlang\/Elixir. Ekosystemet Erlang\/OTP m\u00f6jligg\u00f6r implementering av reaktiv arkitektur med minimal arbetsinsats. Men i alla fall kommer vi att beh\u00f6va ett lager f\u00f6r meddelandeutbyte. <\/p>\n<p><\/p>\n<h2 id=\"teoreticheskiy-bazis\">Teoretisk grund<\/h2>\n<p><\/p>\n<p>Designprocessen b\u00f6rjar med att fastst\u00e4lla m\u00e5l och begr\u00e4nsningar. Huvudsyftet ligger inte i att utveckla f\u00f6r utvecklandets skull. Vi beh\u00f6ver en s\u00e4ker och skalbar verktyg som g\u00f6r att vi kan skapa, och framf\u00f6r allt \u2013 utveckla moderna applikationer p\u00e5 olika niv\u00e5er: fr\u00e5n enskilda servrar som betj\u00e4nar en liten publik, som kan utvecklas till kluster med 50-60 noder, till federationer av kluster. S\u00e5ledes \u00e4r huvudm\u00e5let att maximera vinsten genom att minska kostnaderna f\u00f6r utveckling och \u00e4gande av det slutliga systemet.<\/p>\n<p><\/p>\n<p>L\u00e5t oss lyfta fram 4 huvudkrav f\u00f6r det slutliga systemet:<\/p>\n<p><\/p>\n<ul>\n<li><strong>Med<\/strong>h\u00e4ndelseorientering.<br \/>\nSystemet \u00e4r alltid redo att hantera ett fl\u00f6de av h\u00e4ndelser och utf\u00f6ra n\u00f6dv\u00e4ndiga \u00e5tg\u00e4rder;<\/li>\n<li><strong>M<\/strong>skala.<br \/>\nSeparata block kan skalas b\u00e5de vertikalt och horisontellt. Hela systemet m\u00e5ste kunna v\u00e4xa horisontellt i o\u00e4ndlighet;<\/li>\n<li><strong>Till<\/strong>fel\u00f6verlevnad.<br \/>\nAlla niv\u00e5er och tj\u00e4nster m\u00e5ste kunna \u00e5terh\u00e4mta sig automatiskt vid fel;<\/li>\n<li><strong>G<\/strong>aranterad svarstid.<br \/>\nTid \u00e4r v\u00e4rdefullt och anv\u00e4ndare ska inte beh\u00f6va v\u00e4nta f\u00f6r l\u00e4nge.<\/li>\n<\/ul>\n<p><\/p>\n<p>Kommer du ih\u00e5g den gamla sagan om 'The little engine that could', \u00e4ven k\u00e4nd som 'Puff-puff-t\u00e5get'? F\u00f6r att det designade systemet framg\u00e5ngsrikt ska ta sig fr\u00e5n prototypstadiet till att vara progressivt, m\u00e5ste dess grund uppfylla minimi kraven. <strong>KUNDE<\/strong>.<\/p>\n<p><\/p>\n<p>Som ett infrastrukturellt verktyg och grund f\u00f6r alla tj\u00e4nster l\u00e4ggs ytterligare en punkt till: anv\u00e4ndarv\u00e4nlighet f\u00f6r programmerare.<\/p>\n<p><\/p>\n<h3 id=\"orientirovannost-na-sobytiya\">H\u00e4ndelseorientering<\/h3>\n<p><\/p>\n<p>F\u00f6r att en applikation ska kunna v\u00e4xa fr\u00e5n en <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/sv\/server\/dts-los-angeles\/\"   title=\"servern\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"3480\">servern<\/a> till en kluster, m\u00e5ste dess arkitektur s\u00e4kerst\u00e4lla l\u00e5g koppling. Detta krav uppfylls av den asynkrona modellen. H\u00e4r tar avs\u00e4ndaren och mottagaren hand om den informativa belastningen av meddelandet och beh\u00f6ver inte oroa sig f\u00f6r \u00f6verf\u00f6ring och routing inom systemet.<\/p>\n<p><\/p>\n<h3 id=\"masshtabiruemost\">Skalbarhet<\/h3>\n<p><\/p>\n<p>Skalbarhet och effektivitet i systemet g\u00e5r hand i hand. Applikationens komponenter m\u00e5ste kunna anv\u00e4nda alla tillg\u00e4ngliga resurser. Ju mer effektivt vi kan anv\u00e4nda kraften och ju mer optimala v\u00e5ra bearbetningsmetoder \u00e4r, desto mindre kostar vi f\u00f6r utrustning. <\/p>\n<p><\/p>\n<p>Inom en maskin skapar Erlang en h\u00f6gkonkurrensutsatt milj\u00f6. Balansen mellan konkurrens och parallellitet kan st\u00e4llas in genom valet av antalet operativsystemstr\u00e5dar som \u00e4r tillg\u00e4ngliga f\u00f6r Erlang VM och antalet schemal\u00e4ggare som anv\u00e4nder dessa tr\u00e5dar.<br \/>\nErlang-processer har inget gemensamt tillst\u00e5nd och arbetar i icke-blockerande l\u00e4ge. Detta ger en relativt l\u00e5g latens och h\u00f6gre genomstr\u00f6mning j\u00e4mf\u00f6rt med traditionella applikationer byggda p\u00e5 blockerande synkronisering. Erlang-schemal\u00e4ggaren ansvarar f\u00f6r r\u00e4ttvis f\u00f6rdelning av CPU och IO, och avsaknaden av blockeringar g\u00f6r att applikationen kan svara \u00e4ven under spikbelastningsl\u00e4gen eller vid fel. <\/p>\n<p><\/p>\n<p>I klustran finns det ocks\u00e5 ett problem med resursutnyttjande. Det \u00e4r viktigt att alla maskiner i klustret \u00e4r j\u00e4mnt belastade och att n\u00e4tverket inte \u00e4r \u00f6verbelastat. T\u00e4nk dig f\u00f6ljande situation: anv\u00e4ndartrafik landar p\u00e5 de inkommande lastbalanserarna (haproxy, nginx, etc.), och de f\u00f6rdelar s\u00e5 j\u00e4mnt som m\u00f6jligt f\u00f6rfr\u00e5gningar f\u00f6r behandling mellan en upps\u00e4ttning tillg\u00e4ngliga backend-tj\u00e4nster. Inom applikationsinfrastrukturen \u00e4r tj\u00e4nsten som tillhandah\u00e5ller det n\u00f6dv\u00e4ndiga gr\u00e4nssnittet bara den sista milen och den beh\u00f6ver beg\u00e4ra flera andra tj\u00e4nster f\u00f6r att kunna svara p\u00e5 den ursprungliga f\u00f6rfr\u00e5gan. Internt beg\u00e4rningar kr\u00e4ver ocks\u00e5 routning och lastbalansering.<br \/>\nF\u00f6r att effektivt hantera datafl\u00f6den m\u00e5ste messaging tillhandah\u00e5lla utvecklarna ett gr\u00e4nssnitt f\u00f6r att hantera routning och lastdistribution. Tack vare detta kan utvecklarna, med hj\u00e4lp av mikrotj\u00e4nst m\u00f6nster (aggregator, proxy, kedja, gren, etc.), l\u00f6sa b\u00e5de standarduppgifter och s\u00e4llan f\u00f6rekommande problem. <\/p>\n<p><\/p>\n<p>Ur ett aff\u00e4rsperspektiv \u00e4r skalbarhet ett av verktygen f\u00f6r riskhantering. Det viktigaste \u00e4r att tillfredsst\u00e4lla kundernas krav genom att optimalt anv\u00e4nda utrustningen:<\/p>\n<p><\/p>\n<ul>\n<li>Vid \u00f6kad utrustningskapacitet som ett resultat av framsteg. Den kommer inte att st\u00e5 oanv\u00e4nd p\u00e5 grund av programvarans ofullkomlighet. Erlang skalar utm\u00e4rkt vertikalt och kan alltid utnyttja alla CPU-k\u00e4rnor och tillg\u00e4ngligt minne;<\/li>\n<li>I molnmilj\u00f6er kan vi hantera m\u00e4ngden utrustning beroende p\u00e5 nuvarande eller f\u00f6rv\u00e4ntad belastning och garantera SLA.<\/li>\n<\/ul>\n<p><\/p>\n<h3 id=\"otkazoustoychivost\">Fel-tolerans<\/h3>\n<p><\/p>\n<p>L\u00e5t oss \u00f6verv\u00e4ga tv\u00e5 axiom: \"Felk\u00e4llor \u00e4r oacceptabla\" och \"Felk\u00e4llor kommer alltid att finnas\". F\u00f6r verksamheten inneb\u00e4r programvarufel en f\u00f6rlust av pengar och, vad som \u00e4r v\u00e4rre, skada p\u00e5 rykte. Genom att balansera m\u00f6jliga f\u00f6rluster mot kostnaden f\u00f6r att utveckla felfri programvara kan man ofta hitta en kompromiss.<\/p>\n<p><\/p>\n<p>P\u00e5 kort sikt sparar en arkitektur med inbyggd felresistens pengar p\u00e5 att k\u00f6pa f\u00e4rdiga klusterl\u00f6sningar. De \u00e4r dyra, och de har ocks\u00e5 sina fel.<br \/>\nP\u00e5 l\u00e5ng sikt betalar sig en felresistent arkitektur flera g\u00e5nger om kostnaderna f\u00f6r dess anv\u00e4ndning i alla utvecklingsstadier.<br \/>\nMessaging inom kodbasen \u00e4r fortfarande under utveckling och m\u00f6jligg\u00f6r en detaljerad bearbetning av komponenternas interaktioner inom systemet. Detta f\u00f6renklar uppgiften att reagera p\u00e5 och hantera fel, eftersom alla ber\u00f6rda komponenter hanterar fel, och det slutliga systemet vet hur det automatiskt kan \u00e5terg\u00e5 till ett normalt tillst\u00e5nd efter ett fel by design.<\/p>\n<p><\/p>\n<h3 id=\"otzyvchivost\">Responsivitet<\/h3>\n<p><\/p>\n<p>Oavsett fel ska applikationen svara p\u00e5 f\u00f6rfr\u00e5gningar och uppfylla SLA. Verkligheten \u00e4r att m\u00e4nniskor inte vill v\u00e4nta, d\u00e4rf\u00f6r m\u00e5ste verksamheten anpassa sig. Allt fler applikationer f\u00f6rv\u00e4ntas ha h\u00f6g responsivitet.<br \/>\nResponsiva applikationer fungerar i en n\u00e4ra realtidsmilj\u00f6. Erlang VM fungerar i en mjuk realtidsmilj\u00f6. F\u00f6r vissa omr\u00e5den, s\u00e5som aktiehandel, medicin och hantering av industriell utrustning, \u00e4r en h\u00e5rd realtidsmilj\u00f6 viktigt.<br \/>\nResponsiva system f\u00f6rb\u00e4ttrar UX och \u00e4r f\u00f6rdelaktiga f\u00f6r verksamheten.<\/p>\n<p><\/p>\n<h2 id=\"predvaritelnyy-itog\">Prelimin\u00e4rt resultat<\/h2>\n<p><\/p>\n<p>N\u00e4r jag planerade denna artikel ville jag dela med mig av erfarenheten av att skapa en meddelandeutbytesbroker och bygga komplexa system baserade p\u00e5 den. Men den teoretiska och motivationsdelen blev ganska omfattande.<br \/>\nI den andra delen av artikeln kommer jag att ber\u00e4tta om nyanserna i implementeringen av utbytespunkter, meddelandeutbytesm\u00f6nster och deras till\u00e4mpning.<br \/>\nI den tredje delen kommer vi att titta p\u00e5 allm\u00e4nna fr\u00e5gor kring organisationen av tj\u00e4nster, rutten och lastbalansering. Vi kommer att diskutera den praktiska sidan av skalbarhet och systemens tillf\u00f6rlitlighet.<\/p>\n<p><\/p>\n<p>Slutet av f\u00f6rsta delen.<\/p>\n<p><\/p>\n<p>Foto <noindex><a rel=\"nofollow\" href=\"https:\/\/unsplash.com\/photos\/SRjZtxsK3Os\">@lucabravo<\/a><\/noindex>.<\/p>\n<p>K\u00e4lla: <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.4 - 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\/sv\/blog\/administrirovanie\/stroitelnye-bloki-raspredelennyh-prilozhenij-nulevoe-priblizhenie\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"sv_SE\" \/>\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\/sv\/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\udd47Byggblock f\u00f6r distribuerade applikationer. Nollapproximationsmetod | ProHoster","description":"","canonical_url":"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/stroitelnye-bloki-raspredelennyh-prilozhenij-nulevoe-priblizhenie","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sv_SE","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\/sv\/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\/sv\/wp-json\/wp\/v2\/posts\/30785","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/comments?post=30785"}],"version-history":[{"count":1,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts\/30785\/revisions"}],"predecessor-version":[{"id":162006,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts\/30785\/revisions\/162006"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media\/22770"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media?parent=30785"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/categories?post=30785"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/tags?post=30785"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}