Blok wangunan aplikasi disebarkeun. Nol perkiraan

Blok wangunan aplikasi disebarkeun. Nol perkiraan

Dunya teu cicing. Kamajuan nyiptakeun tantangan téknologi anyar. Luyu sareng sarat anu robih, arsitéktur sistem inpormasi kedah mekar. Dinten ieu kami bakal ngobrol ngeunaan arsitéktur acara-disetir, concurrency, concurrency, asynchrony, sarta kumaha anjeun bisa hirup damai kalayan sagala ieu di Erlang.

perkenalan

Gumantung kana ukuran sistem anu dirancang sareng sarat pikeun éta, kami, pamekar, milih metode pertukaran inpormasi dina sistem. Dina kalolobaan kasus, pikeun ngatur interaksi jasa, pilihan gawé bisa jadi skéma jeung calo, contona, dumasar RabbitMQ atanapi kafka. Tapi kadang aliran kajadian, SLA jeung tingkat kontrol leuwih sistem misalna yén olahtalatah siap-dijieun teu cocog pikeun urang. Tangtu, anjeun tiasa ngahesekeun sistem saeutik ku tanggung jawab lapisan angkutan jeung formasi klaster, Contona ngagunakeun ZeroMQ atanapi nanomsg. Tapi lamun sistem boga cukup throughput jeung kamampuhan tina hiji klaster Erlang baku, isu ngawanohkeun hiji éntitas tambahan merlukeun ulikan lengkep jeung leresan ékonomi.

Topik ngeunaan aplikasi disebarkeun réaktif cukup lega. Pikeun tetep dina format artikel, subyek diskusi dinten ieu ngan bakal homogen lingkungan diwangun dina Erlang / Elixir. Ékosistem Erlang / OTP ngidinan Anjeun pikeun nerapkeun arsitéktur réaktif kalawan jumlah pangsaeutikna usaha . Tapi dina sagala hal, urang bakal butuh lapisan olahtalatah.

Dasar téoritis

Desain dimimitian ku nangtukeun tujuan jeung konstrain. Tujuan utama henteu di wewengkon pangwangunan demi pangwangunan. Urang kedah kéngingkeun alat anu aman sareng tiasa skala dina dasar anu urang tiasa nyiptakeun sareng, anu paling penting, ngembangkeun aplikasi modéren tina sababaraha tingkatan: mimitian ti aplikasi server tunggal anu ngalayanan panongton leutik, anu engké tiasa janten klaster dugi ka 50 -60 titik, ditungtungan ku federations klaster. Ku kituna, tujuan utama nyaéta pikeun maksimalkeun pungsi kauntungan ku cara ngirangan biaya pangwangunan sareng kapamilikan sistem ahir.

Hayu urang nyorot 4 syarat utama pikeun sistem ahir:

  • Сacara-berorientasi.
    Sistem sok siap nembus aliran kajadian sareng ngalaksanakeun tindakan anu diperyogikeun;
  • Мskalabilitas.
    Blok individu tiasa diskalakeun sacara vertikal sareng horisontal. Sakabéh sistem kudu sanggup tumuwuh horisontal tanpa wates;
  • Оtoleransi kasalahan.
    Sadaya tingkat sareng sadaya jasa kedah tiasa pulih sacara otomatis tina kagagalan;
  • Гwaktos respon dijamin.
    Waktos berharga sareng pangguna henteu kedah ngantosan panjang teuing.

Inget dongeng heubeul ngeunaan "The saeutik mesin nu bisa"? Supados sistem anu dirarancang suksés kaluar tina tahap prototipe sareng janten progresif, yayasanna kedah nyumponan sarat minimal. SMOG.

Hiji deui titik ditambahkeun kana olahtalatah salaku alat infrastruktur jeung dasar pikeun sakabéh jasa: betah pamakéan pikeun programer.

Berorientasi acara

Pikeun hiji aplikasi tumuwuh tina server tunggal ka klaster, arsitéktur na kudu ngarojong gandeng leupas. Modél asynchronous minuhan sarat ieu. Di jerona, pangirim sareng panarima paduli ngeunaan beban inpormasi pesen sareng henteu hariwang ngeunaan pangiriman sareng rute dina sistem.

Skalabilitas

Skalabilitas sareng efisiensi sistem aya di gigireun masing-masing. Komponén aplikasi kedah tiasa ngamangpaatkeun sadaya sumber daya anu aya. Beuki éfisién urang tiasa ngamangpaatkeun kapasitas sareng metode pangolahan anu langkung optimal, langkung seueur artos anu urang belanjakeun pikeun alat.

Dina hiji mesin tunggal, Erlang nyiptakeun lingkungan anu kompetitif pisan. Kasaimbangan antara konkurensi sareng paralelisme tiasa diatur ku milih jumlah benang sistem operasi anu sayogi pikeun Erlang VM sareng jumlah penjadwal anu ngagunakeun benang ieu.
Prosés Erlang henteu ngabagi kaayaan sareng beroperasi dina modeu non-blocking. Ieu nyadiakeun latency rélatif low jeung throughput luhur batan aplikasi dumasar blocking tradisional. scheduler Erlang mastikeun alokasi adil tina CPU jeung IO, sarta henteuna blocking ngamungkinkeun aplikasi pikeun ngabales sanajan salila beban puncak atawa gagal.

Dina tingkat klaster, masalah sareng pembuangan ogé aya. Kadé sadaya mesin dina kluster dimuat merata sarta yén jaringan teu overloaded. Hayu urang ngabayangkeun kaayaan: lalulintas pamaké darat on balancers asup (haproxy, nginx, jsb), aranjeunna ngadistribusikaeun requests processing sakumaha merata sabisa antara susunan backends sadia. Dina infrastruktur aplikasi, ladenan anu ngalaksanakeun antarbeungeut anu dibutuhkeun ngan ukur mil terakhir sareng kedah nyuhunkeun sajumlah jasa anu sanés pikeun ngaréspon kana pamundut awal. requests internal ogé merlukeun routing na balancing.
Pikeun ngatur aliran data sacara efektif, olahtalatah kedah nyayogikeun pangembang antarmuka pikeun ngatur rute sareng balancing beban. Hatur nuhun kana ieu, pamekar bakal tiasa, ngagunakeun pola microservice (agrégator, proxy, ranté, cabang, jsb), pikeun ngajawab duanana masalah standar jeung nu jarang timbul.

Tina sudut pandang bisnis, skalabilitas mangrupikeun salah sahiji alat manajemén résiko. Hal utama nyaéta pikeun nyugemakeun pamundut palanggan ku cara optimal ngagunakeun alat-alat:

  • Nalika kakuatan parabot naek salaku hasil tina kamajuan. Éta moal dianggurkeun kusabab parangkat lunak anu teu sampurna. Erlang skala vertikal ogé sarta bakal salawasna bisa ngamangpaatkeun sakabéh cores CPU jeung memori sadia;
  • Dina lingkungan awan, urang tiasa ngatur jumlah alat gumantung kana beban ayeuna atanapi diprediksi sareng ngajamin SLA.

toleransi kasalahan

Hayu urang nganggap dua aksioma: "Kagagalan teu bisa ditarima" jeung "Aya salawasna gagal". Pikeun bisnis, kagagalan software hartina leungitna duit, sarta naon parah, leungitna reputasi. Nyaimbangkeun antara kamungkinan karugian sareng biaya ngembangkeun parangkat lunak anu teu toleran, kompromi sering tiasa dipendakan.

Dina istilah pondok, hiji arsitéktur nu incorporates kasabaran sesar ngaheéat duit dina purchasing off-the-rak solusi clustering. Aranjeunna mahal jeung maranéhna ogé boga bug.
Dina jangka panjang, arsitéktur lepat-toleran mayar sorangan sababaraha kali leuwih dina sagala tahapan pangwangunan.
Olahtalatah dina dasar kode ngamungkinkeun anjeun ngerjakeun sacara rinci interaksi komponén dina sistem dina tahap pamekaran. Ieu nyederhanakeun tugas pikeun ngaréspon sareng ngatur kagagalan, sabab sadaya komponén kritis nanganan kagagalan, sareng sistem anu hasilna terang kumaha otomatis balik deui ka normal saatos gagal ku desain.

Tanggapan

Paduli gagalna, aplikasi kudu ngabales requests sarta minuhan SLA. Kanyataanana nyaéta jalma-jalma henteu hoyong ngantosan, janten usaha kedah adaptasi sasuai. Langkung seueur aplikasi anu diperkirakeun janten responsif pisan.
Aplikasi responsif beroperasi dina ampir waktu nyata. Erlang VM beroperasi dina modeu real-time lemes. Pikeun sababaraha daérah, sapertos dagang saham, ubar, sareng kontrol alat-alat industri, modeu hard-real-time penting.
Sistem responsif ningkatkeun UX sareng nguntungkeun bisnis.

Ringkesan awal

Nalika ngarencanakeun tulisan ieu, kuring hoyong bagikeun pangalaman kuring pikeun nyiptakeun calo olahtalatah sareng ngawangun sistem kompleks dumasar kana éta. Tapi bagian téoritis jeung motivational tétéla cukup éksténsif.
Dina bagian kadua tulisan, kuring bakal ngobrol ngeunaan nuansa ngalaksanakeun titik bursa, pola olahtalatah sareng aplikasina.
Dina bagian katilu urang bakal mertimbangkeun isu umum ngeunaan jasa pangatur, routing na balancing. Hayu urang ngobrol ngeunaan sisi praktis tina skalabilitas sareng kasabaran kasalahan sistem.

Tungtung bagian kahiji.

poto @lucabravo.

sumber: www.habr.com

Tambahkeun komentar