2014-12-08 19 views
5

Chúng tôi có nhiều tài nguyên được tiếp xúc dưới dạng dịch vụ REST và chạy vào đối số thiết kế cho dù khách hàng cần thực hiện logic thử lại nếu dịch vụ không khả dụng do lỗi mạng và/hoặc cấp ứng dụng. Nó có đáng không? Một nhóm lập luận, nếu dịch vụ không có sẵn thì không có điểm cố gắng lại nhưng nhóm khác lập luận rằng có thể có các vấn đề về mạng bận và việc thử lại có thể hữu ích. Không có thống kê nào để bảo vệ đối số tại thời điểm này. Làm thế nào về việc thực hiện một URL quay trở lại (một bản sao của tài nguyên http gốc) và sử dụng dịch vụ thu hồi trong các lần thất bại.Thử lại mẫu Vs mẫu quay ngược lại trong máy khách phần còn lại

Bất kỳ đề xuất nào dựa trên trải nghiệm trước của bạn?

+0

Câu trả lời có liên quan là http://stackoverflow.com/a/22407843/1168342 – Fuhrmanator

+1

Tôi đề nghị sách của Hanmer về các mẫu phần mềm chịu lỗi: http://www.amazon.com/Patterns-Fault-Tolerant-Software-Series -ebook/dp/B00DXK33SK – Fuhrmanator

Trả lời

3

Một điều cần lưu ý là nếu yêu cầu dịch vụ không thành công, có thể do quá tải mạng. Trong trường hợp đó, lựa chọn tốt nhất là thất bại ngay lập tức. Về việc sử dụng URL quay lại, có thể nó sẽ không giải quyết được sự cố của bạn vì nó có thể giữ cho mạng ở mức tải cao.

Đề xuất là để có một cái nhìn trong mô hình như:

7

Nói chung, bạn nên thử lại các yêu cầu không thành công. Luôn đặt giới hạn thử lại hợp lý. Nó cũng phổ biến để có một số phản ứng máy chủ báo hiệu máy khách không thử lại, sử dụng khi máy chủ gặp sự cố không được giải quyết bằng cách thử lại sau, như lỗi DB. Một cách rất tốt để tránh búa máy chủ dưới tải cao với các yêu cầu thử lại là sử dụng lệnh trả lại theo hàm mũ, ví dụ như lần thử lại đầu tiên sau 30 giây, tiếp theo sau 300 giây, v.v.

URL dự phòng có vẻ không ổn định phải là điểm cuối duy nhất cho tài nguyên. Nó không quan trọng đối với khách hàng liệu điểm cuối đó có được hỗ trợ bởi ngăn xếp chính hay bản sao lưu của bạn hay không. Thông thường một điều phối viên được sử dụng để phân phối các yêu cầu giữa các máy chủ ứng dụng sao cho nếu một không thành công, nó có thể chuyển hướng lưu lượng truy cập đến những người khác cho đến khi vấn đề được khắc phục.

Các vấn đề liên quan