Artikel ini ialah ringkasan teknikal pembelajaran seni bina tapak web teragih berskala besar. Penerangan ringkas tentang seni bina tapak web yang diedarkan berprestasi tinggi, sangat tersedia, berskala dan boleh dikembangkan serta rujukan seni bina diberikan. Sebahagian daripada artikel sedang membaca nota, dan sebahagiannya ialah ringkasan pengalaman peribadi, yang mempunyai nilai rujukan yang baik untuk seni bina tapak web yang diedarkan secara besar-besaran.
Teknologi seni bina laman web teragih berskala besar
1.
Data besar-besaran, Perkhidmatan ini sangat tersedia
Persekitaran keselamatan adalah lemah dan terdedah kepada serangan rangkaian
Pelbagai fungsi, pembangunan lebih pantas, keluaran kerap
Membangunkan secara beransur-ansur daripada kecil
centered
Perkhidmatan Percuma, pengalaman berbayar
2. Matlamat seni bina laman web yang besar
Prestasi tinggi: Menyediakan pengalaman akses pantas.
Ketersediaan tinggi: Perkhidmatan tapak web sentiasa boleh diakses seperti biasa.
Skala: meningkat/mengurang, menambah/mengurangkan kuasa pemprosesan melalui perkakasan.
Keselamatan: Menyediakan akses selamat tapak web dan penyulitan data, storan selamat dan strategi lain.
Kebolehlanjutan: Tambah/alih keluar fungsi/modul baharu dengan mudah dengan menambah/mengalih keluarnya.
Ketangkasan: atas permintaan, tindak balas pantas;
3 Model seni bina laman web yang besar
boleh dibahagikan kepada secara amnya
. lapisan perkhidmatan, lapisan data, lapisan pengurusan dan lapisan analisis;
segmentasi: secara amnya dibahagikan mengikut ciri perniagaan/modul/fungsi, contohnya, lapisan aplikasi dibahagikan kepada laman utama dan pusat pengguna.
Diedarkan: Sebarkan aplikasi secara berasingan (seperti berbilang mesin fizikal) dan bekerjasama melalui panggilan jauh.
Kluster: Aplikasi/modul/fungsi digunakan dalam berbilang salinan (seperti berbilang mesin fizikal) untuk menyediakan akses luaran melalui pengimbangan beban.
Caching: Letakkan data paling hampir dengan aplikasi atau pengguna untuk mempercepatkan akses.
Asynchronous: Asynchronousize operasi segerak. Pelanggan menghantar permintaan tanpa menunggu pelayan bertindak balas Selepas pelayan menyelesaikan pemprosesan, ia menggunakan pemberitahuan atau tinjauan pendapat untuk memaklumkan peminta. Secara amnya merujuk kepada: mod permintaan-tindak balas-pemberitahuan.
Lebihan: Tingkatkan replika untuk meningkatkan ketersediaan, keselamatan dan prestasi.
Keselamatan: Mempunyai penyelesaian yang berkesan untuk masalah yang diketahui, dan wujudkan mekanisme penemuan dan pertahanan untuk masalah yang tidak diketahui/berpotensi.
Automasi: Gunakan mesin untuk menyelesaikan tugasan berulang yang tidak memerlukan campur tangan manusia melalui alatan.
Ketangkasan: Secara aktif menerima perubahan dalam keperluan dan bertindak balas dengan cepat kepada keperluan pembangunan perniagaan.
4. Seni bina berprestasi tinggi
adalah berpusatkan pengguna dan menyediakan pengalaman akses web yang pantas. Parameter utama termasuk masa tindak balas yang singkat, keupayaan pemprosesan serentak yang besar, prestasi tinggi dan parameter prestasi yang stabil.
Boleh dibahagikan kepada pengoptimuman bahagian hadapan, pengoptimuman lapisan aplikasi, pengoptimuman lapisan kod dan pengoptimuman lapisan storan.
Pengoptimuman bahagian hadapan: bahagian sebelum logik perniagaan tapak web;
Pengoptimuman penyemak imbas: kurangkan bilangan permintaan HTTP, gunakan cache penyemak imbas, dayakan pemampatan, kedudukan CSS JS, JS tak segerak, kurangkan penghantaran kuki; pecutan, proksi terbalik;
Pengoptimuman lapisan aplikasi: pelayan yang mengendalikan perniagaan tapak web. Gunakan cache, asynchronous, cluster
Pengoptimuman kod: seni bina yang munasabah, multi-threading, penggunaan semula sumber (kumpulan objek, kumpulan benang, dll.), struktur data yang baik, penalaan JVM, singleton, Cache, dll.;
Pengoptimuman storan: cache, pemacu keadaan pepejal, penghantaran gentian optik, bacaan dan penulisan yang dioptimumkan, redundansi cakera, storan teragih (HDFS), NoSQL, dsb.
5. Seni bina ketersediaan tinggi
Tapak web yang besar harus boleh diakses pada setiap masa dan menyediakan perkhidmatan luaran biasa. Kerana kerumitan, pengedaran, pelayan murah, pangkalan data sumber terbuka, sistem pengendalian dan ciri-ciri lain tapak web yang besar, adalah sukar untuk memastikan ketersediaan tinggi, yang bermaksud kegagalan laman web tidak dapat dielakkan.
Cara meningkatkan kebolehgunaan adalah isu yang perlu diselesaikan dengan segera. Pertama sekali, kita perlu mempertimbangkannya dari peringkat seni bina, dan mempertimbangkan ketersediaan semasa merancang. Dalam industri, beberapa sembilan biasanya digunakan untuk mewakili penunjuk ketersediaan, seperti empat sembilan (99.99), dan masa ketidaktersediaan yang dibenarkan dalam setahun ialah 53 minit.
Strategi berbeza digunakan pada tahap yang berbeza sandaran berlebihan dan failover biasanya digunakan untuk menyelesaikan masalah ketersediaan tinggi.
Lapisan aplikasi: Secara umumnya direka bentuk tanpa kewarganegaraan, ia tidak memberi kesan pada pelayan mana yang digunakan untuk memproses setiap permintaan. Secara amnya, teknologi pengimbangan beban (yang perlu menyelesaikan masalah penyegerakan Sesi) digunakan untuk mencapai ketersediaan yang tinggi.
Lapisan perkhidmatan: pengimbangan beban, pengurusan hierarki, kegagalan pantas (tetapan tamat masa), panggilan tak segerak, kemerosotan perkhidmatan, reka bentuk idempoten, dsb.
Lapisan data: sandaran berlebihan (sejuk, sandaran panas [segerak, tak segerak], sandaran hangat), failover (pengesahan, pemindahan, pemulihan). Asas teori yang terkenal untuk ketersediaan data yang tinggi ialah teori CAP (ketekalan, ketersediaan, ketekalan data [konsistensi kuat, konsistensi pengguna, konsistensi akhirnya])
6 Seni bina boleh skala
Skalabiliti merujuk kepada Tanpa mengubah skalabilitas. reka bentuk seni bina asal, keupayaan pemprosesan sistem boleh ditingkatkan atau dikurangkan dengan menambah/mengurangkan perkakasan (pelayan).
Lapisan aplikasi: Pisahkan aplikasi secara menegak atau mendatar. Kemudian muatkan baki terhadap satu fungsi (DNS, HTTP [proksi terbalik], IP, lapisan pautan).
Lapisan perkhidmatan: serupa dengan lapisan aplikasi;
Lapisan data: sub-pangkalan data, sub-jadual, NoSQL, dll.; algoritma yang biasa digunakan Hash, Hash yang konsisten.
7. Seni bina boleh skala
boleh menambah/mengalih keluar modul fungsi dengan mudah dan memberikan kebolehskalaan yang baik pada tahap kod/modul.
Modularisasi dan komponenisasi: kohesi tinggi, gandingan rendah, kebolehgunaan semula dan kebolehskalaan yang lebih baik.
Antara muka stabil: Tentukan antara muka yang stabil Walaupun antara muka kekal tidak berubah, struktur dalaman boleh berubah "sesuka hati".
Corak reka bentuk: Gunakan idea dan prinsip berorientasikan objek, gunakan corak reka bentuk untuk mereka bentuk pada tahap kod.
Baris Gilir Mesej: Sistem modular yang berinteraksi melalui baris gilir mesej untuk memisahkan kebergantungan antara modul.
Perkhidmatan edaran: Modul awam berorientasikan perkhidmatan untuk menyediakan penggunaan oleh sistem lain, meningkatkan kebolehgunaan semula dan kebolehskalaan.
8. Seni bina keselamatan
Mempunyai penyelesaian yang berkesan untuk masalah yang diketahui dan mewujudkan mekanisme penemuan dan pertahanan untuk masalah yang tidak diketahui/berpotensi. Untuk isu keselamatan, kita mesti terlebih dahulu meningkatkan kesedaran keselamatan dan mewujudkan mekanisme keselamatan yang berkesan untuk memastikannya dari peringkat dasar dan peringkat organisasi Contohnya, kata laluan pelayan tidak boleh dibocorkan, kata laluan dikemas kini setiap bulan dan tidak boleh diulang dalam masa tiga kali seminggu imbasan keselamatan, dsb. Memperkukuh pembinaan sistem keselamatan secara berinstitusi. Pada masa yang sama, perhatian perlu diberikan kepada semua aspek yang berkaitan dengan keselamatan. Isu keselamatan tidak boleh diabaikan, termasuk keselamatan infrastruktur, keselamatan sistem aplikasi, kerahsiaan dan keselamatan data, dsb.
Keselamatan infrastruktur: perolehan perkakasan, sistem pengendalian dan keselamatan persekitaran rangkaian. Secara amnya, gunakan saluran rasmi untuk membeli produk berkualiti tinggi, memilih sistem pengendalian yang selamat, menambal kelemahan tepat pada masanya dan memasang perisian anti-virus dan tembok api. Lindungi daripada virus dan pintu belakang. Tetapkan dasar tembok api, wujudkan sistem pertahanan DDOS, gunakan sistem pengesanan serangan dan lakukan pengasingan subnet.
Keselamatan sistem aplikasi: Semasa pembangunan program, gunakan kaedah yang betul untuk menyelesaikan masalah biasa yang diketahui pada peringkat kod. Cegah serangan skrip silang tapak (XSS), serangan suntikan, pemalsuan permintaan merentas tapak (CSRF), mesej ralat, ulasan HTML, muat naik fail, traversal laluan, dsb. Anda juga boleh menggunakan tembok api aplikasi web (seperti ModSecurity) untuk melakukan pengimbasan kerentanan keselamatan dan langkah lain untuk mengukuhkan keselamatan peringkat aplikasi.
Kerahsiaan dan keselamatan data: keselamatan penyimpanan (disimpan dalam peralatan yang boleh dipercayai, masa nyata, sandaran berjadual), keselamatan pemeliharaan (pemeliharaan maklumat penting yang disulitkan, pemilihan kakitangan yang sesuai untuk pemeliharaan dan pengesanan yang kompleks, dsb.), keselamatan penghantaran (pencegahan kecurian data dan gangguan Data);
Algoritma penyulitan dan penyahsulitan yang biasa digunakan (penyulitan cincang tunggal [MD5, SHA], penyulitan simetri [DES, 3DES, RC]), penyulitan asimetri [RSA], dsb.
9 Ketangkasan
Reka bentuk seni bina dan pengurusan operasi dan penyelenggaraan tapak web mesti menyesuaikan diri dengan perubahan dan menyediakan kebolehskalaan dan kebolehskalaan yang tinggi. Menghadapi perkembangan perniagaan yang pesat, peningkatan mendadak dalam akses trafik tinggi dan keperluan lain dengan mudah.
Selain elemen seni bina yang diperkenalkan di atas, idea pengurusan tangkas dan pembangunan tangkas juga perlu diperkenalkan. Satukan perniagaan, produk, teknologi, operasi dan penyelenggaraan, menyesuaikan diri dengan keperluan dan bertindak balas dengan cepat.
10 Contoh seni bina berskala besar
Di atas menggunakan seni bina logik tujuh lapisan, lapisan pertama adalah lapisan pelanggan, lapisan kedua adalah lapisan pengoptimuman bahagian hadapan, lapisan ketiga. lapisan ialah lapisan aplikasi, lapisan keempat ialah lapisan perkhidmatan, dan lapisan kelima ialah lapisan pertama ialah lapisan storan data, lapisan keenam ialah lapisan storan data yang besar, dan lapisan ketujuh ialah lapisan pemprosesan data yang besar.
Lapisan pelanggan: menyokong penyemak imbas PC dan APP mudah alih. Perbezaannya ialah APP mudah alih boleh diakses terus melalui IP dan pelayan proksi terbalik. .
Lapisan perkhidmatan: Menyediakan perkhidmatan awam, seperti perkhidmatan pengguna, perkhidmatan pesanan, perkhidmatan pembayaran, dll. kelompok; dan Cache yang diedarkan; luar talian melalui analisis Data Mapreduce atau analisis data masa nyata Storm, dan data yang diproses disimpan dalam pangkalan data hubungan. (Dalam penggunaan sebenar, data luar talian dan data masa nyata akan dikelaskan dan diproses mengikut keperluan perniagaan dan disimpan dalam pangkalan data yang berbeza untuk digunakan oleh lapisan aplikasi atau lapisan perkhidmatan).
Evolusi seni bina sistem tapak web e-dagang berskala besar
Seni bina sistem laman web berskala besar yang matang (seperti Taobao, Tmall, Tencent, dll.) tidak direka bentuk dengan prestasi tinggi yang lengkap dari awal , ketersediaan tinggi, berskala tinggi dan ciri-ciri lain Ia telah berkembang secara beransur-ansur dan bertambah baik dengan peningkatan dalam bilangan pengguna dan pengembangan fungsi perniagaan Dalam proses ini, model pembangunan, seni bina teknikal, dan idea reka bentuk juga telah mengalami perubahan yang besar Malah kakitangan teknikal telah berkembang daripada beberapa orang kepada jabatan atau bahkan barisan produk.
Jadi seni bina sistem matang dipertingkatkan secara beransur-ansur dengan pengembangan perniagaan, dan ia tidak dicapai dalam sekelip mata sistem dengan ciri perniagaan yang berbeza akan mempunyai fokus mereka sendiri, seperti Taobao, yang perlu menyelesaikan pencarian, pesanan dan pemprosesan; maklumat produk besar-besaran, contohnya, Tencent perlu mengendalikan penghantaran mesej masa nyata untuk ratusan juta pengguna.
Kesemuanya mempunyai ciri perniagaan tersendiri dan seni bina sistem juga berbeza. Walaupun begitu, kami juga boleh mencari teknologi biasa daripada latar belakang laman web yang berbeza ini dan kaedah ini digunakan secara meluas dalam seni bina sistem tapak web berskala besar. Mari kita fahami teknologi dan kaedah ini dengan memperkenalkan proses evolusi sistem tapak web berskala besar. bermakna.
Seni bina tapak web awal
Seni bina awal, aplikasi, pangkalan data dan fail semuanya digunakan pada pelayan, seperti yang ditunjukkan dalam gambar:
2. Pemisahan aplikasi, data dan fail
Dengan pengembangan perniagaan, satu pelayan tidak lagi dapat memenuhi keperluan prestasi, jadi aplikasi, pangkalan data dan fail digunakan pada pelayan yang berasingan, dan Konfigurasikan perkakasan yang berbeza mengikut tujuan pelayan untuk mencapai hasil prestasi terbaik.
3 caching terutamanya disebabkan oleh kewujudan data panas Kebanyakan lawatan tapak web mengikut prinsip 28 (iaitu, 80% permintaan akses berakhir pada 20% daripada data), jadi kami boleh menyimpan data panas untuk mengurangkan akses kepada data ini. laluan untuk meningkatkan pengalaman pengguna.
Cara biasa untuk melaksanakan cache ialah cache setempat dan cache teragih. Sudah tentu, terdapat juga CDN, proksi terbalik, dan lain-lain, yang akan dibincangkan kemudian. Cache tempatan, seperti namanya, menyimpan data secara setempat pada pelayan aplikasi Ia boleh disimpan dalam memori atau dalam fail OSCache ialah komponen cache tempatan yang biasa digunakan. Ciri cache tempatan ialah ia pantas, tetapi kerana ruang tempatan terhad, jumlah data cache juga terhad. Ciri-ciri cache yang diedarkan ialah ia boleh menyimpan sejumlah besar data dan sangat mudah untuk dikembangkan. Ia sering digunakan dalam laman web portal dan tidak secepat cache yang diedarkan yang biasa digunakan ialah Memcached dan Redis.
4. Gunakan kluster untuk meningkatkan prestasi pelayan aplikasi
Sebagai pintu masuk ke laman web, pelayan aplikasi akan menanggung sejumlah besar permintaan. Pelayan pengimbangan beban digunakan di hadapan pelayan aplikasi untuk menjadualkan permintaan pengguna dan mengedarkan permintaan kepada berbilang nod pelayan aplikasi mengikut dasar pengedaran.
Perkakasan teknologi pengimbangan beban yang biasa digunakan termasuk F5, yang agak mahal, dan perisian termasuk LVS, Nginx dan HAProxy. LVS ialah pengimbangan beban empat lapisan, yang memilih pelayan dalaman berdasarkan alamat sasaran dan port Nginx dan HAProxy ialah pengimbangan beban tujuh lapisan, yang boleh memilih pelayan dalaman berdasarkan kandungan mesej Nginx dan HAProxy, dan prestasinya lebih tinggi Nginx dan HAProxy lebih boleh dikonfigurasikan, dan boleh digunakan untuk pemisahan dinamik dan statik (pilih pelayan sumber statik atau pelayan aplikasi berdasarkan ciri-ciri mesej permintaan).
Atas ialah kandungan terperinci Penyelesaian pantas 10 minit |. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn