一.组件组成
1.GateWay网关
2.config分布式配置中心
3.Bus消息总线
4.sleuth
5.nacos配置管理
6.Sentinel是什么?
7.seata是什么?
二. 各个组件的介绍
2.1. Gateway
2.1.1概念:
GateWay是在spring生态系统上构建的API网关服务,它是基于springboot2,spring5,和project Reactor等技术
2.1.2 作用:
可以提供一种简单而有效的方式对API进行路由且基于filter链的方式提供了网关的基本功能,例如:反向代理,鉴权,安全,监控/指标, 熔断,重试,限流等.
2.1.3优势
性能方面比zuul要好,因为gateway是基于webFlux框架实现(底层是Reactor模式的netty)
2.1.4 特点
1.基于spring framework5,Project Reactor和Springboot2.0进行构建的
2.动态路由: 可以匹配任何请求属性;
3.可以对路由指定Predicate(断言)和Filter(过滤器);
4.集成Hystrix的断路器功能(虽然也处于维护阶段了);
5.集成Springcloud的服务发现功能;
6.易于编写的Predicate和Filter
7.请求限流功能;
8.支持路径重写
2.1.5 为什么选择gateway?
需要我们从以下几个方面说起: 一是neflix不太靠谱,zuul2.0又迟迟不发布,zuul1.0已经处于维护阶段,而gateway是springcloud团队研发的,与其他组件契合. 二是gateway是基于异步非阻塞模型开发的,性能优于zuul
3.三大核心概念
路由: 是构建网关的基本模块,他由id,目标url,一系列的断言和过滤器组成,如果断言为true则匹配该路由.
断言:
过滤: 过滤请求用的
4.工作流程
路由转发+ 过滤器链
二: config 分布式配置中心
1. 产生背景: 微服务项目中会根据业务来拆分成一个个子服务,而每个服务都会有自己的配置文件为了统一管理,所以configserver应运而生了.
2.概念:
springcloud config 为微服务架构中的微服务提供集中化的外部配置支持,配置服务器为各个不同的微服务应用的所有环境提供一个中心化的外部配置.
3.作用:
1. 为了集中式和动态的管理配置信息
2.运行期间动态调整配置不在需要在每个服务器上部署的机器上编写配置文件,服务会向配置中心统一拉取配置信息
3.动态加载配置信息,服务不用重启就可以感知配置的变化并应用配置
4.把配置信息以rs风格接口的形式暴露(post或curl命令)
ps: 其实就相当于项目里的公共模块,一个意思
那我们如何使用它呢?
一. 首先config分为客户端和服务端.
二. 服务端其实就是我们常说的分布式配置中心,它是一个独立的微服务应用, 可以用来连接配置服务器并为客户端提供获取配置信息,加密,解密信息等接口.
三. 而客户端是通过指定的配置中心来管理应用资源,这样有助于对环境配置进行版本管理,并且可以通过git客户端工具来方便的管理来访问配置内容.
四.分布式配置动态刷新问题
实现步骤:
1.pom里添加actuator监控
2.yml 暴露监控端点
3. 启动类上加 @RefreshScope
4.curl -X POST "http://ip:port/actuator/refresh"(每次修改后必须执行这个,否则客户端还是读取不到最新的配置信息)
五. 如果有多个客户端,难道每个微服务都要执行一次post命令?
可不可以只改一处,让其他的地方都生效
三. Bus 消息总线
1.概念
springcloud Bus 是用来将分布式系统的节点与轻量级消息系统链接起来的框架,它整合了java的时间处理机制和消息中间件的功能
2.作用
springcloud Bus 主要配合config 使用,实现真正的配置的动态刷新.
3. 支持的消息队列类型
目前支持Rabbitmq和Kafka
五. Nacos
1. 概念
nacos是一个更易于构建云原生应用的动态服务发现, 配置管理和服务管理平台.
2. 各个配置中心对比
配置中心对比.png
六 . Sentinel
1.概念
把流量作为切入点,从流量控制,熔断降级,系统负载保护等多个维度保护服务的稳定性.
七. Seata
1. 概念
阿里巴巴开源产品,一个易于使用的高性能微服务分布式事务解决方案.
网友评论