HTTPAPI(一种由SpringCloudConfigServer)的依赖项中

构建服务器端应用程序

HTTP API(Spring Cloud Config Server 提供的基于资源的 API)以及创建和存储属性的方法在上一篇文章中已经讨论过了。现在我们需要回到基础。与发现服务器一样,配置服务器可以作为 Spring Boot 应用程序运行。要在服务器端启用它,spring cloud-config-server 应该包含在 pom.xml 文件的依赖项中。

org.springframework.cloud

弹簧云配置服务器

除此之外,开发人员还应该在主应用程序类上启用 Config Server。将服务器端口改为888是个好主意,因为客户端的spring.cloud.config.uri属性的默认值也是888端口。当然,这是在客户端自动配置时说的。要将服务器切换到不同的端口,您应该在端口 888 上设置 server.port 属性或使用 spring config.name=configserver 属性启动它。下面是嵌入在 spring cloud config.server 库中的 configserver.yml。

@SpringBootApplication

@EnableConfigServer

公共类 ConfigApplication {

公共静态 void main(Stringl] args) (

新的

SpringApplicationBuilder (ConfigApplication.class) .web (true) .run (args);

}

}

构建客户端应用程序

如果将8888端口设置为服务器的默认端口,客户端的配置就变得非常简单。开发人员需要做的就是提供一个包含应用程序名称的 bootstrap.yml 文件,并在 pom.xml 中包含以下依赖项。当然这个规则只适用于localhost,因为客户端自动配置的Config Server地址是ht://oc/hos/888.

组织。弹簧框架。云

弹簧云启动器配置

如果服务器设置为与 888 不同的端口,或者它运行在与客户端应用程序不同的机器上,则它的当前地址也应在 bootstrap.yml 中设置。以下是 Bootstrap 的上下文设置,它允许开发人员从端口 8889 上可用的服务器获取客户端服务属性。当应用程序使用 –spring.profiles.active-zonel 参数运行时,它会自动获取在zonel 配置文件的配置服务器。

春天:

应用:

名称:客户服务

云:

配置:

网址::8889

开发人员可能已经注意到,发现服务的网络位置地址存在于客户端属性中。因此,在启动客户端服务之前,应该运行 Eureka Server。当然,Eureka 也有自己的配置,它已经存储在 application.yml 文件中,如第 4 章示例中所述。与 client-service 类似应用程序端口用得完,配置已拆分为 3 个配置文件,每个配置文件在属性,例如服务器的 HTTP 端口数和发现的要与之通信的对等点列表。

现在,这些属性文件可以放在配置服务器上。Eureka 将在启动时将所有设置分配给选定的配置文件。文件命名与描述的标准一致,应该是discovery-service-zone[n].yml。在运行 Eureka Server 之前,需要在依赖项中包含 spring-cloud-starter-config 以启用 Spring Cloud Config Client,并将 application.yml 替换为 bootstrap.yml,如下所示。

春天:

应用:

名称:发现服务

云:

配置:

网址::8889

接下来,通过在 –spring profiles.active 属性中设置不同的配置文件名称,可以在对等通信模式下运行 3 个 Eureka Server 实例。启动 3 个客户端服务实例后,我们的架构将如图 5.1 所示。与第 4 章中的示例相比,这里的客户端和发现服务都从 Spring Cloud Config Server 获取配置,而不是将其保存为胖 JAR 中的 YML 文件。

客户端引导方法

在前面介绍的示例解决方案中,所有应用程序都必须维护配置服务器的网络位置。服务发现的网络位置将作为属性存储在其中。此时,开发人员面临一个需要讨论的有趣问题。问题是:我们的微服务是否应该知道 Config Server 的网络地址?我们在之前的讨论中同意这个结论:对于服务的所有网络位置,应该保留的主要位置是服务发现服务器。配置服务器与其他微服务一样是 Spring Boot 应用程序,因此从逻辑上讲,它应该向 Eureka 注册自己,以便为必须从 Spring Cloud Config Server 获取数据的其他服务启用自动发现机制。

在这两种不同的方法之间进行选择是开发人员在设计系统架构时需要做出的决定之一。这并不是说一种解决方案一定比另一种更好。使用 spring-cloud-config-lient 工件的任何应用程序的默认行为在 Spring Cloud 术语中称为 Config First Bootstrap。当配置客户端启动时,它会绑定到服务器并使用远程属性源初始化上下文。这个解决方案已经出现在本章介绍的第一个示例中。在第二种解决方案中,Config Server 将注册服务发现,所有应用程序都可以使用 DiscoveryClient 来定位它。这种方法称为 Discovery First Botstrap。接下来我们将通过一个具体的例子来说明这个概念。在 GitHub 上访问此示例。开发人员需要切换到配置。_with_发现分支。以下是它的链接地址。

com/piomin/ 示例 -spring-cloud-netflix/tree/config 与发现。

第一个更改与 sample-service-discovery 模块有关。在这个例子中,开发者不需要 spring-cloud.starter-config 依赖,因为它的简单配置不是从远程属性源获取的,而是在 bootstrap.yml 中设置的。与前面的示例不同,这里我们启动一个独立的 Eureka 实例来简化练习。

春天:

应用:

名称:发现服务

服务器 :

端口:${PORT:8761}

尤里卡:

客户:

registerWwithEureka: 假

获取注册表:假

与上一个示例的另一个区别是开发人员应该为配置服务器包含 spring-cou-tarter-eureka 依赖项。完整的依赖项列表现在显示在下面的代码中。此外,必须通过在主类上声明 @EnableDiscoveryClient 注释来启用发现客户端,并且应通过将 application.yml 文件中的 eureka.lcitseveicerl.defautZoe 属性设置为 http://ocahost8761/eureka/ 来提供 Eureka 服务器地址.

org.springfr amework.cloud

弹簧云配置服务器

org.springframework.cloud

spring-cloud-starter-eureka

在客户端应用程序中,不再需要保存 Config Server 的地址,只需设置服务 ID,以防与 Config Server 不同。根据上面示例中服务使用的命名约定,ID 应该是 config-server。它应该被 spring .cloud.config 发现 serviceld 属性覆盖。开启发现机制,让发现机制可以从配置服务器获取远程属性源,开发者需要设置spring.cloud.config discovery.enabled-true。

春天:

应用:

名称:客户服务

云:

配置:

发现:

启用:真

serviceId:配置服务器

图 5.2 是包含 Eureka 仪表板的屏幕截图,其中包含一个 Config Server 实例和 3 个已注册的客户端服务实例。客户端的 Spring Boot 应用程序的每个实例都与前面的示例相同应用程序端口用得完,并以 -spring.profiles.active=zone[] 参数启动,其中 n 是区域的编号。唯一不同的是,Spring Cloud Config Server 提供的所有客户端服务配置文件与 Eureka Server 的连接地址相同。

本文的内容是构建服务器端应用程序。下一篇会讲解repository的后端类型;觉得文章不错的朋友可以转发这篇文章,关注小编;谢谢您的支持!

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论