1.1 Seni bina aplikasi
Kursus ini direka untuk pemula, kerana anda tidak akan mereka bentuk seni bina aplikasi yang serius untuk masa yang lama. Tetapi jangan risau, seni bina yang baik adalah pengecualian dan bukannya peraturan. Sangat sukar untuk memilih seni bina aplikasi yang betul sebelum membina aplikasi.
Contoh seni bina popular untuk aplikasi pelayan besar:
- Seni bina berlapis (Layered Architecture).
- Seni Bina Berperingkat.
- Seni Bina Berorientasikan Perkhidmatan (SOA).
- Seni bina perkhidmatan mikro (Seni Bina Perkhidmatan Mikro).
Setiap daripada mereka mempunyai kebaikan dan keburukan. Tetapi mempelajarinya tidak akan memberi anda apa-apa. Seni bina adalah jawapan kepada soalan "bagaimana untuk mengatur interaksi beribu-ribu objek dalam sistem" . Dan sehingga anda mengalami kerumitan penuh masalah, anda tidak akan dapat memahami fleksibiliti penuh penyelesaian.
Semua aplikasi menggunakan beberapa jenis seni bina, atau sekurang-kurangnya berpura-pura. Oleh itu, pengetahuan tentang pendekatan popular untuk reka bentuk aplikasi akan membolehkan anda memahami dengan cepat dan lebih baik cara aplikasi itu berfungsi. Dan ini bermakna membuat perubahan tepat di mana anda memerlukannya.
Apakah yang dimaksudkan dengan "membuat perubahan di mana perlu"? Adakah terdapat tempat yang anda tidak perlu membuat perubahan? Tepat sekali.
Untuk lebih spesifik, katakan anda sedang mengusahakan projek bahagian belakang sederhana . Ia telah ditulis selama 5 tahun oleh sepasukan 20 orang. Projek itu mengambil masa 100 tahun dan mengandungi kira-kira 100 ribu baris kod. Secara keseluruhan, ia terdiri daripada dua ribu kelas, yang dibahagikan kepada 10 modul dengan saiz yang berbeza.
Dan menambah realiti yang keras. Logik beberapa tugasan tersebar di beberapa modul. Juga, logik perniagaan boleh berada di bahagian hadapan (ditulis dalam JavaScript) dan / atau ditulis sebagai prosedur tersimpan terus dalam pangkalan data. Adakah anda masih pasti bahawa anda boleh menentukan dengan segera tempat untuk membuat perubahan ?
Ini bukan mimpi ngeri yang saya reka untuk menakutkan awak. Ini adalah projek biasa. Ia berlaku lebih teruk lagi. Kenapa ini terjadi? Terdapat beberapa sebab, tetapi hampir selalu ada seperti:
- Ramai orang bekerja pada projek itu - setiap daripada mereka melihatnya sedikit berbeza.
- Selama 5 tahun, 10 orang telah berubah dalam projek itu, pendatang baru tidak begitu memahaminya.
- Mencipta perisian adalah perubahan berterusan yang sentiasa mengubah segala-galanya.
- Lima tahun yang lalu, apabila kami membuat keputusan mengenai seni bina, idea projek itu agak berbeza.
Tetapi perkara utama ialah tanpa mengira seni bina projek, semua pengaturcara yang bekerja padanya mematuhi pemahaman yang sama tentang cara projek ini berfungsi. Mari kita mulakan dengan konsep paling mudah - seni bina pelayan-pelanggan.
1.2 Konsep interaksi pelanggan-pelayan
Kini kami akan memahami konsep yang mendasari seni bina pelayan-pelanggan dan akan membolehkan anda memahami dengan lebih baik bagaimana interaksi berjuta-juta program di Internet diatur.
Seperti namanya, konsep ini melibatkan dua pihak: klien dan pelayan . Segala-galanya seperti dalam kehidupan di sini: pelanggan adalah pelanggan perkhidmatan ini atau itu, dan pelayan adalah penyedia perkhidmatan. Pelanggan dan pelayan adalah program fizikal , contohnya klien biasa ialah pelayar .
Contoh berikut boleh diberikan sebagai pelayan:
- Pelayan web seperti Tomcat.
- Pelayan pangkalan data seperti MySQL.
- Gerbang pembayaran seperti Stripe.
Pelanggan dan pelayan biasanya berkomunikasi melalui Internet (walaupun mereka boleh bekerja dalam rangkaian kawasan tempatan yang sama dan secara umum dalam mana-mana jenis rangkaian lain). Komunikasi berlaku melalui protokol standard seperti HTTP, FTP atau protokol peringkat rendah seperti TCP atau UDP.
Protokol biasanya dipilih mengikut jenis perkhidmatan yang disediakan oleh pelayan. Sebagai contoh, jika ia adalah panggilan video, maka UDP biasanya digunakan.
Ingat bagaimana Tomcat dan servletnya berfungsi? Pelayan menerima mesej HTTP, membongkarnya, mengekstrak semua maklumat yang diperlukan dari sana dan menghantarnya ke servlet untuk diproses. Kemudian hasil pemprosesan dibungkus semula ke dalam respons HTTP dan dihantar kepada klien.
Ini adalah interaksi pelanggan-pelayan biasa. Pelayar ialah klien web dan Tomcat ialah pelayan web. Tomcat juga dipanggil pelayan web.
Tetapi jika difikirkan, bukan nama yang penting, tetapi intipati - pembahagian peranan antara program. Skrip JS anda yang berjalan dalam halaman HTML boleh dipanggil klien , dan servlet anda pelayan . Lagipun, mereka bekerja secara berpasangan dalam rangka konsep pelanggan-pelayan .
1.3 Satu nuansa penting
Perlu diingatkan juga bahawa interaksi klien-pelayan adalah berdasarkan prinsip bahawa interaksi tersebut dimulakan oleh klien : pelayan hanya menjawab klien dan melaporkan sama ada ia boleh menyediakan perkhidmatan kepada pelanggan dan, jika ya, atas syarat-syarat apa. .
Tidak kira di mana pelanggan berada secara fizikal dan di mana pelayan berada. Perisian klien dan perisian pelayan biasanya dipasang pada mesin yang berbeza, tetapi ia juga boleh dijalankan pada komputer yang sama.
Konsep ini dibangunkan sebagai langkah pertama ke arah memudahkan sistem yang kompleks. Dia mempunyai kekuatan ini:
- Penyederhanaan logik : pelayan tidak tahu apa-apa tentang klien dan bagaimana ia akan menggunakan datanya pada masa hadapan.
- Mungkin terdapat pelanggan yang lemah : semua tugas intensif sumber boleh dipindahkan ke pelayan.
- Pembangunan bebas kod pelanggan dan kod pelayan.
- Banyak pelanggan yang berbeza, contohnya Tomcat dan pelayar yang berbeza.
Versi paling asas interaksi antara klien dan pelayan ditunjukkan dalam gambar:
Adalah penting untuk mencatat dua butiran di sini. Pertama, gambar menunjukkan bahawa ramai pelanggan boleh mengakses satu pelayan. Kedua, mereka boleh mengaksesnya pada masa yang sama. Ini juga merupakan bahagian penting pelayan.
Satu pelanggan biasanya berinteraksi dengan satu pengguna, jadi selalunya kebenaran tidak diperlukan di sana. Walau bagaimanapun, pelayan memproses permintaan daripada beribu-ribu pelanggan, dan apabila membangunkan kod untuknya, anda perlu dapat membezakan antara kebenaran dan pengesahan.
Ia juga penting bahawa pelayan memproses beribu-ribu permintaan secara selari. Dan ini bermakna apabila membangunkan kod bahagian belakang, anda perlu sentiasa memikirkan tentang tugas akses serentak kepada sumber. Juga, kod pelayan mempunyai kebarangkalian keadaan perlumbaan yang sangat tinggi (perlumbaan benang), kebuntuan (saling menyekat benang).
Kitaran hayat objek penting mesti dipantau:
Anda tidak boleh hanya memulakan urutan baru pada pelayan melalui new Thread().start()
. Sebaliknya, anda perlu mempunyai ThreadPool yang akan berkongsi antara semua urutan perkhidmatan.
Selain itu, anda tidak boleh hanya memulakan tugas tak segerak, kerana ia juga dilaksanakan dalam urutan yang berasingan. Apabila membuat tugasan sedemikian, anda harus sentiasa mengetahui kumpulan benang yang melaksanakannya dan apa yang akan berlaku jika kolam sedemikian melimpah.
Semua kerja dengan fail dan direktori mesti dilakukan melalui cuba-dengan-sumber. Jika dalam aplikasi biasa anda terlupa untuk menutup aliran atau fail, adakah itu masalah? Ia akan menutup sendiri apabila anda keluar dari program. Tetapi jika anda terlupa untuk menutup fail pada pelayan di suatu tempat dalam kod, dan pelayan anda telah berjalan selama berbulan-bulan ... Tidak lama lagi, beribu-ribu fail yang tidak ditutup itu akan terkumpul dan OS akan berhenti membuka fail baru untuk membaca (bekerja dengan fail dikawal oleh OS). Ketua pasukan tidak akan menepuk kepala anda...
1.4 Seni bina pelayan-pelanggan
satu lagi perkara penting. Seni bina pelayan-pelanggan hanya mentakrifkan prinsip umum interaksi antara komputer , butiran interaksi ditentukan oleh pelbagai protokol.
Konsep ini (pelayan-pelanggan) memberitahu kita bahawa kita perlu membahagikan mesin pada rangkaian kepada mesin pelanggan, yang sentiasa memerlukan sesuatu, dan mesin pelayan, yang memberikan apa yang mereka perlukan. Dalam kes ini, pelanggan sentiasa memulakan interaksi, dan peraturan di mana interaksi berlaku diterangkan oleh protokol.
Terdapat dua jenis seni bina interaksi pelayan-pelanggan: yang pertama dipanggil seni bina pelayan-pelanggan dua peringkat , yang kedua ialah seni bina pelayan-pelanggan berbilang peringkat (kadangkala dipanggil seni bina tiga peringkat atau seni bina tiga peringkat, tetapi ini adalah kes khas).
Prinsip operasi seni bina dua peringkat interaksi klien-pelayan ialah pemprosesan permintaan berlaku pada satu pelayan tanpa merujuk kepada pelayan lain dalam proses pemprosesan ini.
Model interaksi pelanggan-pelayan dua peringkat boleh dilukis sebagai gambar rajah mudah.
Di sini anda boleh melihat bahawa tahap pertama adalah segala-galanya yang berkaitan dengan pelanggan, dan tahap kedua ialah segala-galanya yang berkaitan dengan pelayan.
GO TO FULL VERSION