KodeGym/Kursus Jawa/3. modul/Arsitektur klien-server

Arsitektur klien-server

tingkat, wulangan
kasedhiya

1.1 Arsitektur aplikasi

Kursus iki dirancang kanggo pamula, amarga sampeyan ora bakal ngrancang arsitektur aplikasi serius kanggo dangu. Nanging aja kuwatir, arsitektur apik minangka pangecualian tinimbang aturan. Pancen angel banget kanggo milih arsitektur aplikasi sing tepat sadurunge nggawe aplikasi kasebut.

Conto arsitektur populer kanggo aplikasi server gedhe:

  • Arsitektur berlapis (Layered Architecture).
  • Arsitektur Tiered.
  • Service Oriented Architecture (SOA).
  • Arsitektur Microservice (Microservice Architecture).

Saben wong duwe pro lan kontra. Nanging sinau mau ora bakal menehi apa-apa. Arsitektur minangka jawaban kanggo pitakonan "carane ngatur interaksi ewonan obyek ing sistem" . Lan nganti sampeyan nemu kerumitan lengkap masalah, sampeyan ora bakal bisa ngerti versatility lengkap saka solusi.

Kabeh aplikasi nggunakake sawetara jinis arsitektur, utawa paling ndalang. Mula, kawruh babagan pendekatan populer kanggo desain aplikasi bakal ngidini sampeyan luwih cepet lan luwih ngerti cara aplikasi kasebut. Lan tegese nggawe owah-owahan persis ing ngendi sampeyan butuh.

Apa tegese "nggawe owah-owahan yen perlu"? Apa ana panggonan sing ora perlu owah-owahan? Persis.

Kanggo luwih spesifik, umpamane sampeyan lagi nggarap proyek backend medium . Wis 5 taun ditulis dening tim 20 wong. Proyèk kasebut njupuk 100 taun lan ngemot sekitar 100 ewu baris kode. Secara total, ana rong ewu kelas, sing dipérang dadi 10 modul kanthi ukuran sing béda.

Lan nambah kasunyatan atos. Logika sawetara tugas nyebar ing sawetara modul. Uga, logika bisnis bisa ana ing frontend (ditulis ing JavaScript) lan / utawa ditulis minangka prosedur sing disimpen langsung ing database. Apa sampeyan isih yakin manawa sampeyan bisa langsung nemtokake papan kanggo nggawe owah-owahan ?

Iki dudu ngimpi elek sing dakkarepake kanggo medeni sampeyan. Iki minangka proyek khas. Mengkono malah luwih elek. Yagene iki kedadeyan? Bisa uga ana sawetara alasan, nanging meh tansah ana:

  • Akeh wong sing nggarap proyek kasebut - saben wong ndeleng kanthi beda.
  • Sajrone 5 taun, 10 wong wis diganti ing proyek kasebut, wong anyar ora ngerti akeh.
  • Nggawe piranti lunak minangka owah-owahan sing terus-terusan sing ngganti kabeh.
  • Limang taun kepungkur, nalika kita mutusake babagan arsitektur, ide proyek kasebut rada beda.

Nanging sing paling penting yaiku preduli saka arsitektur proyek kasebut, kabeh programer sing nggarap iku padha karo pemahaman sing padha babagan cara kerja proyek iki. Ayo diwiwiti kanthi konsep sing paling gampang - arsitektur klien-server.

1.2 Konsep interaksi klien-server

Saiki kita bakal ngerti konsep sing ndasari arsitektur klien-server lan bakal ngidini sampeyan luwih ngerti carane interaksi jutaan program ing Internet diatur.

Minangka jeneng kasebut, konsep iki kalebu rong pihak: klien lan server . Kabeh kaya ing urip ing kene: klien minangka pelanggan layanan iki utawa kasebut, lan server minangka panyedhiya layanan. Klien lan server minangka program fisik , contone klien khas yaiku browser .

Conto ing ngisor iki bisa diwenehake minangka server:

  • Server web kayata Tomcat.
  • Server database kayata MySQL.
  • Gateway pembayaran kaya Stripe.

Klien lan server biasane komunikasi liwat Internet (sanajan bisa digunakake ing jaringan area lokal sing padha lan umume ing jinis jaringan liyane). Komunikasi dumadi liwat protokol standar kayata HTTP, FTP, utawa protokol tingkat ngisor kayata TCP utawa UDP.

Protokol kasebut biasane dipilih miturut jinis layanan sing diwenehake dening server. Contone, yen telpon video, banjur UDP biasane digunakake.

Elinga carane Tomcat lan servlets bisa digunakake? Server nampa pesen HTTP, mbongkar, ngekstrak kabeh informasi sing dibutuhake saka kono lan dikirim menyang servlet kanggo diproses. Banjur asil pangolahan dikemas maneh menyang respon HTTP lan dikirim menyang klien.

Iki minangka interaksi klien-server sing khas. Browser minangka klien web lan Tomcat minangka server web. Tomcat malah diarani server web.

Nanging yen sampeyan mikir babagan iki, ora jeneng sing penting, nanging inti - distribusi peran antarane program. Skrip JS sampeyan mlaku ing kaca HTML bisa uga diarani klien , lan servlet sampeyan minangka server . Sawise kabeh, dheweke kerja kanthi pasangan ing kerangka konsep klien-server .

1.3 Nuansa penting

Sampeyan uga kudu dicathet yen interaksi klien-server adhedhasar prinsip yen interaksi kasebut diwiwiti dening klien : server mung njawab klien lan nglaporake manawa bisa nyedhiyakake layanan kasebut menyang klien lan, yen mangkono, ing kahanan apa. .

Ora preduli ing ngendi klien dumunung sacara fisik lan ing ngendi server kasebut. Piranti lunak klien lan piranti lunak server biasane diinstal ing mesin sing beda-beda, nanging uga bisa mlaku ing komputer sing padha.

Konsep iki dikembangake minangka langkah pisanan kanggo nyederhanakake sistem sing kompleks. Dheweke duwe kekuwatan iki:

  • Penyederhanaan logika : server ora ngerti apa-apa babagan klien lan carane bakal nggunakake data ing mangsa ngarep.
  • Bisa uga ana klien sing ringkih : kabeh tugas intensif sumber daya bisa ditransfer menyang server.
  • Pangembangan independen kode klien lan kode server.
  • Akeh klien beda, contone Tomcat lan browser beda.

Versi paling dhasar saka interaksi antarane klien lan server ditampilake ing gambar:

klien-server

Penting kanggo nyathet rong rincian ing kene. Pisanan, gambar nuduhake manawa akeh klien bisa ngakses siji server. Kapindho, padha bisa ngakses ing wektu sing padha. Iki uga minangka bagéyan penting saka server.

Siji klien biasane sesambungan karo siji pangguna, saengga asring wewenang ora dibutuhake ing kana. Nanging, server ngolah panjaluk saka ewu klien, lan nalika ngembangake kode kasebut, sampeyan kudu bisa mbedakake antarane wewenang lan otentikasi.

Sampeyan uga penting yen server ngolah ewu panjalukan kanthi paralel. Lan iki tegese nalika ngembangake kode backend, sampeyan kudu terus mikir babagan tugas akses bebarengan menyang sumber daya. Uga, kode server nduweni kemungkinan dhuwur banget kanggo kondisi balapan (balapan benang), deadlock (pamblokiran benang).

Siklus urip obyek penting kudu dipantau:

Sampeyan ora bisa mung miwiti thread anyar ing server liwat new Thread().start(). Nanging, sampeyan kudu duwe ThreadPool sing bakal nuduhake antarane kabeh utas layanan.

Uga, sampeyan ora bisa mung miwiti tugas bedo, amarga padha uga dieksekusi ing Utas kapisah. Nalika nggawe tugas kasebut, sampeyan kudu ngerti manawa blumbang benang sing ditindakake lan apa sing bakal kedadeyan yen blumbang kasebut kebanjiran.

Kabeh karya karo file lan direktori kudu rampung liwat try-with-resources. Yen ing aplikasi normal sampeyan kelalen nutup stream utawa file, iku masalah? Iku bakal nutup dhewe nalika sampeyan metu saka program. Nanging yen sampeyan kelalen nutup file ing server nang endi wae ing kode, lan server sampeyan wis mlaku pirang-pirang wulan ... Ora suwe, ewonan file sing ora ditutup bakal nglumpukake lan OS bakal mandheg mbukak file anyar kanggo maca (bisa nganggo file. dikontrol dening OS). Teamlead ora bakal nepuk sirah sampeyan ...

1.4 Arsitektur klien-server

titik penting liyane. Arsitektur klien-server nemtokake mung prinsip umum interaksi antarane komputer , rincian interaksi ditemtokake dening macem-macem protokol.

Konsep iki (klien-server) ngandhani yen kita kudu dibagi mesin ing jaringan menyang mesin klien, kang tansah perlu soko, lan mesin server, kang menehi apa padha kudu. Ing kasus iki, klien tansah miwiti interaksi, lan aturan sing interaksi kasebut diterangake dening protokol.

Ana rong jinis arsitektur interaksi klien-server: sing pisanan diarani arsitektur klien-server loro, sing kapindho yaiku arsitektur klien-server multi-tier (kadhangkala disebut arsitektur telung tingkat utawa arsitektur telung tingkat, nanging iki kasus khusus).

Prinsip operasi arsitektur loro-tingkat interaksi klien-server yaiku pangolahan panjalukan dumadi ing siji server tanpa ngrujuk menyang server liyane ing proses pangolahan iki.

Model interaksi klien-server rong tingkat bisa digambar minangka diagram prasaja.

arsitektur klien-server rong tingkat

Ing kene sampeyan bisa ndeleng manawa level pertama yaiku kabeh sing ana gandhengane karo klien, lan level kapindho yaiku kabeh sing ana gandhengane karo server.

Komentar
  • Popular
  • Anyar
  • lawas
Sampeyan kudu mlebu kanggo ninggalake komentar
Kaca iki durung duwe komentar