Điểm:0

Làm chủ độ trễ DB với tính năng sao chép liên vùng AWS RDS

lá cờ mg

Tôi đã thiết lập ứng dụng của mình ở 3 khu vực (EU, AP, US) và MySQL RDS chính nằm ở eu-west-1, với các bản sao chỉ có quyền đọc ở các khu vực khác.

Điều này hoạt động rất tốt cho các truy vấn đọc, với ứng dụng dành riêng cho khu vực kết nối với RDS bản sao chỉ có quyền đọc cục bộ của ứng dụng đó rất nhanh, nhưng khi ứng dụng của tôi cần thực hiện truy vấn ghi, ứng dụng đó phải kết nối với DB chính ở eu-west-1.

Khi ghi vào DB chính từ Hoa Kỳ hoặc AP, độ trễ rất lớn, thường mất khoảng 2,5 giây để hoàn thành thao tác chèn.

Tôi đã thực sự gặp khó khăn trong việc tìm kiếm bất kỳ thông tin nào về cách khắc phục điều này, Aurora xuất hiện rất nhiều trên các diễn đàn và hướng dẫn về cơ sở dữ liệu toàn cầu, nhưng nó yêu cầu sao chép loại phiên bản, với db.r5 là mức tối thiểu, điều này sẽ sớm trở nên rất khó khăn. tốn kém khi chạy nhiều phiên bản.

Có ai gặp phải vấn đề này với việc ghi chậm giữa các khu vực vào DB chính không? VPC ngang hàng có giúp tăng tốc độ này không?

Wilson Hauck avatar
lá cờ jp
Kết quả của CHỌN @@binlog_format là gì; ? Loại ví dụ của bạn là gì? giống nhau ở tất cả các vùng? Kết quả của phiên bản SELECT @@ là gì; ?
Điểm:0
lá cờ gp
Tim

Đây không phải là một câu trả lời đầy đủ, thêm một số suy nghĩ để thử và những câu hỏi không phù hợp với hộp bình luận. Hãy cố gắng chống lại sự thôi thúc downvote :)

Theo cách đó, tính năng ngang hàng VPC chắc chắn đáng để thử lưu lượng vẫn ở trên đường trục AWS điều này sẽ làm giảm độ trễ một chút. Tôi không biết điều đó sẽ giúp được bao nhiêu. Ba khu vực đó cách nhau 200 - 300 mili giây, vì vậy bạn sẽ luôn gặp phải một số độ trễ.

Tôi nghi ngờ cuộc trò chuyện giữa máy khách và DB là nhiều yêu cầu cho một lần chèn - ví dụ: tạo kết nối, kết nối với DB cụ thể, chèn, cam kết, đóng. Nếu đó là trường hợp giảm độ trễ sẽ hữu ích, nhưng việc cắt bỏ một số bước quan trọng hơn. Bạn có đang sử dụng tổng hợp kết nối để các kết nối đã được mở không? Tôi nghi ngờ VPC ngang hàng và tối ưu hóa chung, đây sẽ là giải pháp tốt hơn một trong những ý tưởng bên dưới.

Nếu có bất kỳ cách nào bạn có thể làm cho các bản cập nhật không đồng bộ? Nếu bạn có thể ghi vào hàng đợi SQS được xử lý trong một vùng duy nhất thì có thể việc này sẽ được thực hiện trong vòng một hoặc hai giây. Đây có thể là một tối ưu hóa qua các kết nối cơ sở dữ liệu trực tiếp, tùy thuộc vào tốc độ của nó.

Đa chủ là một tùy chọn khác, sử dụng các tính năng sao chép gốc của cơ sở dữ liệu. Tôi không hoàn toàn chắc chắn liệu bạn có thể làm điều này trong RDS hay không, nhưng có lẽ đáng để xem nếu có thể và những ưu điểm/nhược điểm. Nếu bạn muốn mọi người cập nhật cùng một bản ghi cùng một lúc, bạn sẽ phải bảo vệ chống lại điều đó.

Một tùy chọn khác có thể là sharding, với dữ liệu người dùng cụ thể trên cơ sở dữ liệu cụ thể. Điều đó sẽ làm cho logic ứng dụng của bạn phức tạp hơn.

lá cờ mg
Cảm ơn rất nhiều @Tim, một số mẹo hay ở đây để tôi nghiên cứu thêm về....

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.