Blok bangunan aplikasi sing disebarake. Kira-kira nol

Blok bangunan aplikasi sing disebarake. Kira-kira nol

Jagad ora mandheg. Kemajuan nggawe tantangan teknologi anyar. Sesuai karo syarat sing owah, arsitektur sistem informasi kudu berkembang. Dina iki kita bakal pirembagan bab arsitektur acara-mimpin, concurrency, concurrency, asynchrony, lan carane sampeyan bisa manggon tentrem karo kabeh iki ing Erlang.

Pambuka

Gumantung saka ukuran sistem sing dirancang lan syarat kasebut, kita, pangembang, milih cara ijol-ijolan informasi ing sistem kasebut. Umume kasus, kanggo ngatur interaksi layanan, pilihan sing bisa digunakake bisa dadi skema karo broker, contone, adhedhasar RabbitMQ utawa kafka. Nanging kadhangkala aliran acara, SLA lan tingkat kontrol liwat sistem kuwi olahpesen siap-digawe ora cocok kanggo kita. Mesthi, sampeyan bisa complicate sistem sethitik dening njupuk tanggung jawab kanggo lapisan transportasi lan tatanan kluster, contone, nggunakake ZeroMQ utawa nanomsg. Nanging yen sistem wis cukup throughput lan kabisan kluster Erlang standar, banjur Jeksa Agung bisa ngetokake saka ngenalke entitas tambahan mbutuhake sinau rinci lan sabdhoning ekonomi.

Topik babagan aplikasi sing disebarake reaktif cukup jembar. Supaya tetep ing format artikel, subyek diskusi dina iki mung bakal dadi lingkungan homogen dibangun ing Erlang / Elixir. Ekosistem Erlang / OTP ngidini sampeyan ngleksanakake arsitektur reaktif kanthi gaweyan paling sithik. Nanging ing kasus apa wae, kita butuh lapisan olahpesen.

Basis teoretis

Desain diwiwiti kanthi nemtokake tujuan lan kendala. Tujuan utama ora ing wilayah pembangunan kanggo kepentingan pembangunan. Kita kudu entuk alat sing aman lan bisa diukur kanthi basis sing bisa digawe lan, sing paling penting, ngembangake aplikasi modern saka macem-macem tingkat: wiwit saka aplikasi siji-server sing nglayani pamirsa cilik, sing mengko bisa berkembang dadi klompok nganti 50 -60 simpul, pungkasan karo federasi kluster. Mangkono, tujuan utama yaiku nggedhekake bathi kanthi nyuda biaya pangembangan lan kepemilikan sistem pungkasan.

Ayo kita nyorot 4 syarat utama kanggo sistem pungkasan:

  • Π‘acara-oriented.
    Sistem kasebut tansah siyap ngliwati aliran acara lan nindakake tindakan sing perlu;
  • Мskalabilitas.
    Blok individu bisa diukur kanthi vertikal lan horisontal. Kabeh sistem kudu bisa tuwuh horisontal tanpa wates;
  • Оtoleransi kesalahan.
    Kabeh level lan kabeh layanan kudu bisa pulih kanthi otomatis saka kegagalan;
  • Π“wektu nanggepi dijamin.
    Wektu iku penting lan pangguna ora kudu ngenteni suwe.

Elingi dongeng lawas babagan "Mesin cilik sing bisa"? Supaya sistem sing dirancang bisa sukses metu saka tahap prototipe lan dadi progresif, dhasare kudu memenuhi syarat minimal. SMOG.

Siji titik liyane ditambahake ing olahpesen minangka alat infrastruktur lan basis kanggo kabeh layanan: gampang digunakake kanggo programer.

Berorientasi acara

Kanggo aplikasi tuwuh saka server siji menyang kluster, arsitektur kudu ndhukung kopling sing longgar. Model asinkron memenuhi syarat iki. Ing kono, pangirim lan panampa peduli babagan beban informasi pesen lan aja kuwatir babagan transmisi lan rute ing sistem kasebut.

Skalabilitas

Skalabilitas lan efisiensi sistem ana ing jejere. Komponen aplikasi kudu bisa nggunakake kabeh sumber daya sing kasedhiya. Sing luwih efisien kita bisa nggunakake kapasitas lan cara pangolahan sing luwih optimal, luwih sithik dhuwit sing kita gunakake kanggo peralatan.

Ing siji mesin, Erlang nggawe lingkungan sing kompetitif. Keseimbangan antarane konkurensi lan paralelisme bisa disetel kanthi milih jumlah utas sistem operasi sing kasedhiya kanggo Erlang VM lan jumlah penjadwal sing nggunakake benang kasebut.
pangolahan Erlang ora nuduhake negara lan operate ing mode non-blocking. Iki nyedhiyakake latency sing relatif kurang lan throughput sing luwih dhuwur tinimbang aplikasi adhedhasar pamblokiran tradisional. Penjadwal Erlang njamin alokasi CPU lan IO sing padha, lan ora ana pamblokiran ngidini aplikasi kasebut bisa nanggapi sanajan ana beban utawa gagal.

Ing tingkat kluster, masalah karo pembuangan uga ana. Penting kabeh mesin ing kluster dimuat roto-roto lan jaringan ora overloaded. Ayo mbayangno kahanan: lalu lintas pangguna mlebu ing balancers mlebu (haproxy, nginx, etc), padha nyebarake panjalukan pangolahan kanthi merata ing antarane set backend sing kasedhiya. Ing infrastruktur aplikasi, layanan sing ngetrapake antarmuka sing dibutuhake mung mil pungkasan lan kudu njaluk sawetara layanan liyane kanggo nanggapi panjalukan awal. Panjaluk internal uga mbutuhake rute lan imbangan.
Kanggo ngatur aliran data kanthi efektif, olahpesen kudu menehi antarmuka pangembang kanggo ngatur rute lan imbangan muatan. Thanks kanggo iki, pangembang bakal bisa, nggunakake pola microservice (aggregator, proxy, chain, cabang, etc), kanggo ngatasi loro masalah standar lan sing arang muncul.

Saka sudut pandang bisnis, skalabilitas minangka salah sawijining alat manajemen risiko. Ingkang utama yaiku kanggo nyukupi panjaluk pelanggan kanthi nggunakake peralatan kanthi optimal:

  • Nalika daya peralatan mundhak minangka asil saka kemajuan. Ora bakal nganggur amarga piranti lunak sing ora sampurna. Erlang timbangan vertikal uga lan bakal tansah bisa kanggo nggunakke kabeh intine CPU lan memori kasedhiya;
  • Ing lingkungan maya, kita bisa ngatur jumlah peralatan gumantung saka beban saiki utawa diprediksi lan njamin SLA.

toleransi kesalahan

Ayo nimbang loro aksioma: "Gagal ora bisa ditampa" lan "Ana mesthi gagal." Kanggo bisnis, kegagalan piranti lunak tegese mundhut dhuwit, lan sing luwih elek, ilang reputasi. Ngimbangi antarane kemungkinan kerugian lan biaya ngembangake piranti lunak sing tahan kesalahan, kompromi asring ditemokake.

Ing wektu sing cendhak, arsitektur sing nggabungake toleransi kesalahan ngirit dhuwit kanggo tuku solusi clustering sing ora ana. Padha larang lan uga duwe kewan omo.
Ing jangka panjang, arsitektur fault-tolerant mbayar dhewe kaping pirang-pirang ing kabeh tahap pangembangan.
Pesen ing basis kode ngidini sampeyan ngupayakake kanthi rinci interaksi komponen ing sistem ing tahap pangembangan. Iki nyederhanakake tugas kanggo nanggapi lan ngatur kegagalan, amarga kabeh komponen kritis nangani kegagalan, lan sistem sing diasilake ngerti carane kanthi otomatis bali menyang normal sawise gagal kanthi desain.

Tanggung jawab

Preduli saka gagal, aplikasi kudu nanggapi panjalukan lan ketemu SLA. Kasunyatane yaiku wong ora pengin ngenteni, mula bisnis kudu adaptasi. Luwih akeh aplikasi sing dikarepake bakal responsif banget.
Aplikasi responsif beroperasi ing wektu nyata. Erlang VM makaryakke ing mode nyata-wektu alus. Kanggo sawetara wilayah, kayata perdagangan saham, obat-obatan, lan kontrol peralatan industri, mode wektu nyata sing angel penting.
Sistem responsif nambah UX lan entuk manfaat kanggo bisnis.

Ringkesan awal

Nalika ngrancang artikel iki, aku pengin nuduhake pengalaman nggawe makelar olahpesen lan mbangun sistem kompleks adhedhasar. Nanging bagean teoretis lan motivasi dadi cukup ekstensif.
Ing bagean kapindho artikel, aku bakal ngomong babagan nuansa ngleksanakake titik ijol-ijolan, pola olahpesen lan aplikasi.
Ing bagean katelu kita bakal nimbang masalah umum ngatur layanan, routing lan balancing. Ayo dadi pirembagan bab sisih praktis saka skalabilitas lan fault toleransi sistem.

Pungkasan bagean pisanan.

Photography @lucabravo.

Source: www.habr.com

Add a comment