使用Eureka作为注册中心:Eureka作为配置中心提供了通过application.name访问微服务的能力。同一个注册中心管理的微服务间可以通过HTTP请求或Feign互相访问。引入了Ribbon实现客户端负载均衡
使用Config Server作为配置中心:结合配置中心使用,可以从git自动读取并下发配置。通过手动和Webhook的方式提供配置热更新的能力
使用Hystrix作为断路器:在接口调用异常时提供降级方法,可配通过注解自定义触发降级的条件。Hystrix Dashboard提供了可视化指标
chap13 服务注册和发现
graph LR
Server -- 1-注册 --> Eureka
Client -- 2-拉取服务 --> Eureka
Client -- 3-通过Ribbon访问服务 --> Server
- 配置Eureka服务:通过Spring Boot部署Eureka服务,指定端口、自我保护等配置,设置Eureka集群
- Server向Eureka进行注册:引入Eureka client依赖,指定端口号、Eureka地址等配置信息
- Client从Eureka拉取服务并消费:引入Eureka client依赖,可以通过RestTemplate或者Feign消费服务
chap14 管理配置
使用 Spring Cloud Config Server 可以实现分布式环境中的中心化配置管理
Config Server 可以作为微服务中一个单独的配置中心服务,读取来自git等系统的配置信息。客户端通过消费Cofig Server中的配置属性实现多个服务间配置的同步。
运行配置服务器
- 引入 Spring Cloud 和 Config Server 依赖
- 启动类上添加 @EnableConfigServer 注解,启动配置服务
- 为配置服务添加添加配置属性的来源(如git),通常需要设置 spring.cloud.config.server.git.uri 属性指定存放配置文件的git仓库的位置
- 客户端会向配置服务发起请求,通过 server, port, application name, spring profile, git branch 等属性确定该客户端需要读取的配置
可通过配置spring.cloud.config.server.git下不同属性定义git路径、git分支、认证信息等配置
- 提供特定应用的配置:需要客户端先通过 spring.application.name 指定微服务名称。在 Config Server 的git中创建对应的配置文件 ({application-name}.yaml)
- 提供来自profile的属性:指定特定profile的配置文件,如 application-production.properties
- 配置加密:跳过
运行客户端
- 引入 Config Client 依赖
- 配置文件中通过设置 spring.cloud.config.uri 指定 Config Server 的位置
服务端可以通过Config Server获取注册中心的位置(服务端本地配置需要指定Config Server的位置);或者通过配置中心获取Config Server的位置(服务端本地配置需要指定注册中心的位置)
配置热更新
手动刷新配置
- 客户端引入 Spring Boot Actuator 依赖
- Config Server配置变化后,通过请求 /actuator/refresh 通知服务端从后端仓库刷新配置属性
自动刷新配置
- git中创建Web Hook
- Config Server引入 spring-cloud-config-monitor依赖处理web hook发送的消息
- Config Server引入 Spring Cloud Stream 进行消息下发(引入MQ依赖)
- 客户端添加 spring-cloud-starter-bus-amqp 依赖处理server的配置变更推送
graph LR
git -- WebHook --> ConfigServer
ConfigServer -- MQ-SpringCloudBus --> client1
ConfigServer -- MQ-SpringCloudBus --> client2
Actuator向外暴露了Spring服务的运行状况,admin为其提供了可视化界面。chap19介绍了Spring服务的部署方式
chap16-19 管理和部署Spring
Spring Actuator以REST和JMX MBean的方式向外提供运行应用的内部情况
- Actuator 向外暴露的一部分端点信息:potoyang.gitbook.io/spring-in-a…
- 常用的端点信息包括:Bean的装配报告/beans、自动装配信息/conditions、运行环境和对应配置/env、HTTP映射/mappings、日志级别/loggers
- 提供了应用的运行信息:HTTP请求报告/httptrace、线程活动快照/threaddump、应用指标/metrics等
- 可以对Acutator信息进行扩展:如通过实现InfoContributor接口向/info端点添加信息
- 可以通过Spring Security对Acutator端点进行权限控制
Spring Boot Admin 为Actuator提供了可视化管理界面。配合Eureka可以实现客户端的自动注册和发现。