Saya mencoba memahami bagaimana situs-situs besar seperti Facebook atau Wikipedia bekerja, untuk keingintahuan intelektual saya. Saya membaca tentang berbagai teknik untuk membangun situs yang skalabel, tetapi saya masih bingung tentang satu detail tertentu.
Bagian yang membingungkan saya adalah bahwa pada akhirnya, DNS akan memetakan seluruh domain ke satu alamat IP, atau beberapa alamat IP dalam kasus DNS round-robin.
Misalnya, wikipedia.org hanya memiliki satu catatan DNS tipe-A. Jadi, orang-orang dari seluruh dunia yang mengunjungi Wikipedia harus mengirim permintaan ke satu alamat IP yang ditentukan dalam DNS.
Apa bagian dari perangkat keras yang mendengarkan alamat IP untuk situs besar, dan bagaimana ia bisa menangani semua beban yang datang dari permintaan untuk pengguna di seluruh dunia?
Sunting 1: Terima kasih atas semua tanggapan! Anycast sepertinya jawaban yang layak ... Apakah ada yang tahu cara untuk mengecek apakah alamat IP tertentu dialihkan, sehingga saya dapat memverifikasi bahwa ini benar-benar trik yang digunakan dalam praktik oleh situs besar?
Sunting 2: Setelah lebih banyak membaca tentang topik, tampaknya siaran apa pun biasanya tidak digunakan untuk konten web dinamis. Anycast biasanya digunakan untuk UDP (misalnya, pencarian DNS), atau terkadang untuk konten statis.
Satu hal yang menarik untuk dicatat adalah bahwa Facebook menggunakan profile.ak.fbcdn.net untuk meng-host konten statis seperti style sheet dan perpustakaan javascript. Setiap kali saya melakukan ping nama ini, saya mendapat respons dari alamat IP yang berbeda. Namun, saya tidak bisa memastikan apakah ini ada dalam aksi, atau teknik yang sama sekali berbeda.
Kembali ke pertanyaan awal saya: sejauh yang saya tahu, bahkan sebuah situs besar akan memiliki perangkat keras penyeimbang beban mahal yang mendengarkan pada beberapa alamat IP publik.
sumber
Jawaban:
Ini tidak berarti perangkat keras melakukan hal ini tetapi sistem lengkap yang telah dirancang untuk skala. Ini tidak hanya mencakup perangkat keras tetapi lebih penting lagi desain aplikasi, desain database (relasional atau lainnya), jaringan, penyimpanan dan bagaimana mereka semua cocok bersama.
Sebuah titik awal yang baik untuk rasa ingin tahu Anda untuk mengetahui bagaimana beberapa situs skala besar Skalabilitas Tinggi - Mulai Di Sini dan Skalabilitas Tinggi pada arsitektur Wikimedia , Facebook dan Twitter sebagai contoh.
Mengenai pertanyaan Anda tentang DNS dan alamat IP tunggal dan round-robin jenis situs ini akan sering menggunakan load balancing sebagai metode penyajian alamat IP tunggal. Ini dapat dilakukan dengan penyeimbang beban perangkat keras khusus atau melalui perangkat lunak yang berjalan pada server tujuan umum. Permintaan yang masuk ke IP yang dikelola oleh load balancer kemudian didistribusikan melalui serangkaian server secara transparan kepada pengguna akhir.
Untuk penjelasan yang baik tentang topik ini, termasuk perbandingan penyeimbang / proxy beban perangkat keras dan perangkat lunak dan bagaimana mereka membandingkannya dengan round robin DNS, bacalah Aplikasi Web Balancing Web .
sumber
Anycast juga dapat digunakan untuk koneksi TCP, dengan asumsi koneksi berumur pendek sehingga rute tidak berubah selama masa koneksi. Ini adalah asumsi yang baik dengan koneksi HTTP (terutama jika Connection: Keep-Alive disimpan untuk waktu singkat atau dinonaktifkan).
Banyak CDN (CacheFly, MaxCDN, dan mungkin banyak lainnya) sebenarnya menggunakan siaran apa pun untuk koneksi TCP (HTTP), dan bukan hanya DNS. Ketika Anda menyelesaikan nama host di CacheFly, Anda mendapatkan alamat IP yang sama di seluruh dunia, itu hanya dialihkan ke cluster CacheFly "terdekat". "Terdekat" di sini adalah dalam hal panjang jalur dan metrik BGP, yang biasanya merupakan cara yang lebih baik untuk mengukur latensi jaringan daripada jarak geografis yang sederhana.
Dalam hal Wikipedia khususnya: http://www.datacenterknowledge.com/archives/2008/06/24/a-look-inside-wikipedias-infrastructure/
sumber
Cara termudah untuk memverifikasi apakah alamat IP menggunakan Anycast adalah dengan melakukan pelacakan dari lokasi yang berbeda. Anda dapat mencoba yang berikut: buka traceroute.org, pilih lokasi dan coba lakukan traceroute ke alamat IP 8.8.8.8 (DNS Publik Google yang menggunakan siaran apa pun). Anda harus dapat melihat traceroute dari server di Australia hingga 8.8.8.8 tetap di Australia.
Alih-alih melakukan ping, coba lakukan pencarian nama host: mis .: http://network-tools.com/default.asp?prog=dnsrec&host=profile.ak.fbcdn.net
Anda akan melihat daftar alamat IP di belakang nama itu. Alamat IP ini akan digunakan secara round-robin saat Anda melakukan ping ke server.
sumber
Igor, pertanyaan Anda luar biasa, dan seperti banyak pertanyaan tidak bersalah, ada banyak, banyak jawaban, semuanya pada tingkat rincian yang berbeda.
Bagian dari perangkat keras adalah server web. Jelas ;-)
Bagian dari perangkat keras sebenarnya adalah sekelompok penyeimbang beban, yang semuanya dikonfigurasikan untuk menarik dari penyimpanan bersama sehingga semuanya dikonfigurasi secara identik dengan bahan yang identik.
Bagian dari perangkat keras sebenarnya adalah salah satu dari beberapa cluster penyeimbang beban, tersebar secara geografis, dan Anda diarahkan ke yang terdekat dengan Anda, keputusan yang dibuat oleh server DNS.
sumber
Google merilis sedikit tentang arsitektur perangkat keras asli mereka tahun lalu dan itu membuat untuk dibaca .
sumber
Satu alamat IP tidak harus berarti server tunggal: http://en.wikipedia.org/wiki/Anycast
sumber
Situs yang lebih besar menggunakan beberapa teknik berbeda secara bersamaan. Situs-situs web yang Anda sebutkan semuanya memiliki hampir di setiap negara beberapa server. Berdasarkan alamat IP pengunjung situs web, server DNS memberikan kembali alamat IP cluster yang paling dekat dengan pengunjung. Akamai menyediakan layanan seperti itu (klik gambar di situs web ini untuk informasi lebih lanjut.)
"Cluster" tersebut di pusat data ini sekarang terdiri dari beberapa mesin yang berbeda (server DB, server web, penyeimbang beban, dll.) Tergantung pada apa yang Anda sediakan dengan situs web, Anda memiliki beberapa server untuk konten statis, dll.
sumber
Situs besar seperti Facebook atau Wikipedia bergantung pada beberapa teknologi berbeda untuk mencapai skalabilitas.
Salah satu teknologi itu adalah dns. Dns dikonfigurasi untuk memuat keseimbangan dengan round robin. Konfigurasi dns cukup pintar untuk mengetahui dari mana permintaan Anda berasal dan untuk mengembalikan alamat situs yang terdekat dengan Anda. Jadi jika Anda melakukan penggalian Anda akan melihat banyak catatan, tetapi jika Anda melakukan ping Anda akan selalu mendapatkan kembali alamat yang sama.
Di situs tersebut, perangkat keras pertama yang Anda tekan adalah proxy terbalik atau kumpulan penyeimbang beban. Kolam-kolam diatur sehingga semua mesin menjawab IP yang sama tetapi mengembalikan IP baru di header sesi. Semua permintaan lebih lanjut akan melalui simpul yang sama.
Penyeimbang beban yang digunakan untuk situs besar bukanlah peralatan besar yang mahal, mereka adalah server komoditas yang menjalankan LVS. http://www.linuxvirtualserver.org/
sumber
Situs besar seperti Google hampir pasti merancang perangkat keras mereka sendiri. Situs besar mungkin akan menggunakan saklar multi-layer untuk memuat koneksi keseimbangan ke beberapa server aktual. http://en.wikipedia.org/wiki/Multilayer_switch
sumber