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?
Ada beberapa situasi di mana Anda ingin memiliki:
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.
sumber