Bagaimana cara mengarahkan pengguna ke server yang berbeda berdasarkan lokasi mereka?

8

Saya memiliki situs web yang dikembangkan dengan menggunakan ASP.NET dan MY DB adalah MySQL. Saat ini di-host di Server USA. Tetapi ketika saya mencoba mengaksesnya di dekat India, konten dinamis memuat terlalu lambat. Itu dapat diterima karena permintaan harus pergi ke sisi lain dunia. Di USA sangat cepat. Saya sudah menghubungkan situs ini dengan cloudflare CDN. Tetapi CDN berguna untuk konten statis. Setiap halaman saya hampir memiliki konten dinamis.

Jadi saya ingin skala situs web ini. Jadi, jika permintaan datang dari Amerika, saya ingin menangani permintaan itu dari server USA dan Jika permintaan datang dari ASIA saya ingin menangani itu dari Server ASIAN. Tetapi perlu diingat di mana pun mereka diarahkan konten harus sama pada dua server. (Dua server harus disinkronkan)

Lantas bagaimana cara mencapai arsitektur ini?

Bagaimana google, Facebook, Yahoo melakukan ini? Bagaimana mereka melayani di seluruh dunia? Saya pikir mereka memiliki pusat data di setiap benua. Bagaimana mereka saling bersinkronisasi?

Prageeth Liyanage
sumber

Jawaban:

10

Selain apa yang dijawab oleh @ Gabriel-Talavera, saya akan menambahkan beberapa catatan:

  • Perutean jaringan, serta Penyeimbangan Beban Geografis, sama sekali tidak terkait dengan "sinkronisasi data" antara server yang berbeda. Mereka adalah dua masalah yang ditangani dengan banyak teknologi yang sangat berbeda.

Karena judul pertanyaan Anda tampaknya terfokus pada sisi jaringan, saya akan fokus pada bagian pertama (masalah perutean jaringan).

Seperti yang Anda lihat sendiri, persyaratan sulit dipenuhi oleh perusahaan TIK kecil. Tetapi perusahaan "global" (seperti yang Anda sebutkan dalam OP), tidak akan memiliki masalah untuk mengadopsinya.

Sebagai catatan tambahan, pertama kali saya mendengar tentang "anycast" adalah berkat posting CloudFlare BLOG , di mana mereka membahas (... di antara banyak hal lainnya), bagaimana anycast dapat juga diadopsi sebagai langkah balasan untuk D- Serangan DOS.

Damiano Verzulli
sumber
3

Anda dapat memberikan respons DNS selektif berdasarkan lokasi dengan BIND Views jika Anda menggunakan BIND sebagai server DNS eksternal Anda. Pratinjau Teknis Windows Server versi baru juga memiliki fitur yang disebut Kebijakan DNS yang terlihat sangat menjanjikan.

Untuk menyajikan konten berdasarkan lokasi klien dan kriteria lain seperti Agen Pengguna atau jadwal, F5 memiliki alat bernama Global Traffic Manager yang digunakan bersamaan dengan penyeimbang muatannya mencapai apa yang Anda cari. Di lingkungan Cloud, Rute Amazon 53 dapat mencapai hal yang sama.

Untuk menjaga agar data tetap sinkron, Anda harus memiliki backend penyimpanan yang mampu melakukan replikasi sinkoron, atau menggunakan replikasi yang disediakan oleh MySQL, yang akan menjaga data yang direplikasi konsisten.

Gabriel Talavera
sumber
tetapi ini tidak akan berfungsi andal jika klien menggunakan server DNS yang berbeda seperti Google DNS atau OpenDNS.
Josef berkata Reinstate Monica
Replikasi dengan mysql dapat menunjukkan jeda yang signifikan antara penulisan dan bahwa data tersedia untuk dibaca. Sesuatu yang skala replikasi seperti riak atau database nosql lainnya harus dipertimbangkan.
anak ayam
0

Ada beberapa situasi di mana Anda ingin memiliki:

  • Integritas data menjamin transaksi berseri.
  • Data dapat diperbarui oleh pengguna secara global.
  • Data dapat diperbarui dengan latensi rendah.

Sayangnya kombinasi dari semua hal di atas tidak memungkinkan secara fisik. Anda akan dibatasi oleh kecepatan cahaya.

Sebaliknya, Anda perlu mempertimbangkan persyaratan yang tepat. Untuk beberapa data, akurasi terbatas cukup baik. Pertimbangkan penghitung tampilan di video YouTube. Sebagian besar orang tidak peduli jika penghitung tampilan sementara tidak aktif. Jika pandangan yang terjadi 10 detik yang lalu di sisi lain dunia belum termasuk, tetapi pandangan yang terjadi 5 detik yang lalu lebih dekat disertakan, itu masih cukup akurat. Jika Anda santai dengan integritas penghitung tampilan, Anda berisiko dua orang yang berbeda mungkin berpikir bahwa mereka adalah penonton nomor 100 dari video tersebut. Tetapi kebanyakan orang akan menganggap kerusakan yang dilakukan oleh hal itu dapat diabaikan.

Dalam kasus lain integritas data lebih penting. Pertimbangkan dua orang secara bersamaan mencoba mendaftar dengan nama pengguna yang sama. Memberitahu kedua orang bahwa mereka mendapatkan nama pengguna tidak dapat diterima, jadi dalam situasi seperti itu Anda akan memilih pendekatan yang lebih lambat dengan integritas yang lebih baik. Dapat diterima untuk memberi tahu kedua orang tersebut bahwa nama pengguna telah diambil, jadi pendekatan yang mungkin dilakukan adalah mencoba untuk memesan nama pengguna pada setiap replika dan hanya melaporkan keberhasilan jika Anda berhasil pada lebih dari 50% dari replika. Bukan tidak mungkin bahwa pendekatan ini akan meminta pengguna menunggu setengah detik untuk mendapatkan balasan. Tetapi pengguna tidak cukup sering melalui proses ini untuk merasa terganggu oleh keterlambatan itu.

Dalam kasus lain, Anda mungkin memerlukan integritas yang baik dan pembaruan yang cepat, tetapi hanya satu orang yang dapat memperbarui bagian data ini. Dalam hal ini Anda dapat meletakkan salinan data otoritatif pada server yang Anda anggap dekat dengan pengguna itu, dan biarkan server lain memiliki versi cache, yang sebagian besar mutakhir.

kasperd
sumber