7

Mam 4 wystąpienie tej samej usługi uruchomionej na różnych hostach. Wdrażam nową wersję dla tego węzła usługi po węźle. Podczas wdrażania, przychodzące żądania są przekazywane zgodnie z modułem równoważenia obciążenia do dowolnej wersji (hosta). Czy jest jakiś sposób w netflix, w którym mogę przekazać wszystkie przychodzące żądania do konkretnej wersji?Jak przekazać wszystkie żądania do konkretnej wersji (tej samej usługi) podczas wdrażania za pomocą netflix?

Czy istnieje ogólny sposób, w którym możemy zdefiniować wersję (dla tego samego serviceId). A jeśli żądania przychodzące mają wersję zdefiniowaną w nagłówku, możemy jej użyć do przekazania żądań do konkretnej wersji.

może być coś podobnego:

W Zuul Proxy,

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

W przykładowym-Service,

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

lub inny mechanizm do osiągnięcia wersjonowanie samą usługę?

+0

Nie wbudowane. W poniższej odpowiedzi musisz napisać niestandardowy filtr zuul lub zrobić coś ze wstążką. – spencergibb

Odpowiedz

5

Myślę, że kierujesz się właściwą drogą. Możesz napisać własną klasę @RibbonClient, która jest w zasadzie klasą @Configuration dla loadbalancingu na usługę.

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

W tym miejscu można umieścić swój własny IRule - i, jeśli to konieczne, dowolny inny składnik - dla tej usługi. Dzięki temu możesz filtrować instancje dostępne dla loadbalancing na podstawie ich metadanych.

RoundRobinRule wykonuje proste równoważenie obciążenia, co jest dobrym przykładem na dalsze potrzeby.

+0

Dzięki. Zadziałało. –

Powiązane problemy