Spring Cloud应用开发(七:使用Git存储方式实现分布式配置管理 )
1、使用Git存储实现管理;
1.1、配置Git。在Git上创建microservice-study-config目录,并在目录中添加开发,预发布和测试的配置文件;
1.2、修改服务端配置文件。将microservice-config-server工程的配置文件中本地文件存储方式的配置删除(或注释),并添加git的配置信息;
1.3、修改客户端配置文件。在microservice-config-client工程的配置文件中添加属性label,并将其属性值设置为master(label属性表示Git的分支,其属性默认值为master);
1.4、启动工程,测试应用。分别启动Spring Cloud Config的服务端和客户端程序,访问地址http://localhost:8801/clientParam看能否获取到Git中的配置信息;
2、手动更新运行;
2.1、在客户端pom.xml中添加依赖spring-boot-starter-actuator,该依赖可以监控程序在运行时的状态;
2.2、在启动类上添加@RefreshScope注解,开启refresh机制;
2.3、在配置文件中讲安全认证信息的enable属性设置为false;
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中的更新配置信息;
2.5、使用POST请求访问地址http://localhost:8801/refresh后,将看到请求的状态等信息;
知识点一: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采用的是客户端发现模式。
客户端服务发现的架构如图:
Eureka Server会提供服务注册服务,各个服务节点启动后,会在Eureka Server中进行注册,这样Eureka Server中就有了所有服务节点的信息,并且Eureka有监控页面,可以在页面中直观的看到所有注册的服务的情况。同时Eureka有心跳机制,当某个节点服务在规定时间内没有发送心跳信号时,Eureka会从服务注册表中把这个服务节点移除。Eureka还提供了客户端缓存的机制,即使所有的Eureka Server都挂掉,客户端仍可以利用缓存中的信息调用服务节点的服务。Eureka一般配合Ribbon进行使用,Ribbon提供了客户端负载均衡的功能,Ribbon利用从Eureka中读取到的服务信息,在调用服务节点提供的服务时,会合理的进行负载。
Eureka通过心跳检测、健康检查、客户端缓存等机制,保证了系统具有高可用和灵活性。