通过配置服务器 Config Server 获取到了我们配置的 hello 信息“hello world”. 但自己的配置文件中必须配置 config server 的 URL(http://localhost:8888), 如果把 config server 搬到另外一个独立 IP 上, 那么作为一个 client 的 hello world 应用必须修改自己的 bootstrap.yml 中的 config server 的 URL 地址,这明显是不够方便的。
既然 config server 已经注册到了 eureka 服务中心,能否让服务中心自动帮 hello world 应用找到它需要的 config server 呢? 答案是肯定的。我们的 hello world 应用只需要提供它需要的配置所在在的 config server 的名字就可以了, 在前面例子中,配置服务的名字就是“config-server”。那我们现在就把之前的服务和应用稍作修改, 来达到自动发现服务的方案。下图是 Spring Cloud 提供的服务发现机制。Config-server 是其中的 Service Provider, Config-client 是 Service Consumer, 它们都注册到服务中心 Eureka Server。
1. 将 config-server 注册到服务中心
config-server 本身就是一个 Spring Boot 应用, 可以直接参考 Spring Cloud 入门(一): 服务注册, 将 config-server 注册到 eureka server 中。访问 http://localhost:8761, 可以看到我们的 config-server 已经注册。
2. 修改 hello world 应用的配置
1).同样,需要将 Hello 我让你的应用注册到 eureka 服务中心, 配置方法同前面一样。
2).修改配置文件,将 config-server 的 URL 硬编码机制改成,通过服务中心根据名字自动发现机制, 修改 bootstrap.yml
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/
spring:
application:
name: config-client
cloud:
config:
label: master
profile: dev
# uri: http://localhost:8888/
discovery:
enabled: true
serviceId: config-server
management:
security:
enabled: false
server:
port: 8881
我们注释掉了硬编码的 config-server 的 URL 配置, 取而代之的是服务注册中心的地址 http://localhost:8761/eureka/以及配置服务的名字“config-server”, 同时打开自动发现机制 discovery.enable = true. 我们在运行一下 hello world 应用, 可以发现, GIT 里面的内容依然可以访问。此时我们的 hello world 应用已经完全不知道配置服务的地址,也不知道配置的内容, 所有这些都通过服务注册中心自动发现。
3. 微服务化
当服务很多时,都需要同时从配置中心读取文件的时候,这时我们可以考虑将配置中心做成一个微服务,并且将其集群化,从而达到高可用,架构图如下:
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于