- 分布式服务发现和配置管理系统
- 应用场景
- 服务发现
- 健康监测
- KV存储
- 多数据中心
- 可视化web界面
Ribbon
- 提供客户端的软件负载均衡算法和服务调用
- 负载均衡演示
- IRule
- 轮询
- 随机
- 负载规则替换配置
轮询
服务降级 fallback
- 服务熔断 达到最大服务访问后,直接拒绝访问
- 服务限流 针对秒杀,高并发的项目
解决要求
- 超时不在等待
- 出错要有兜底
服务降级之支付侧fallback
@HystrixCommand(fallbackMethod=””)
服务降级之订单侧fallback
通配服务降级feginfallback
服务熔断
类比保险丝
- 当微服务出错不可用或者响应时间太长,进行服务降级,熔断服务调用
- 响应正常后,恢复调用链路、
涉及到断路器的三个重要参数
-
服务网关 Gateway (zuul)
springcloud gateway使用的webflux的reactor-netty响应式变成组件,底层使用了netty通讯框架
非阻塞异步模型
动态路由
可以对路由指定Predicate(断言)和Filter(过滤器)
webflux
-
三大核心概念
Route路由
- Predicate断言
-
网关路由的配置方式
在配置文件yml中配置
-
Predicate
-
Filter
生命周期
- pre
- post
- 种类
- GateWayFilter
- GlobalFilter
-
spring config,spring bus
服务配置 服务总线
springcloud config 为微服务架构中的微服务提供集中化的外部配置支持,配置服务器为各个不同微服务应用的所有环境提供了一个中心化的外部配置
服务端配置与测试
-
客户端配置与测试
bootstrap.yml
- 系统级的资源配置项,优先级更高
application.yml
手动
Bus消息总线
- 实现配置的动态刷新
- 支持两种现西代理
- RabbitMQ
- Kafka
- 消息总线的定义
- 在微服务架构的系统中,通常会使用轻量级的消息代理来构建一个共用的消息主题,并让系统中所有微服务实例都连接上来。由于该主题中产生的消息会被所有实例监听和消费,所以称为消息总线
- 设计思想
- 利用消息总线触发一个服务器端ConfigServer的/bus/refresh端点,而刷新所有客户端的配置
- 全局广播
-
Springcloud Stream
MQ消息中间件的兼容
- 屏蔽底层消息中间件的差异
- binder对象
- 标准MQ
- 生产者、消费者之间靠消息媒介传递信息内容 message
- 消息必须走特定的通过 消息通道 MessageChannel
- Binder
- INPUT对应与消费者
- OUTPUT对应于生产者
- 消息通信方式遵循了发布-订阅模式
- Topic主题进行广播
- 消息驱动之生产者
- 消息驱动之消费者
- 存在问题
- 消息重复消费:利用消息分组来解决
- 消息持久化
