微服务架构
- 服务拆分粒度更小,服务更独立,服务之间通过Restful通信
- 便于重用和模块组装
网关
- 路由
- 安全防护,统一鉴权
- 负载均衡
- 黑白名单
- 限流
Spring Cloud
- Spring Cloud是一个规范,一系列框架的有序集合
- 服务发现注册,配置中心,消息总线,负载均衡,断路器,数据监控
- Spring Boot 开发便利简化了微服务架构的开发
Spring Cloud组件
Eureka
服务注册中心本质是为了解耦服务提供者和服务消费者
CAP支持 AP, Zookeeper 支持 CP
Eureka通过心跳检测,健康检查和客户端缓存机制,提高系统的灵活性,可伸缩性,可用性。
自我保护
15分钟内超过85%的客户端节点没有正常心跳,Eureka认为客户端与注册中心出现了网络故障,进入自我保护机制,不会移除实例
Ribbon
服务器端负载均衡:负载均衡的执行是在服务端
客户端负载均衡:负载均衡的执行是在客户端
Ribbon拦截客户端请求, 根据服务名获取该服务的实例列表,按照一定的负载均衡策略获取一个实例server,发起访问
Hystrix
雪崩效应解决
- 服务熔断,切断对下游服务的调用
- 服务降级
- 服务限流
舱壁模式(线程池隔离)
@HystrixCommand注解默认共用线程池,线程池数量 10。
为了避免问题服务请求过多,导致正常服务⽆法访问,
Hystrix 不是采⽤增加线程数, ⽽是单独的为每⼀个控制⽅法创建⼀个线程池的⽅式
# 查看 java进程
jps
# 指定进程的线程信息
jstack 2419 | grep hystrix
Feign
Feign = RestTemplate+Ribbon+Hystrix
当 Feign ,Hystrix 配置两个超时时间,取最小的超时时间。
GateWay
网关转发请求到下游的微服务,API路由
GateWay过滤器
- GateWayFilter,应用到单路由上
- GlobalFilter,应用到所有的路由上
分布式配置中心
Config配置自动更新
Spring Cloud Config + Spring Cloud Bus实现自动配置更新
Spring Cloud Stream
进行了上层抽象,与具体的消息中间件解耦,屏蔽底层具体MQ消息中间件差异。
Stream概念
- Binder 屏蔽底层MQ差异,切换MQ时,只需要切换 Binder
- Channel(Bindings): 站在 应用程序角度,input channel 消费者,output channel 生产者
Stream注解
- @Input,接收消息,消费者
- @Output,输出消息,生产者
- @StreamListener,监听队列,用于生产者接收消息
- @EnableBinding , channel 和 Exchang绑定,消息和主题绑定
网友评论