注册中心 Spring Cloud Eureka
使用 Netflix Eureka 实现服务注册与发现(服务治理)包含服务端组件、客户端组件
Eureka 服务端组件:服务注册中心,高可用
Eureka 客户端组件:服务注册和发现,客户端服务通过注册和参数配置的方式,嵌入客户端应用。应用启动时,Eureka 客户端向服务注册中心注册提供的服务,周期性发送心跳更新服务租约。从服务端查询当前注册的服务信息并缓存到本地,刷新服务状态
负载均衡 Spring Cloud Ribbon
Eureka集成了Ribbon
Ribbon:实现了HTTP和TCP的客户端负载均衡的工具,基于 Netflix Ribbon 实现,通过 Spring Cloud 封装将面向服务的REST模版请求自动转换成客户端负载均衡的服务调用。微服务间的调用、API网关的请求转发、Feign 都是通过 Ribbon 实现的
Ribbon 负载均衡算法
RoundRobinRule 轮询算法
AvailabilityFilteringRule 根据当前服务是否熔断及并发情况负载均衡的算法,默认
WeightedResponseTimeRule 根据服务响应时间负载均衡的算法
实现负载均衡访问用户服务
启动多个 user_service 服务
开启消费者负载均衡
熔断器 Spring Cloud Hystrix
Hystrix:在分布式环境中,许多服务依赖项中的部分服务有概率出现失败。Hystrix 是1个库,添加延迟和容错逻辑,控制分布式服务之间的交互。隔离服务之间的访问点阻止级联失败,提供回退选项实现防止级联出错。提高了系统弹性,与 Ribbon 并列
Hystrix 设计目标
对通过第三方客户端库访问的依赖项(网络)的延迟和故障进行保护和控制
在复杂的分布式系统中阻止雪崩效应
快速失败,快速恢复
回退,尽可能优雅地降级
远程调用 Spring Cloud Feign
Feign 是HTTP请求调用的轻量级框架,以JAVA接口方式调用HTTP接口,而不用像JAVA中通过封装HTTP请求报文的方式调用。处理注解将请求模板化,实际调用时传入参数,根据参数应用到请求上,转化成真正的请求。封装了HTTP调用流程,类似Dubbo服务调用
Feign 替代 RestTemplate 发送REST请求,更符合面向接口化编程
Feign集成了Ribbon
Fegin 内置 Ribbon 默认设置连接超时1000毫秒、读取超时时间。内部重试机制超时会自动重新发起请求
Feign 内置 Hystrix 熔断器
Feign 支持对请求和响应进行GZIP压缩,以提升通信过程中的传输速度
配置日志级别
NONE 不记录
BASIC 只记录输出 Http 方法名称、请求URL、返回状态码和执行时间
HEADERS 记录输出 Http 方法名称、请求URL、返回状态码和执行时间和 Header 信息
FULL 记录 Request Response 的 Header,Body 和请求元数据
网关 Spring Cloud Gateway
Gateway 网关是微服务的统一入口
Spring Cloud Gateway 开发的网关,为微服务架构提供统一的API路由,基于 Filter 链提供网关基本的功能,例如:安全,监控/指标和限流
配置中心 Spring Cloud Config
分布式系统中服务数量非常多,配置文件分散在不同微服务项目中,为了方便配置文件集中管理,需要分布式配置中心组件。Spring Cloud Config 支持配置文件放在配置服务本地,也支持放在远程仓库Git(GitHub、码云)。配置中心本质上是微服务,需要注册到 Eureka 服务中心
1.配置文件集中放在码云
2.配置中心获取码云配置文件
3.用户服务获取配置中心文件