分布式服务器(使用SpringCloudConfig进行分布式配置)

构建服务器端应用程序在前一篇文章中已经讨论了HTTP API ( 一种由Spring Cloud Config Server 提供的基于资源的API) ,以及通过它创建和存储属性的方法。现在我们需要回归到基础方法。与发现服务器相同,Config Server可以作为Spring Boot应用程序运行。要在服务器端启用它,应该在pom.xml文件的依赖项中包含spring cloud-config-server.<dependency><groupId>org. springf ramework.cloud</ groupId><artifactId>spring-cloud-config-server</artifactId></ dependency>除此之外,开发人员还应该在主应用程序类上启用Config Server. 将服务器端口更改为888是一个好主意,因为客户端上spring.cloud.config.uri属性的默认值也是888端口。当然,这里说的是它在客户端上自动配置时的情况。要将服务器切换到不同的端口, 则应该将server.port属性设置在888端口上,或者使用spring config. name= configserver属性来启动它。下面是一个在spring cloud config. server库中嵌入的configserver.yml.@SpringBootApplication@EnableConfigServerpublic class ConfigApplication {public static void main(Stringl] args) (newSpringApplicationBuilder (ConfigApplication.class) .web (true) .run (args);}}构建客户端应用程序如果将端口8888设置为服务器的默认端口,则客户端的配置就会变得非常简单。开发人员需要做的就是提供包含应用程序名称的bootstrap.yml文件,并在pom.xml中包含以下依赖项。当然,该规则仅适用于localhost,因为客户端自动配置的Config Server 地址就是ht://oc/hos/888.<dependency><groupId>org. spr ingf ramework. cloud</groupId><artifactId>spring-cloud-starter-config</artifactId></dependency>如果为服务器设置了不同于888的端口,或者它在与客户端应用程序不同的计算机上运行,则还应在bootstrap.yml中设置其当前地址。以下是Bootstrap的上下文设置,它允许开发人员从端口8889 上可用的服务器获取client-service 的属性。当使用–spring.profiles. active-zonel参数运行该应用程序时,它会自动获取配置服务器中为zonel配置文件设置的属性。spring:application:name: client-servicecloud:config:uri: http://localhost:8889开发人员可能已经注意到,客户端属性中存在发现服务网络位置的地址。因此,在启动客户端服务之前,应该运行Eureka Server。当然,Eureka 也有它自己的配置,并且已经存储在application.yml文件中,这在第4章的示例中已有说明。与client-service类似,该配置已分为3个配置文件,其中,每个配置文件在服务器的HTTP端口的数量和要与之通信的发现对等体列表等属性上都不同。现在,可以将这些property文件放在配置服务器上。Eureka 将在启动时获取分配给所选配置文件的所有设置。文件命名与已描述的标准一致, 这意味着它应该是discovery-service- zone[n].yml.在运行Eureka Server之前,应该在依赖项中包含spring-cloud-starter-config以启用Spring Cloud Config Client,并将application.yml替换为bootstrap.yml,如下所示。spring:application:name: discovery-servicecloud:config:uri: http://localhost:8889接下来,可以通过在–spring profiles.active属性中设置不同的配置文件名称,以对等通信模式运行Eureka Server 的3个实例。启动3个客户端服务实例后,我们的架构将如图5.1所示。与第4章中的示例相比,这里的客户端和发现服务都从Spring Cloud Config Server获取配置,而不是将其保存为胖JAR中的YML文件。客户端引导方法在之前介绍的示例解决方案中,所有应用程序都必须保持配置服务器的网络位置。服务发现的网络位置将作为属性存储在其中。在这一点上, 开发人员面临着一个需要讨论的有趣问题。这个问题是:我们的微服务是否应该知道Config Server 的网络地址? 在之前的讨论中我们同意这个结论:对于所有服务的网络位置来说,应保留的主要位置是服务发现服务器。配置服务器和其他微服务一样,也是Spring Boot应用程序,因此从逻辑上讲,它应该向Eureka注册它自己,以便为必须从Spring Cloud Config Server获取数据的其他服务启用自动发现机制。这反过来要求将服务发现连接设置放在bootstrap.yml中,而不是放在spring cloud.config.uri属性中。在这两种不同方法之间进行选择,是开发人员在设计系统架构时需要做出的决策之一。这里的意思并不是说一个解决方案就一定比另外一个解决方案更好。对于任何使用spring-cloud-config-lient工件的应用程序来说,其默认行为在Spring Cloud术语中被称为配置优先引导(Config First Bootstrap) 。当配置客户端启动时,它会绑定到服务器并使用远程属性源初始化上下文。这个解决方案在本章介绍的第一个示例中已经有所体现。在第二个解决方案中,Config Server 将注册服务发现,并且所有应用程序都可以使用DiscoveryClient来定位它。这种方法被称为发现优先引导(Discovery First Botstrap)。接下来我们将通过一个具体示例来说明这个概念。要访问GitHub.上的这个示例,开发人员需要切换到config. _with_ discovery 分支。以下是其链接地址。https://github. com/piomin/ sample -spr ing-cloud-netflix/tree/config with discovery.第一个更改与sample-service -discovery模块有关。在本示例中,开发人员不需要spring- cloud. starter-config依赖,因为其简单配置并不是从远程属性源获取,而是在bootstrap.yml中设置的。与前面的示例不同,这里我们启动了一个独立的Eureka 实例,以简化练习。spring:application:name: discovery- serviceserver :port: ${PORT:8761}eureka:client:registerWwithEureka: falsefetchRegistry: false与前面的示例相比还有一个不同,那就是开发人员应该为Config Server 包含spring- cou-tarter-eureka依赖项。现在,完整的依赖项列表显示在以下代码中。此外,必须通过在主类上声明@EnableDiscoveryClient注释来启用发现客户端,并且应通过在application.yml文件中将eureka.lcitseveicerl.defautZoe 属性设置为htp:/:/ocahost8761/eureka/来提供Eureka服务器地址。<dependency><groupId>org. springfr amework. cloud</groupId><artifactId>spring-cloud-config-server</artifactId></ dependency><dependency><groupId>org .springframework. cloud</groupId><arti factId>spring-cloud-starter -eureka</artifactId></dependency>在客户端应用程序中,不再需要保存配置服务器的地址,唯一要做的事情便是设置服务ID,以防它与Config Server 不同。根据以上示例中用于服务的命名约定,该ID应该是config-server。 它应该被spring .cloud.config discovery serviceld属性覆盖。为了允许发现机制启用,使得发现机制可以从配置服务器获取远程属性源,开发大员应该设置spring.cloud. config discovery.enabled-true.spring:application:name: client-servicecloud:config:discovery:enabled: trueserviceId: config-server图5.2是包含Eureka 仪表板的屏幕截图,其中有一个Config Server 的实例和3个已经注册的client-service实例。该客户端的Spring Boot应用程序的每一个实例都与上一个示例相同,并且使用了-spring.profiles.active= zone[]参数启动,其中,n是区域的编号。唯一的区别是Spring Cloud Config Server 提供的所有客户端服务配置文件都具有与Eureka Server相同的连接地址。本文给大家讲解的内容是构建服务器端应用程序下篇文章给大家讲解的是存储库后端类型;觉得文章不错的朋友可以转发此文关注小编;感谢大家的支持!

本文出自快速备案,转载时请注明出处及相应链接。

本文永久链接: https://kuaisubeian.cc/33687.html

kuaisubeian