Làm cách nào để chuyển hướng người dùng đến các máy chủ khác nhau dựa trên vị trí của họ?


8

Tôi có một trang web được phát triển bằng cách sử dụng ASP.NET và MY DB là MySQL. Hiện tại nó được lưu trữ tại USA Servers. Nhưng khi tôi cố gắng truy cập nó gần Ấn Độ, nội dung động đang tải quá chậm. Có thể chấp nhận được vì yêu cầu phải đi đến một nơi khác trên thế giới. Ở Mỹ nó rất nhanh. Tôi đã kết nối trang web này với CDN trên nền tảng đám mây. Nhưng CDN là hữu ích cho nội dung tĩnh. Mỗi trang của tôi hầu như có nội dung động.

Vì vậy, tôi muốn mở rộng quy mô trang web này. Vì vậy, nếu một yêu cầu đến từ Mỹ, tôi muốn xử lý yêu cầu đó từ máy chủ Hoa Kỳ và Nếu một yêu cầu đến từ ASIA, tôi muốn điều đó được xử lý từ Máy chủ ASIAN. Nhưng hãy nhớ rằng dù chúng được chuyển hướng nội dung ở đâu cũng phải giống nhau trên hai máy chủ. (Hai máy chủ phải được đồng bộ hóa)

Vậy làm thế nào để đạt được kiến ​​trúc này?

Làm thế nào google, Facebook, Yahoo làm điều này? Làm thế nào họ phục vụ trên toàn thế giới? Tôi nghĩ rằng họ có trung tâm dữ liệu trên mọi lục địa. Làm thế nào họ đồng bộ với nhau?

Câu trả lời:


10

Ngoài những gì được trả lời bởi @ Gabriel-Talavera, tôi sẽ thêm một vài lưu ý:

  • Định tuyến mạng, cũng như Cân bằng tải địa lý, hoàn toàn không liên quan đến "đồng bộ hóa dữ liệu" giữa các máy chủ khác nhau. Chúng là hai vấn đề được giải quyết với nhiều công nghệ rất khác nhau.

Vì tiêu đề câu hỏi của bạn dường như tập trung vào phía mạng, tôi sẽ tập trung vào phần đầu tiên (các vấn đề định tuyến mạng).

Như bạn có thể thấy, các yêu cầu rất khó được đáp ứng bởi các công ty CNTT nhỏ. Nhưng các công ty "toàn cầu" (như những công ty bạn đã đề cập trong OP của bạn), sẽ không gặp vấn đề gì khi áp dụng nó.

Một ghi chú bên lề, lần đầu tiên tôi nghe về "anycast" là nhờ vào bài đăng BLOG của CloudFlare , nơi họ đã thảo luận (... trong số rất nhiều điều khác), làm thế nào anycast cũng có thể được áp dụng như một biện pháp đối phó với D- DOS tấn công.


3

Bạn có thể đưa ra các phản hồi DNS có chọn lọc dựa trên vị trí với BIND Views nếu bạn đang sử dụng BIND làm máy chủ DNS bên ngoài. Bản xem trước kỹ thuật của phiên bản Windows Server mới cũng có một tính năng gọi là Chính sách DNS trông rất hứa hẹn.

Để phục vụ nội dung dựa trên vị trí của khách hàng và các tiêu chí khác như Tác nhân người dùng hoặc lịch biểu, F5 có một thiết bị có tên Trình quản lý lưu lượng toàn cầu được sử dụng kết hợp với bộ cân bằng tải của họ đạt được những gì bạn đang tìm kiếm. Trong môi trường Đám mây, Tuyến 53 của Amazon có thể thực hiện tương tự.

Để giữ cho dữ liệu được đồng bộ hóa, bạn phải có một phụ trợ lưu trữ có khả năng sao chép đồng bộ hoặc sử dụng bản sao được cung cấp bởi MySQL, điều này sẽ giữ cho dữ liệu được sao chép nhất quán.


nhưng điều này sẽ không hoạt động đáng tin cậy nếu khách hàng sử dụng các máy chủ DNS khác nhau như Google DNS hoặc OpenDNS.
Josef nói Phục hồi lại

Sao chép với mysql có thể hiển thị độ trễ đáng kể giữa ghi và dữ liệu có sẵn để đọc. Một cái gì đó quy mô nhân rộng như riak hoặc cơ sở dữ liệu nosql khác nên được xem xét.
gà con

0

Có những tình huống mà bạn muốn có:

  • Tính toàn vẹn dữ liệu đảm bảo các giao dịch tuần tự hóa.
  • Dữ liệu có thể được cập nhật bởi người dùng trên toàn cầu.
  • Dữ liệu có thể được cập nhật với độ trễ thấp.

Thật không may, sự kết hợp của tất cả các bên trên là không thể. Bạn sẽ bị hạn chế bởi tốc độ ánh sáng.

Thay vào đó bạn cần xem xét các yêu cầu chính xác của bạn. Đối với một số dữ liệu, độ chính xác hạn chế là đủ tốt. Xem xét bộ đếm lượt xem trên video YouTube. Hầu hết mọi người không quan tâm nếu bộ đếm xem tạm thời bị tắt một chút. Nếu các chế độ xem xảy ra 10 giây trước ở bên kia thế giới chưa được đưa vào, nhưng các chế độ xem xảy ra 5 giây trước gần hơn được đưa vào, thì nó vẫn đủ chính xác. Nếu bạn cảm thấy thoải mái với tính toàn vẹn của bộ đếm lượt xem, bạn sẽ gặp rủi ro khi hai người khác nhau có thể nghĩ rằng họ là người xem số 100 của video cụ thể đó. Nhưng hầu hết mọi người sẽ coi tác hại của việc đó là không đáng kể.

Trong các trường hợp khác tính toàn vẹn dữ liệu là quan trọng hơn. Xem xét hai người đồng thời cố gắng đăng ký với cùng tên người dùng. Nói với cả hai người rằng họ có tên người dùng là không thể chấp nhận được, vì vậy trong tình huống như vậy, bạn sẽ chọn cách tiếp cận chậm hơn với tính toàn vẹn tốt hơn. Có thể chấp nhận cho cả hai người biết rằng tên người dùng đã được sử dụng, vì vậy cách tiếp cận có thể là cố gắng bảo lưu tên người dùng trên mỗi bản sao và chỉ báo cáo thành công nếu bạn đã thành công trên 50% bản sao. Không có khả năng phương pháp này sẽ khiến người dùng phải chờ nửa giây để nhận được phản hồi. Nhưng người dùng không trải qua quá trình này thường đủ để bị làm phiền bởi sự chậm trễ đó.

Trong các trường hợp khác, bạn có thể cần tính toàn vẹn tốt và cập nhật nhanh, nhưng chỉ một người có thể cập nhật phần dữ liệu cụ thể này. Trong trường hợp đó, bạn có thể đặt bản sao có thẩm quyền của dữ liệu trên máy chủ mà bạn cho là gần với người dùng đó và để các máy chủ khác có phiên bản được lưu trong bộ nhớ cache, hầu hết được cập nhật.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.