2013-07-31 43 views
6

Twilio và các dịch vụ web hướng HTTP khác có khái niệm về fallback URL, trong đó các dịch vụ web gửi một GET hoặc POST tới URL mà bạn chọn nếu URL chính hết thời gian chờ hoặc thất bại. Trong trường hợp của Twilio, họ sẽ không thử lại yêu cầu nếu URL dự phòng cũng không thành công. Tôi muốn URL dự phòng được lưu trữ trên một máy riêng biệt để lỗi không bị mất trong ether nếu máy chủ chính bị lỗi hoặc không thể truy cập được.Lưu trữ và chuyển tiếp các yêu cầu HTTP có thử lại?

Tôi muốn một cách nào đó cho thứ:

  1. yêu cầu Store để URL fallback
  2. Replay các yêu cầu đến một URL hơi khác nhau trên máy chủ chính
  3. Thử lại # 2 cho đến khi thành công , sau đó xóa yêu cầu khỏi hàng đợi/cơ sở dữ liệu

Có một số phần mềm hiện có có thể thực hiện việc này không? Tôi có thể xây dựng một cái gì đó bản thân mình nếu cần thiết, tôi chỉ figured này sẽ là một cái gì đó ai đó đã có thể đã làm. Tôi không quen thuộc với HTTP và các công cụ xung quanh (proxy, proxy ngược, v.v.) để biết mật khẩu phù hợp để tìm kiếm.

Trả lời

3

Có một vài khả năng.

Một tùy chọn là sử dụng Giao thức dự phòng địa chỉ chung hoặc cá chép. Mô tả ngắn gọn từ trang người đàn ông sau.

"cá chép cho phép nhiều máy chủ trên cùng một mạng cục bộ chia sẻ một bộ địa chỉ IP. Mục đích chính của nó là đảm bảo rằng các địa chỉ này luôn có sẵn, nhưng trong một số cấu hình, cá chép cũng có thể cung cấp chức năng cân bằng tải."

Có thể định cấu hình cân bằng IP sao cho khi dịch vụ http chính hoặc chính không thành công, dịch vụ http phụ hoặc dự phòng trở thành chính. cá chép là máy chủ định hướng trái ngược với dịch vụ ứng dụng. Vì vậy, khi dịch vụ http đi xuống, nó cũng sẽ đưa xuống giao diện mạng cho cá chép để làm điều của nó. Điều này có nghĩa là bạn sẽ cần nhiều hơn một địa chỉ IP để đăng nhập vào máy và thực hiện bảo trì. Bạn sẽ cần một tập lệnh để thực hiện các hành động tiếp theo sau khi dịch vụ gốc trở lại trực tuyến.

Tùy chọn thứ hai là sử dụng nginx. Điều này có lẽ phù hợp hơn với những gì bạn đang cố gắng làm.

Nhiều năm trước tôi cần một cái gì đó tương tự như những gì đang cố gắng làm và tôi đã kết thúc với nhau một cái gì đó đã làm nó. Về cơ bản nó là một công tắc. Khi 'A' không thành công, chuyển sang 'B'. Quá trình đồng bộ hóa lại là lấy các bản ghi có dấu thời gian từ 'B' và phát lại chúng 'A', khi 'A' đã trở lại trực tuyến.