DNS für REST-API auf Maschinen mit unterschiedlichen Ressourcen

DNS für REST-API auf Maschinen mit unterschiedlichen Ressourcen

Angenommen, ich habe ein REST-API-System mit diesen Anforderungen:

The API that can be accessed via this URL http://<ipaddress>/api/
I have three computers with three IP addresses: IP A, B and C respectively. 

Each of this computer can be accessed via URL API specified earlier.
to access A the URL is http://<IP A>/api.
to access B the URL is http://<IP B>/api.
to access C the URL is http://<IP C>/api.

Each computer may have different information / resources.
A has resource X
B has resource Y
C has resource Z

Client 1 has access in resource X
Client 2 has access in resource Y
Client 3 has access in resource Z

Frage: Kann ich diese drei API-Zugriffe in einer einzigen URL unter Verwendung eines Domänennamens erstellen? Zum Beispiel:http://beispiel/apifür diese drei Computer (A, B und C in einer einzigen URLhttp://beispiel/api)?

Was ich weiß, ist, dass der DNS mehrere IPs zurückgeben kann und der Client im Round-Robin-Verfahren eine IP auswählen kann. In diesem Fall haben A, B und C jedoch unterschiedliche Ressourcen. Der Client muss also einer bestimmten Maschine zugeordnet werden. Beispielsweise muss die Anfrage von Client 1 dem Computer A zugeordnet werden, auf dem sich die Ressource X befindet.

Zusatzfrage: Wenn DNS nicht geeignet ist, gibt es ein anderes verteiltes Protokoll zur Implementierung dieser Art von System?

Danke schön.

Antwort1

Sie haben mehrere Möglichkeiten. Die einfachste ist:

Verwenden Sie einen DNS-Eintrag mit Round Robin, zum Beispiel api.yourcompany.com, damit alle Clients überhttp://api.IhreFirma.com/apiund durch Round Robin wird der Zugriff mehr oder weniger ausgeglichen. Dann können Sie für jeden Dienst X, Y, Z einen DNS-Eintrag wie servicex.yourcompany.com, servicey.yourcompany.com ... erstellen, indem Sie einen CNAME verwenden, der auf den richtigen Server verweist.

Wie Ian Bamforth erklärte, können Sie auch einen Reverse-Proxy (Nginx, Apache, Haproxy usw.) davor haben und je nach verwendeter URL zu den erforderlichen Diensten weiterleiten.

BEARBEITEN:

Beispielkonfigurationen für Apache

<Proxy "balancer://apicluster">
    BalancerMember "http://serverx.yourcompany.com:80"
    BalancerMember "http://servery.yourcompany.com:80"
    BalancerMember "http://serverz.yourcompany.com:80"
</Proxy>

ProxyPass /api/ balancer://apicluster/api/
ProxyPass /servicex/ http://serverx.yourcompany.com/servicex/
ProxyPass /servicex/ http://servery.yourcompany.com/servicey/
ProxyPass /servicex/ http://serverz.yourcompany.com/servicez/

Auf diese Weise werden Anfragen, die mit der URL /api an Ihren Server eingehen,weitergeleitetüber den Load Balancer werden die URLs /servicexweitergeleitetzu Serverx und so weiter.

verwandte Informationen