Pengenalan kepada seni bina tiga peringkat

Seni bina tiga peringkat ialah seni bina interaksi yang paling biasa di Internet. Ia muncul apabila bahagian pelayan dua peringkat dibahagikan kepada dua bahagian: lapisan logik dan lapisan data .

Ia kelihatan seperti ini:

Lapisan klien ialah sebahagian daripada "aplikasi teragih" yang bertanggungjawab untuk interaksi pengguna. Lapisan ini tidak sepatutnya mengandungi logik perniagaan dan tidak boleh menyimpan data kritikal. Juga, ia tidak seharusnya berinteraksi dengan lapisan pangkalan data secara langsung, tetapi hanya melalui lapisan logik perniagaan.

Walau bagaimanapun, masih terdapat beberapa logik di sini. Pertama, ini adalah interaksi dengan pengguna melalui antara muka, pengesahan data yang dimasukkan olehnya, bekerja dengan fail tempatan. Ini juga termasuk semua yang berkaitan dengan kebenaran pengguna dan penyulitan data apabila bekerja dengan pelayan.

Kedua, ia adalah logik perniagaan yang mudah. Contohnya, jika kedai dalam talian menghantar senarai produk, kami boleh mengisih dan menapisnya di sebelah pelanggan. Dan storan data primitif juga ada di sini: caching, kuki pengguna log masuk, dan seumpamanya.

Lapisan logik perniagaan terletak di peringkat kedua, kebanyakan logik perniagaan tertumpu padanya. Di luarnya, hanya serpihan yang dieksport ke klien, serta elemen logik yang direndam dalam pangkalan data (prosedur dan pencetus tersimpan) kekal.

Sebahagian besar pelayan logik perniagaan mengandungi bukan sahaja logik yang sama ini, tetapi juga menyelesaikan masalah penskalaan: kod dibahagikan kepada bahagian dan diedarkan kepada pelayan yang berbeza. Sesetengah perkhidmatan yang sangat dituntut boleh dijalankan pada berpuluh-puluh pelayan. Beban di antara mereka diuruskan oleh pengimbang beban.

Aplikasi pelayan biasanya direka sedemikian rupa sehingga satu lagi salinan pelayan boleh dilancarkan dengan mudah dan mula bekerja dengan kerjasama salinan lain daripadanya. Iaitu, walaupun dalam proses menulis kod pelayan, anda tidak akan mendapat jaminan bahawa kelas statik anda dilancarkan dalam satu kejadian.

Lapisan data menyediakan penyimpanan data dan diletakkan pada tahap yang berasingan, dilaksanakan, sebagai peraturan, melalui sistem pengurusan pangkalan data (DBMS), sambungan ke komponen ini hanya disediakan dari peringkat pelayan aplikasi.

Sebab untuk memisahkan lapisan data

Pemisahan lapisan data menjadi lapisan ketiga sepenuhnya berlaku atas banyak sebab, tetapi yang utama ialah peningkatan beban pada pelayan.

Pertama, pangkalan data mula memerlukan banyak memori dan masa pemproses untuk pemprosesan data. Oleh itu, mereka mula diletakkan di mana-mana pada pelayan berasingan.

Dengan peningkatan beban, bahagian belakang dengan mudah boleh diduplikasi dan sepuluh salinan satu pelayan boleh dinaikkan, tetapi adalah mustahil untuk menduplikasi pangkalan data - pangkalan data masih kekal sebagai komponen tunggal dan tidak boleh dibahagikan sistem.

Kedua, pangkalan data telah menjadi pintar - mereka mempunyai logik perniagaan mereka sendiri. Mereka mula menyokong prosedur tersimpan, pencetus, bahasa mereka sendiri seperti PLSQL. Malah pengaturcara muncul yang mula menulis kod yang berjalan di dalam DBMS.

Semua logik yang tidak terikat dengan data telah dibawa keluar ke bahagian belakang dan dilancarkan secara selari pada berpuluh-puluh pelayan. Segala-galanya yang terikat secara kritikal dengan data kekal di dalam DBMS, dan sudah ada masalah peningkatan beban perlu diselesaikan menggunakan kaedah kami sendiri:

  • Kluster pangkalan data ialah sekumpulan pelayan pangkalan data yang menyimpan data yang sama dan menyegerakkannya menggunakan protokol tertentu.
  • Sharding - data dibahagikan kepada blok logik dan diedarkan merentasi pelayan pangkalan data yang berbeza. Sangat sukar untuk mengekalkan perubahan pangkalan data dengan pendekatan ini.
  • Pendekatan NoSQL adalah untuk menyimpan data dalam pangkalan data yang dibina untuk menyimpan sejumlah besar data. Ini selalunya bukan pangkalan data, tetapi storan fail tertentu. Fungsi yang sangat lemah berbanding dengan pangkalan data hubungan.
  • Cache data. Daripada cache mudah di peringkat pangkalan data, keseluruhan caching DBMS muncul, yang menyimpan hasilnya hanya dalam ingatan.

Adalah jelas bahawa orang yang berasingan dan / atau keseluruhan pasukan diperlukan untuk mengurus zoo teknologi pelayan ini, yang membawa kepada pengalihan keluar lapisan data ke dalam lapisan yang berasingan.

Penting! Semua teknologi canggih dilahirkan dalam kedalaman syarikat IT yang besar, apabila pendekatan lama tidak lagi menghadapi cabaran baharu. Membuat pangkalan data menjadi lapisan berasingan tidak dicipta oleh mana-mana pengaturcara, tetapi oleh sekumpulan jurutera di suatu tempat di kedalaman Oracle atau IBM.

Menarik! Apabila Zuckerberg mula menulis Facebook, dia hanya menggunakan PHP + MySQL. Apabila terdapat berjuta-juta pengguna, mereka menulis penterjemah khas yang menterjemah semua kod PHP ke dalam C ++ dan menyusunnya ke dalam kod mesin asli.

Selain itu, MySQL tidak mampu menyimpan data berbilion-bilion pengguna, jadi Facebook membangunkan konsep pangkalan data NoSQL dan menulis DBMS NoSQL sisi pelayan yang berkuasa - Cassandra. By the way, ia ditulis sepenuhnya dalam Java.

Kekaburan lokasi logik aplikasi

Dan walaupun seni bina tiga peringkat hampir mengagihkan peranan secara jelas antara bahagiannya, tidak selalu mungkin untuk menentukan dengan tepat di mana dalam sistem bahagian baharu logik perniagaan (kod baharu) perlu ditambah.

Contoh kekaburan tersebut ditunjukkan dalam gambar di bawah:

Bahagian pelayan diisi dengan latar belakang kelabu, bahagian klien diisi dengan warna putih. Contoh yang baik bagi pendekatan yang terakhir (paling kanan) ialah apl mudah alih moden. Bahagian klien (pada telefon) mengandungi paparan (paparan), logik dan data. Dan hanya kadang-kadang data ini disegerakkan dengan pelayan.

Contoh pilihan paling kiri ialah pelayan PHP biasa, yang mempunyai semua logik pada pelayan, dan ia memberikan klien HTML sudah statik. Di suatu tempat di antara dua ekstrem ini, projek anda akan ditempatkan.

Pada permulaan kerja, selepas anda membiasakan diri dengan projek itu, anda perlu berunding dengan pengaturcara yang bekerja di atasnya, tentang tempat di mana lebih baik untuk anda melaksanakan logik tugas seterusnya.

Jangan ragu untuk berbuat demikian. Pertama, mereka tidak memanjat ke biara orang lain dengan piagam mereka. Kedua, lebih mudah untuk semua orang (dan anda juga) untuk mencari kod yang anda perlukan di tempat yang anda jangkakan untuk menemuinya.