Giải pháp quản lý API [đã đóng]


9

Tôi hiện đang xây dựng API và đang tìm kiếm một công cụ cho phép tôi giám sát (trong GUI) và sử dụng giới hạn tỷ lệ. Tôi đã đi qua một vài giải pháp doanh nghiệp bao gồm:

Kế hoạch doanh nghiệp Apigee chính xác là những gì tôi đang tìm kiếm nhưng kế hoạch bắt đầu ở mức $ 3000 / tháng nằm ngoài phạm vi giá của tôi. Các giải pháp khác đều quá đắt hoặc không cung cấp giải pháp tôi đang tìm kiếm.

Điều này khiến tôi xem xét một số tùy chọn nguồn mở bao gồm:

Varnish có vẻ như là một giải pháp khá đầy đủ; tuy nhiên, tôi sẽ cần xây dựng một GUI để trực quan hóa dữ liệu.

Tùy chọn cuối cùng của tôi sẽ xây dựng một giải pháp từ đầu bằng cách sử dụng EventMachine và ruby.

Có lời khuyên nào không?


1
Mike. Tôi là nhà phát triển của Api Axle. Không có trực quan hóa các số liệu thống kê nhưng Axle đi kèm với một API nên việc xây dựng nó tương đối dễ dàng. Hãy ping tôi nếu bạn nghĩ tôi có thể giúp đỡ.
Phil Jackson

2
Tôi chưa thử nghiệm nhưng về việc sử dụng nginx với redis và triển khai loại thuật toán này chris6f.com/rate-limiting-with-redis
hellvinz

Câu trả lời:


3

Tôi nghĩ bạn đánh giá quá cao việc này khó như thế nào.

Trong mã của bạn chỉ cần có một bộ đếm với redis / memcached / mongodb (bộ đếm 1/24 giờ hoặc bộ đếm hàng giờ / hàng ngày tùy theo nhu cầu của bạn) và trả về lỗi thích hợp khi đã đạt được giới hạn. Bạn có thể tăng số đếm ngay tại đó hoặc thực hiện không đồng bộ khi xử lý nhật ký của mình.

Để hiển thị dữ liệu, chỉ cần tạo một trang web đơn giản tóm tắt số lượng cần thiết.

Để sử dụng, chúng tôi không cần giới hạn chính xác mọi thứ, vì vậy chúng tôi thường chỉ đăng nhập qua cơ sở hạ tầng nhật ký của chúng tôi và một trong những bộ xử lý nhật ký (thời gian thực thông qua scribe) sẽ tóm tắt loại điều này. Đầu ra là một trang HTML đơn giản với các IP / máy khách bận rộn, một số trang mà nagios có thể theo dõi và một số URL mà munin lấy dữ liệu để tạo biểu đồ.


1

Bạn có thể sử dụng naxsi với nginx. chỉ ghi đè vị trí / requestDenied của bạn với các quy tắc giới hạn bạn cần:

ánh xạ các tham số chuyển hướng naxsi đến giới hạn tương ứng:

map $arg_uri $limit_uri {
  123.php   limit_zone1;
  234.php   limit_zone2;
default limit_default;
}

giới hạn sử dụng tại địa điểm:

 location /RequestDenied {
     proxy_pass http://127.0.0.1:4242;
     limit_req $limit_uri;
   }
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.