Spring-In-Action-5 第二部分-Spring微服务

32 阅读3分钟

使用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可以实现客户端的自动注册和发现。