我真的很难过这个。我们希望使用Spring Cloud Consul进行服务发现,我的大学正在推动使用Spring Cloud Consul Config而不是Spring Cloud Config,我之前已经为相关项目实施过。问题是,Spring Cloud Config运行良好,并且具有无缝的开箱即用版本控制管道(git),用于动态集中管理属性。为了在Spring Cloud Consul Config中支持相同的功能,似乎需要重新发明已经融入Spring Cloud Config的轮子。
有没有人有使用两者的经验?将两者结合使用是否合理?也就是说,让Spring Cloud Config Client指向Spring Cloud Config Server以获得更多"静态"环境属性(在dev,qa,stage,production和static之间不同的东西)和Spring Cloud Consul Config用于纯动态属性,如服务发现?
如果我错了,请有人纠正我,但是根据我的理解,我需要做些什么来支持动态版本控制"静态"使用Spring Cloud Consul Config的属性,我需要在git和physical" / config"之间使用某种管道。每个Spring Cloud Consul Config应用程序实例的运行实例的目录:/
答案 0 :(得分:3)
tl; dr:我使用spring cloud config和spring cloud consul但不使用spring cloud consul config。
我没有专门使用spring cloud consul配置,因为我没有使用consul配置,但是我使用的是一个在领事中注册的spring cloud配置服务器,我还有其他微服务通过consul访问spring cloud配置服务器进行服务发现。服务器和客户端都使用spring cloud consul来注册和发现配置服务器。配置服务器和配置客户端都使用spring cloud config。
这是我的设置:
Spring Cloud配置服务器
依赖关系:
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);
}
}
Spring Cloud Client Application
依赖关系:
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
Application.java:
@SpringBootApplication
@EnableDiscoveryClient
public class Application
{
public static void main(String[] args)
{
SpringApplication.run(Application.class);
}
}
答案 1 :(得分:3)
据我了解,在配置管理的情况下,与spring cloud配置相比,Consul(与git2Consul)提供跨多个数据中心交换数据和节点故障转移的解决方案。
对于单数据中心使用,spring cloud配置(使用简单的故障转移解决方案,例如LVS,主/从,rsync机制等)就足够了。
对于服务发现,Consul具有健康检查机制,可以启用自动切换路由。在spring cloud config中,需要做额外的工作来实现半自动发现。