2013-12-16 14 views
9

Tôi đang nghiên cứu cách các công ty lớn quản lý các API công khai của họ. Tôi đang nghĩ đến các công ty có API được thành lập như Google, Facebook, Twitter và Amazon.Các công ty cung cấp API có sử dụng shim hoặc proxy trước API của họ không?

Các công ty này có một số API khác nhau mà chúng hiển thị cho công chúng. Google, ví dụ, có các API Plus, AdSense, AdWords, v.v. được sử dụng công khai. Tôi muốn hiểu nếu họ sử dụng một cụm máy chủ proxy ngược trước các API đó để cung cấp chức năng phổ biến để các máy chủ API chuyên gia của họ không cần triển khai điều đó.

Ví dụ: Điều chỉnh và xác thực có thể được xử lý ở lớp này thay vì thực hiện nó trong mỗi cụm API.

Các câu hỏi: Có ai sử dụng shim hoặc proxy ngược trước API của họ để xử lý các tác vụ phổ biến không? Các trường hợp sử dụng làm cho một proxy ngược lại là một ý tưởng tốt hay xấu cho một cụm máy chủ API?

Trả lời

18

Hầu hết các công ty lớn khám phá nhiều thứ khác nhau để xử lý lưu lượng truy cập và tải trên máy chủ của họ. Nói một cách chi tiết:

  1. Bộ cân bằng tải nằm giữa điểm vào và máy khách thực.
  2. Một proxy ngược thường nằm giữa các tệp này để xử lý các tệp tĩnh, các chế độ xem được tính trước/hiển thị và các tài sản tĩnh khác như vậy.
  3. Bất kỳ phép đúc nào được sử dụng cho mục đích DNS, do đó bạn được định tuyến đến máy chủ gần nhất xử lý URL đó.
  4. Áp lực ngược được sử dụng trong các hệ thống để hạn chế số lượng yêu cầu nạp thông qua một đường ống đơn và do đó các dịch vụ không bị lật đổ.
  5. Memcached, Redis và các loại tương tự được sử dụng như bộ đệm ngắn hạn. Đó là, nếu nó sẽ gần như là kết quả tương tự mỗi 5 giây, sau đó kết quả đó có thể được lưu trữ trong bộ nhớ để phân phối nhanh hơn. Một số proxy có thể được cấu hình để đọc trong số này.

Nếu bạn thực sự quan tâm, hãy bắt đầu đọc một số blog Netflix. Hãy xem một số nguồn mở mà họ đã sử dụng như Hystrix hoặc Zuul. Bạn cũng có thể xem một số trong số videos của họ. Họ sử dụng nhiều proxy và đã xây dựng một số hành vi phân tán rất tiên tiến.

Theo như một proxy ngược lại là một ý tưởng hay, hãy suy nghĩ về thất bại. Nếu dịch vụ của bạn gọi ra một API khác bằng tuyến đường trực tiếp và dịch vụ đó không thành công, khi đó dịch vụ của bạn sẽ không thành công và xếp tầng lên cho người dùng cuối. Mặt khác, nếu nó nhấn một proxy ngược, thì proxy đó có thể được cấu hình hoặc thậm chí tự động phát hiện lỗi và chuyển hướng lưu lượng để sao lưu máy chủ.

Theo như proxy ngược lại là ý tưởng hay, hãy suy nghĩ về tải. Đôi khi, máy chủ chỉ có thể xử lý một phần lưu lượng truy cập riêng lẻ để tải phải được chia sẻ trên nhiều máy chủ. Điều này đúng không chỉ của CPU giới hạn mà còn tài nguyên IO giới hạn (ngay cả khi bản thân tín hiệu trả về sẽ không phải là nguyên nhân của việc giới hạn IO.)

Daisy chaining như thế này thể hiện địa ngục đặc biệt của nó nhưng đôi khi không thể tránh khỏi. Trên những nhược điểm và những gì làm cho nó một sự lựa chọn thực sự xấu nếu bạn có thể tránh nó ở tất cả các chi phí là một mất hành vi xác định. Đôi khi những điều ngu xuẩn nhất sẽ khiến máy chủ của bạn bị hỏng. Và bởi ngu ngốc, tôi có nghĩa là, thực sự, những thứ thực sự ngu ngốc mà bạn không bao giờ nghĩ trong một triệu năm có thể cắn bạn trong mông (nghĩ rằng đồng hồ máy chủ không đồng bộ.) Bạn phải bắt đầu sử dụng triển khai cuộn mã, gỡ máy chủ theo cách thủ công hoặc mạnh mẽ nếu họ ngừng phản hồi và giữ các cấu hình proxy đó theo thứ tự tốt.

Hỗ trợ HTTP1.1 cũng có thể là một vấn đề. Không phải tất cả proxy ngược đều tuân theo thông số kỹ thuật. Trong thực tế, một số người trong số họ chỉ bao gồm ~ 50%. HAProxy không thực hiện SSL. Nếu bạn chỉ có phần cứng hạn chế thì proxy dựa trên luồng có thể đột ngột thay đổi hệ thống bằng các luồng.

Cuối cùng, thêm vào một proxy là một điều nữa sẽ phá vỡ (không thể, sẽ.) Bạn phải theo dõi chúng giống như bất kỳ phần nào của nền tảng, tổng hợp nhật ký của chúng và chạy thử nghiệm trên chúng.

+0

Tôi rất tiếc vì tôi phải mơ hồ và không thể cung cấp cấu hình hệ thống thực tế, thỏa thuận NDA loại trừ hoàn toàn trả lời. – wheaties

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