7

Ho 4 istanze dello stesso servizio in esecuzione su host diversi. Sto distribuendo la nuova versione per quel nodo di servizio per nodo. Durante la distribuzione, le richieste in entrata vengono inoltrate in base al bilanciamento del carico a qualsiasi versione (host). C'è un modo in netflix in cui posso inoltrare tutte le richieste in arrivo a una versione specifica?Come inoltrare tutte le richieste a una versione specifica (dello stesso servizio) durante la distribuzione utilizzando netflix?

Esiste un modo generico in cui è possibile definire la versione (per lo stesso servizio ID). E se le richieste in entrata hanno la versione definita nell'intestazione, possiamo usarla per inoltrare le richieste a una versione specifica.

potrebbe essere qualcosa di simile:

In Zuul Proxy,

zuul: 
    routes: 
    sample: 
     path: /sample/{version}/** 
     serviceId: sample-service 

Nel campione-service,

eureka: 
    instance: 
    appname: sample-service 
    metadataMap: 
     version: v1 

o qualsiasi altro meccanismo per ottenere il controllo delle versioni del servizio stesso?

+0

Non integrato. Dovresti scrivere un filtro zuul personalizzato o fare qualcosa con il nastro nella risposta qui sotto. – spencergibb

risposta

5

Penso che stiate andando nel modo giusto. Puoi scrivere il tuo @RibbonClient che è fondamentalmente una classe @Configuration per il bilanciamento del carico per servizio.

@RibbonClient(name = "yourServiceName", configuration = RibbonConfigForThatService.class).

In questo è possibile posizionare il proprio IRule - e se necessario qualsiasi altro componente - per tale servizio. Con questo è possibile filtrare le istanze disponibili per il bilanciamento del carico in base ai loro metadati.

RoundRobinRule fa un semplice bilanciamento del carico round robin, buon esempio per ulteriori esigenze.

+0

Grazie. Ha funzionato. –

Problemi correlati