Spring Cloud 微服务实战
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring Cloud 微服务实战相关的知识,希望对你有一定的参考价值。
参考技术A 阅读《Spring微服务实战》笔记项目地址: https://gitee.com/liaozb1996/spring-cloud-in-action
配置管理原则:
Spring Cloud Config 后端存储:文件系统、Git
标注引导类:
配置服务器配置:
创建配置文件:
访问配置:
客户端配置:
spring-cloud-config-client 依赖
boostrap.properties
刷新属性:
服务发现至关重要的原因:
传统服务位置解析(DNS+负载均衡器)的缺点:
服务发现实现组件:
构建 Eureka 服务:
标注引导类:
单机模式配置 :
每次注册服务都需要等待30秒,因为 eureka 需要连续接收 3 个心跳包才能使用该服务。
缓存注册表后,客户端每隔30秒会重新到 eureka 刷新注册表。
服务注册:
解决多网卡问题:
通过API获取注册表信息:(设置请求头 Accept:application/json )
http://localhost:8761/eureka/apps
http://localhost:8761/eureka/apps/organization
与 Ribbon 交互的客户端:
当使用二方包时需要在引导类添加 @EntityScan :
配置 RestTemplate:
DiscoveryClient:
支持 Ribbon 的 RestTemplate:
Feign:
OpenFeign 依赖:
Feign 会在运行时动态生成代理对象:
远程调用包括对远程资源和远程服务的调用。
远程调用会遇到两个问题:
四种客户端弹性模式:
为什么客户端弹性模式很重要:
客户端弹性模式提供了三种构建能力:
在引导类启动断路器:
配置属性手册: https://github.com/Netflix/Hystrix/wiki/Configuration
使用 Hystrix 默认配置对远程调用进行管理:
超时配置: execution.isolation.thread.timeoutInMilliseconds
配置后备策略:后备方法必须在同一类中并且具有相同的方法签名
配置舱壁:
Hystrix 断路的策略:
Hystrix 有三个级别的配置:
类级别配置:
Hystrix 有两个隔离策略:
如果使用 TREAD 策略,并且要将父线程的上下文传递到子线程中,需要自定义 HystrixConcurrencyStrategy
Zuul 提供的功能:路由映射、构建过滤器
依赖:zuul、eureka-client
标注引导类:
zuul 配置:
Zuul路由映射机制:
查询路由: http://localhost:8080/actuator/routes
调用服务: http://localhost:8080/license/license/1 (第一个 license 是服务ID,/license/1 是请求路径)
使用服务发现手动映射路由:
添加前缀:
手动配置静态路由:前面都是基于 eureka 上的服务id进行路由映射的,而这里是直接配置URL
Git + http://localhost:8080/actuator/refresh (POST)
Zuul 使用 Hystrix 和 Ribbon
Zuul 支持三种过滤器类型:前置过滤器、后置过滤器、路由过滤器
前置过滤器:向通过网关的请求添加 tracking-id
这里使用了 Zuul 的 RequestContext:
Zuul 不允许直接修改请求头部,这里通过 addZuulRequestHeader 添加头部信息,在调用远程服务会自动合并
为了方便应用获取 tracking-id,这里使用 Filter 获取请求头信息并映射到 UserContext 中:
为了在服务间调用传播 tracking-id 这里需要定义一个 和 RestTemplate:
项目中 license 会远程调用 orgnization,这里需要在两个微服务配置 Filter
以上是关于Spring Cloud 微服务实战的主要内容,如果未能解决你的问题,请参考以下文章