Tùy thuộc vào kiến trúc của bạn, bạn có thể sử dụng một số phần mềm thực sự thú vị như Weave với CoreOS (https://github.com/weaveworks/weave). Chúng tôi đang sử dụng Docker để phân phối các ứng dụng của chúng tôi lên các nút CoreOS, và sau đó DNS nội bộ được xử lý bởi Weave.
Điều này thực sự tuyệt vời vì chúng tôi chỉ có thể chuyển tiếp yêu cầu đến tên ứng dụng bằng cổng, sau đó chúng tôi tắt và đi.
Ví dụ: người dùng yêu cầu application.com/api/apiName/request/path
Cổng của chúng tôi được triển khai bằng Nút.js, và phải mất apiName sau/api để định tuyến nó tới api đó, và sau đó đường dẫn sau của URL để nối thêm vào chính cuộc gọi đó.
Vì vậy, yêu cầu từ cổng sẽ được proxy nội bộ dưới dạng apiName: 8080/request/path. Về vấn đề đó, API không yêu cầu thay đổi khi các dịch vụ mới xuất hiện, vì đường dẫn được tạo động từ yêu cầu của bạn.
Điều này thật tuyệt vì chúng tôi không phải lo lắng về việc theo dõi đường dẫn từ các API khác nhau và lưu trữ chúng ở đâu đó.
Nếu không, bạn sẽ phải duy trì một số danh sách các điểm cuối (có thể là bên ngoài) để giúp bạn dễ dàng hơn. Điều này có thể được thực hiện theo chương trình từ chính API.
Tôi không chắc chắn yêu cầu của bạn là gì, tuy nhiên, và như Will đã trả lời, nó có chi phí cơ sở hạ tầng khá lớn. Tuy nhiên, bản phát hành của chúng tôi nhanh và không đau vì chúng tôi không phải lo lắng về việc thực hiện thay đổi mã trong nhiều lớp và API mới nhận proxy, đăng nhập và xác thực cổng của chúng tôi miễn phí.
Hoạt động của cổng API như đăng nhập proxy + bảo mật. Bạn có thể chuyển url tới dịch vụ 'product' mà bạn muốn truy cập và cổng sẽ ủy quyền nó. – sed