Spring Cloud应用开发(七:使用Git存储方式实现分布式配置管理 )

 

1、使用Git存储实现管理;

1.1、配置Git。在Git上创建microservice-study-config目录,并在目录中添加开发,预发布和测试的配置文件;

Spring Cloud应用开发(七:使用Git存储方式实现分布式配置管理 )

 

1.2、修改服务端配置文件。将microservice-config-server工程的配置文件中本地文件存储方式的配置删除(或注释),并添加git的配置信息;

Spring Cloud应用开发(七:使用Git存储方式实现分布式配置管理 )

 

1.3、修改客户端配置文件。在microservice-config-client工程的配置文件中添加属性label,并将其属性值设置为master(label属性表示Git的分支,其属性默认值为master);

Spring Cloud应用开发(七:使用Git存储方式实现分布式配置管理 )

 

1.4、启动工程,测试应用。分别启动Spring Cloud Config的服务端和客户端程序,访问地址http://localhost:8801/clientParam看能否获取到Git中的配置信息;

Spring Cloud应用开发(七:使用Git存储方式实现分布式配置管理 )

2、手动更新运行;

2.1、在客户端pom.xml中添加依赖spring-boot-starter-actuator,该依赖可以监控程序在运行时的状态;

Spring Cloud应用开发(七:使用Git存储方式实现分布式配置管理 )

2.2、在启动类上添加@RefreshScope注解,开启refresh机制;

Spring Cloud应用开发(七:使用Git存储方式实现分布式配置管理 )

2.3、在配置文件中讲安全认证信息的enable属性设置为false;

Spring Cloud应用开发(七:使用Git存储方式实现分布式配置管理 )

2.4、执行完上述3步后,下面来检测应用是否可以实现更新运行中的配置文件。启动应用并访问http://localhost:8801/clientParam,此时浏览器的显示效果如图所示,此时修改Git中的配置文件application-prod.yml,将其内容clientParam:git-prod-1.0, 修改为clientParam:git-prod-3.0后,再次通过浏览器访问,上述地址,会发现浏览器的内容并没有变化,但通过地址http://localhost:8888/application/prod访问时,会发现服务器端已经获取到了Git中的更新配置信息;

Spring Cloud应用开发(七:使用Git存储方式实现分布式配置管理 )

2.5、使用POST请求访问地址http://localhost:8801/refresh后,将看到请求的状态等信息;

Spring Cloud应用开发(七:使用Git存储方式实现分布式配置管理 )Spring Cloud应用开发(七:使用Git存储方式实现分布式配置管理 )

 

 

知识点一:Spring Cloud的概念。

Spring Cloud是基于SpringBoot 提供的一套微服务解决方案,包括服务注册与发现,配置中心,全链路监控,服务网关,负载均衡,熔断器等组件。

Spring Cloud利用SpringBoot的开发便利性巧妙的简化了分布式系统基础设施的开发,Spring Cloud为开发人员提供了快速构建分布式系统的一些工具,包括配置管理、服务发现、断路器、路由、微代理、事件总线、全局锁、决策竞选、分布式会话等。它们都可以用SpringBoot的开发风格做到一键启动和部署。

知识点二:Spring Cloud 的特性及特点。

特性:

1.分布式/版本化配置。

2.服务注册和发现。

3.路由。

4.服务和服务之间的调用。

5.负载均衡。

6.断路器。

7.分布式消息传递。

特点:

1.约定优于配置。

2.开箱即用、快速启动。

3.适用于各种环境。

4.轻量级的组件。

5.组件支持丰富,功能齐全。

知识点三:Eureka的服务发现机制

Eureka是Netflix开发的服务发现框架,SpringCloud将它集成在自己的子项目spring-cloud-netflix中,实现SpringCloud的服务发现功能。

为什么要使用Eureka,因为在一个完整的系统架构中,任何单点的服务都不能保证不会中断,因此我们需要服务发现机制,在某个节点中断后,其它的节点能够继续提供服务,从而保证整个系统是高可用的。

服务发现有两种模式:一种是客户端发现模式,一种是服务端发现模式。Erueka采用的是客户端发现模式。

客户端服务发现的架构如图:

Spring Cloud应用开发(七:使用Git存储方式实现分布式配置管理 )

Eureka Server会提供服务注册服务,各个服务节点启动后,会在Eureka Server中进行注册,这样Eureka Server中就有了所有服务节点的信息,并且Eureka有监控页面,可以在页面中直观的看到所有注册的服务的情况。同时Eureka有心跳机制,当某个节点服务在规定时间内没有发送心跳信号时,Eureka会从服务注册表中把这个服务节点移除。Eureka还提供了客户端缓存的机制,即使所有的Eureka Server都挂掉,客户端仍可以利用缓存中的信息调用服务节点的服务。Eureka一般配合Ribbon进行使用,Ribbon提供了客户端负载均衡的功能,Ribbon利用从Eureka中读取到的服务信息,在调用服务节点提供的服务时,会合理的进行负载。

Eureka通过心跳检测、健康检查、客户端缓存等机制,保证了系统具有高可用和灵活性。