Desain wadah web
Mengembangkan wadah web melibatkan banyak teknologi di berbagai tingkatan, seperti pengetahuan tentang lapisan komunikasi, pengetahuan tentang tingkat bahasa program, dll., Dan wadah web yang tersedia adalah sistem yang relatif besar, dan butuh waktu lama untuk menjelaskannya dengan jelas. Artikel ini bertujuan untuk memperkenalkan cara merancang wadah web, hanya membahas ide -ide implementasi, dan tidak melibatkan terlalu banyak implementasi spesifik. Pecahkan menjadi beberapa modul dan komponen. Setiap modul komponen bertanggung jawab untuk berbagai fungsi. Gambar berikut mencantumkan beberapa komponen dasar dan memperkenalkan setiap komponen.
Terhubung ke penerima
Tanggung jawab utama adalah mendengarkan apakah ada koneksi soket klien dan menerima soket, dan kemudian menyerahkan soket kepada pelaksana tugas (kumpulan utas) untuk dieksekusi. Baca soket terus menerus dari bagian bawah sistem, lakukan sesedikit mungkin pemrosesan, dan kemudian lemparkan ke dalam kumpulan benang. Mengapa menekankan perlunya menangani sesedikit mungkin? Ini terkait dengan masalah kinerja sistem, dan pemrosesan yang berlebihan akan secara serius mempengaruhi throughput. Karena umumnya hanya ada satu penerima (satu utas yang bertanggung jawab untuk penerimaan soket), kemungkinan akan berdampak pada panjang setiap proses penerimaan. Oleh karena itu, penerima melakukan pekerjaan yang sangat sedikit dan sederhana, hanya mempertahankan beberapa variabel keadaan, operasi akumulasi gerbang kontrol aliran, operasi penerimaan server, mengatur beberapa sifat soket yang diterima, menempatkan soket yang diterima ke dalam kumpulan benang, dan beberapa penanganan pengecualian. Logika lain yang membutuhkan waktu lama untuk diproses diserahkan ke kumpulan utas, seperti membaca data yang mendasari soket, mem -parsing paket protokol HTTP dan menanggapi beberapa operasi klien, dll.
Pengontrol Nomor Koneksi
Untuk mesin, total lalu lintas permintaan akses memiliki periode puncak dan server memiliki batas fisik. Untuk memastikan bahwa server web tidak terhanyut, kita perlu mengambil beberapa langkah untuk melindungi dan mencegahnya. Lalu lintas di sini perlu dijelaskan sedikit lebih banyak tentang jumlah koneksi soket, yang mengontrol lalu lintas dengan mengendalikan jumlah koneksi soket. Salah satu metode yang efektif adalah mengadopsi kontrol aliran, yang seperti menambahkan gerbang ke saluran masuk aliran. Ukuran gerbang menentukan ukuran aliran. Setelah aliran maksimum tercapai, gerbang akan ditutup dan berhenti menerima sampai ada saluran idle. Penghitung dapat diimplementasikan menggunakan kerangka kerja AQS JDK.
Pabrik Soket
Berbagai kesempatan penggunaan mungkin memerlukan tingkat keamanan yang berbeda. Misalnya, ketika transaksi terkait pembayaran, informasi harus dienkripsi sebelum dikirim, yang juga melibatkan proses negosiasi utama, sementara dalam kesempatan biasa lainnya, tidak perlu mengenkripsi paket. Merefleksikan ke lapisan aplikasi adalah masalah menggunakan HTTP dan HTTPS.
Sederhananya, protokol TLS/SSL menyediakan layanan otentikasi untuk setiap komunikasi ① untuk mengotentikasi legalitas identitas entitas sesi ini. ② Menyediakan layanan enkripsi, dan mekanisme enkripsi yang kuat dapat memastikan bahwa pesan selama komunikasi tidak akan diuraikan. ③ Menyediakan layanan tahan tamper, menggunakan algoritma hash untuk menandatangani pesan, dan memastikan bahwa konten komunikasi tidak dirusak dengan verifikasi tanda tangan.
Protokol HTTP sesuai dengan soket, sedangkan HTTPS sesuai dengan SSLSocket. Cara menghasilkan soket dan sslsockets diserahkan ke pabrik soket.
Tugas Definer - Tugas
Tentukan tugas yang akan dieksekusi dan beri tahu kumpulan utas jenis tugas apa yang akan dieksekusi. Tugas ini terutama dibagi menjadi tiga poin: pemrosesan soket dan menanggapi klien, mengurangi penghitung jumlah koneksi, dan menutup soket. Di antara mereka, pemrosesan soket adalah yang paling penting dan paling kompleks. Ini termasuk membaca aliran byte soket yang mendasarinya, parsing pesan permintaan protokol HTTP (analisis jalur permintaan, header permintaan, badan permintaan dan informasi lainnya), memperoleh jalur berdasarkan analisis jalur permintaan untuk menemukan sumber daya proyek Web pada host yang sesuai, dan merakit pesan respons protokol HTTP sesuai dengan hasil pemrosesan dan outputing untuk klien.
Pelaksana tugas
Kumpulan utas dengan jumlah utas maksimum dan minimum disebut "pelaksana tugas" karena kumpulan utas dapat dianggap sebagai memulai beberapa utas untuk secara terus -menerus mendeteksi antrian tugas, dan begitu tugas perlu dieksekusi ditemukan, itu akan dieksekusi. Jumlah batas maksimum dan minimum batas utas, batas waktu pemulihan utas yang berlebihan, tindakan penolakan yang dibuat oleh kumpulan utas ketika jumlah maksimum utas melebihi, dll.
Membaca pesan
Digunakan untuk membaca paket dari klien ke sistem operasi yang mendasarinya dan memberikan mekanisme buffering. Salin pesan ke Desbuf.
Output pesan
Digunakan untuk menulis paket yang diproses oleh wadah web ke sistem operasi dan memberikan mekanisme buffering. Tulis outputBuf pesan ke sistem operasi melalui buffer.
Filter input
Dalam proses membaca ini, beberapa pemrosesan tambahan diinginkan, dan pemrosesan tambahan ini dapat dilakukan secara berbeda sesuai dengan kondisi yang berbeda. Mempertimbangkan program decoupling dan ekstensi, filter diperkenalkan. Hanya setelah operasi penyaringan, kami dapat mencapai Desbuf melalui lapisan filter. Proses ini seperti menambahkan level pemrosesan. Operasi yang sesuai akan dilakukan setelah melewati level, dan akhirnya data sumber ke data tujuan akan selesai.
Filter keluaran
Ini mirip dengan fungsi filter input, dan digunakan saat output pesan.
Parser pesan
Memberikan kemampuan untuk menguraikan berbagai bagian protokol HTTP.
Meminta generator
Menurut ide yang berorientasi pada objek, bidang atribut dan protokol yang terkait dengan permintaan dalam setiap proses permintaan diabstraksi ke objek permintaan. Ini termasuk tiga bagian: jalur permintaan, header permintaan, dan badan permintaan. Nilai apa yang dibutuhkan selama pemrosesan dapat secara langsung diperoleh dari objek permintaan. Memberikan kenyamanan untuk menerapkan standar servlet.
Generator respons
Sesuai dengan permintaan, diperlukan generator objek respons. Ini termasuk tiga bagian: baris respons, header respons, dan badan respons. Nilai yang relevan dalam hasil pemrosesan dapat secara langsung diatur ke objek respons. Memberikan kenyamanan untuk menerapkan standar servlet.
Alamat mapper
Alamat Mapper adalah router yang meminta dan sumber daya. Akses yang diminta dipetakan sesuai dengan jalur untuk menemukan sumber daya tanggapan terhadap klien yang meminta.
siklus hidup
Untuk memodulasi lebih lanjut, seluruh wadah memiliki banyak komponen, yang mungkin memerlukan berbagai peristiwa pada saat yang berbeda dan membutuhkan siklus hidup untuk mengelola semua komponen dengan cara yang terpadu. Misalnya, startup, berhenti, dan shutdown dari semua komponen dipisahkan dari manajemen siklus hidup terpadu, yang dapat memfasilitasi pengelolaan siklus hidup komponen -komponen ini. Saya berharap untuk melakukan sesuatu sebelum dan sesudah sesuatu terjadi dalam keadaan tertentu? Tambahkan pendengar siklus hidup untuk mencapai dengan anggun.
Manajer JMX
Pemantauan dan manajemen status operasi sistem, kinerja server, pengumpulan parameter terkait server, beban JVM, nomor koneksi web, kumpulan utas, kumpulan koneksi basis data, manajemen cache, pemuatan ulang file konfigurasi, dll. Ini dapat memberikan beberapa manajemen visual jarak jauh, dengan kinerja real-time yang tinggi. Ini juga memberikan solusi untuk pengelolaan sistem terdistribusi.
Web Loader
WebLoader digunakan untuk memuat proyek aplikasi web. Wadah web dapat berisi beberapa aplikasi web. Untuk mencapai isolasi antara Lib dan Servlet, loader kelas yang berbeda, ClassLoader, harus digunakan untuk setiap aplikasi web, dan loader kelas ini bukan hubungan orangtua-anak, sehingga dapat mencapai efek isolasi kelas, yaitu, LIB dari aplikasi web tidak akan digunakan oleh aplikasi web lainnya.
Manajer Sesi
Manajer sesi terutama mengelola sesi, termasuk: ① Hasilkan Sesi. Secara umum, cookie atau URL tidak memiliki nilai JSessionid, dan sessionID perlu diregenerasi sebagai sessionID. ② Banyak sesi klien disimpan di server. Untuk sesi batas waktu, Anda harus membersihkan secara teratur untuk memastikan bahwa memori server tidak terbuang. ③Untuk beberapa sesi penting, mereka dapat bertahan untuk disk dan dapat dimuat kembali ke dalam memori untuk digunakan saat dibutuhkan.
Jalankan log
Catat beberapa peringatan, pengecualian, dan kesalahan saat runtime.
Akses Log
Log akses umumnya mencatat informasi terkait akses klien, termasuk IP klien, waktu permintaan, protokol permintaan, metode permintaan, nomor permintaan byte, kode respons, ID sesi, waktu pemrosesan, dll. Log akses dapat menghitung jumlah pengguna yang berkunjung, aturan distribusi waktu akses, hobi pribadi, dll., Dan data ini dapat membantu perusahaan membuat keputusan dalam strategi operasional mereka.
Manajer Keamanan
Proyek Web berjalan pada platform wadah web, yang seperti menyematkan aplikasi pada platform untuk dijalankan. Untuk membuat program tertanam berjalan secara normal, platform harus dapat berjalan dengan aman dan normal. Dan untuk memastikan bahwa platform tidak terpengaruh oleh aplikasi tertanam sampai batas terbesar, keduanya mencapai efek isolasi sampai batas tertentu. Saat startup, file kebijakan ditentukan oleh -djava.security.manager -djava.security.policy == web.policy, yang mendefinisikan berbagai izin.
Pemantauan Operasi & Manajemen Jarak Jauh
Menyediakan platform yang dapat memantau status berjalan wadah web secara real time dan dapat dikelola dari jarak jauh.
Gugus
Umumnya ada dua jenis cluster: ① Cluster penyeimbang beban, yang umumnya menggunakan algoritma distribusi tertentu untuk mendistribusikan lalu lintas akses secara merata ke setiap mesin di cluster untuk diproses. ② Cluster ketersediaan tinggi, komunikasi cluster menghubungkan beberapa mesin. Jenis cluster ini lebih berfokus pada memastikan ketersediaan eksternal seluruh cluster melalui switching otomatis atau transfer lalu lintas setelah mesin di cluster gagal.
Secara umum, permintaan Web adalah tanpa kewarganegaraan dan dapat dikelompokkan secara langsung, tetapi sesi ini melibatkan keutamaan dan membutuhkan penggunaan teknologi komunikasi cluster untuk menyalin sesi. Teknologi terkait termasuk multicast dan unicast.
Mesin servlet
Mesin Servlet menggunakan refleksi untuk menghasilkan objek di servlet dan JSP di aplikasi web dan memasukkannya ke dalam kumpulan objek servlet, dan memanggil metode yang sesuai sesuai dengan situasi aktual. Aplikasi Web menempatkan pemrosesan logika bisnis dalam metode dopost atau anjing. Ketika wadah web memproses permintaan, itu akan memprosesnya sesuai dengan logika pemrosesan yang ditentukan di sini, dan klien respons akan ditanggapi.
Kompiler JSP
Menurut spesifikasi, JSP akhirnya dikompilasi ke dalam eksekusi Servlet, sehingga file JSP harus dikompilasi sesuai dengan spesifikasi. Kompiler JSP sebenarnya menerjemahkan sintaks JSP dan memprosesnya sesuai dengan sintaks JSP.
Wadah web pada dasarnya berisi fungsi komponen yang diperkenalkan di atas. Anda dapat membangun wadah web yang memungkinkan web Anda untuk menjalankannya sesuai dengan implementasi setiap modul komponen.
Terima kasih telah membaca, saya harap ini dapat membantu Anda. Terima kasih atas dukungan Anda untuk situs ini!