2015-11-17 16 views
7

Mam naprawdę ciężki czas z tym. Chcemy użyć Spring Cloud Consul do odkrywania usług, a moje uczelnie naciskają na wykorzystanie Spring Cloud Consul Config przez Spring Cloud Config, którą już wcześniej wdrożyłem dla pokrewnego projektu. Chodzi o to, że Spring Cloud Config działa świetnie i ma płynny, gotowy do użycia tunel kontroli wersji (git) do dynamicznego scentralizowanego zarządzania właściwościami. Aby obsłużyć tę samą funkcjonalność w Spring Cloud Consul Config, wydaje się, że wymagałoby to ponownego wynalezienia koła wypalonego w Spring Cloud Config.Konflikt Spring Cloud Consul na Spring Cloud Config

Czy ktoś ma doświadczenie w korzystaniu z obu? Czy byłoby sens używania obu razem? Oznacza to, że klient konfigurujący Spring Cloud wskazuje serwer konfiguracji Spring Cloud dla bardziej "statycznych" właściwości środowiska (rzeczy, które różnią się między dev, qa, stage, produkcją w obu przypadkach statycznych) i Spring Consul Consul Config dla czystych właściwości dynamicznych, takich jak usługa odkrycie?

Ktoś proszę mnie poprawić, jeśli się mylę, ale z mojego zrozumienia, co będę musiał zrobić, aby wesprzeć dynamiczną kontrolę wersji dla "statycznych" właściwości przy użyciu Spring Cloud Consul Config, potrzebowałbym jakiegoś kanału między gitami oraz fizyczny katalog "/ config" działającej instancji każdej instancji aplikacji Spring Cloud Consul Config:/

+0

Czy widziałeś https://github.com/Cimpress-MCP/git2consul? – spencergibb

+0

Mam, ale to jest przykład dodania zewnętrznego kanału. Jednak Spencer, jeśli go polecasz, jestem zaintrygowany i przyjrzę mu się poważniej. – Starlton

+0

Wziąłem mocniej patrzeć na git2consul. Chociaż jest to konfiguracja pollera, w przeciwieństwie do serwera konfiguracji chmur wiosennych, który próbuje jedynie pobierać nowe zmiany z git, gdy klient zgłasza żądanie, nie jest to biggy ... Powiedział, że problem, który obecnie mam, to że chcę rozpowszechniać skonsultować zestaw plików własności przypisanych do git; jednak jeśli to zrobię, SCCC nie rozszerzy się na poszczególne właściwości, jak zakładałem. Zgaduję, że pomysł na SCCC jest taki, że każdy klucz/wartość odwzorowuje jedną właściwość, co oznacza, że ​​muszę przekonwertować plik .properties na poszczególne klucze/wartości? – Starlton

Odpowiedz

2

tl; dr: Używam konflikta chmury wiosennej i konsulki chmury wiosennej, ale nie konsoli konsula wiosennego.

Nie użyłem konsul Spring Cloud Consul specjalnie, ponieważ nie używam Consul config, ale używam serwera konfiguracji chmury wiosennej, który rejestruje się w konsoli i mam inne mikroserwisy uzyskujące dostęp do serwera konfiguracji wiosennej chmury poprzez konsul do obsługi odkrycie. Zarówno serwer, jak i klient używają konsoli chmury wiosennej, aby zarejestrować i odkryć serwer konfiguracji. A klienci serwera konfiguracji i konfiguracji zarówno używają konfiguracji chmury wiosennej.

Oto moja konfiguracja:

Wiosna Chmura Config Server

zależności:

org.springframework.cloud:spring-cloud-config-server 
org.springframework.cloud:spring-cloud-starter-consul-discovery 
org.springframework.boot:spring-boot-starter-actuator 

bootstrap.properties:

spring.application.name=config-server 
spring.cloud.consul.host=CONSUL_HOSTNAME 
spring.cloud.consul.port=CONSUL_PORT 

application.properties:

spring.cloud.config.server.git.uri=GIT_REPO_URL 
spring.cloud.config.server.git.username=GIT_REPO_USERNAME 
spring.cloud.config.server.git.password=GIT_REPO_PASSWORD 

Application.java:

@SpringBootApplication 
@EnableConfigServer 
@EnableDiscoveryClient 
public class Application 
{ 
    public static void main(String[] args) 
    { 
     SpringApplication.run(Application.class); 
    } 
} 

Wiosna Chmura Application Client

zależności:

org.springframework.cloud:spring-cloud-starter-config 
org.springframework.cloud:spring-cloud-starter-consul-discovery 
org.springframework.boot:spring-boot-starter-web 
org.springframework.boot:spring-boot-starter-actuator 

bootstrap.properties:

spring.application.name=client-app-name 
spring.cloud.consul.host=CONSUL_HOSTNAME 
spring.cloud.consul.port=CONSUL_PORT 
spring.cloud.config.discovery.enabled=true 
spring.cloud.config.discovery.serviceId=config-server 

Aplikacja.Java:

@SpringBootApplication 
@EnableDiscoveryClient 
public class Application 
{ 
    public static void main(String[] args) 
    { 
     SpringApplication.run(Application.class); 
    } 
} 
+0

Dzięki Nicolas, nie jestem w stanie sprawdzić tego w tej chwili, ale Spencer dodał kilka świetnych nowych funkcji do SCCC w zeszłym roku, aby dołączyć obsługę plików [https://github.com/spring-cloud/spring-cloud] -consul/commit/373072182a10b85a1cc23f07b770738330f55c69) oraz integrację git2consul. Prawdopodobnie faworyzowalibyśmy podejście git2consul, ponieważ teraz używamy plików konfiguracyjnych hocon typesafe dla naszej konfiguracji rozproszonej dla projektu, dla którego pierwotnie zainicjowałem to pytanie w imieniu. – Starlton

1

O ile rozumiem, w przypadku zarządzania konfiguracją, w porównanie z wiosny cloud config, konsula (z git2Consul) dostarcza rozwiązania danych wymieniających całej stwardnienie centrum danych i przełączania awaryjnego węzłów.

Do jednokrotnego użycia wystarczy konfiguracja chmury wiosennej (z prostym rozwiązaniem przełączania awaryjnego, np. LVS, master/slave, mechanizm rsync itp.).

Do wykrywania usług, konsul ma mechanizm kontroli stanu i może włączyć automatyczne przełączanie tras. W konfiguracji chmury wiosennej należy wykonać dodatkową pracę, aby wdrożyć półautomatyczne wykrywanie.

Powiązane problemy