Sentinel:面向分布式服务架构的流量控制组件,主要以流量为切入点,从限流、流量整形、熔断降级、系统负载保护、热点防护等多个维度来帮助开发者保障微服务的稳定性。
https://sentinelguard.io/zh-cn/docs/introduction.html
特征
组成
优势
客户端请求都是访问的 API 网关,然后网关转发到会员微服务,客户端无需知道会员微服务的地址。
业界比较出名的网关:Spring Cloud Gateway、Netflix Zuul、Nginx、Kong、Alibaba Tengine。
作为 Spring Cloud 全家桶中的一款组件,当然选择 Spring Cloud Gateway 了。
最开始 Spring Cloud 推荐的网关是 Netflix Zuul 1.x,但是停止维护了,后来又有 Zuul 2.0,但是因为开发延期比较严重,Spring Cloud 官方自己开发了 Spring Cloud Gateway 网关组件,用于代替 Zuul 网关。
gateway的工作流程:
1:路由判断;客户端的请求到达网关后,先经过 Gateway Handler Mapping 处理,这里面会做断言(Predicate)判断,看下符合哪个路由规则,这个路由映射后端的某个服务。
2:请求过滤:然后请求到达 Gateway Web Handler,这里面有很多过滤器,组成过滤器链(Filter Chain),这些过滤器可以对请求进行拦截和修改,比如添加请求头、参数校验等等,有点像净化污水。然后将请求转发到实际的后端服务。这些过滤器逻辑上可以称作 Pre-Filters,Pre 可以理解为“在…之前”。
3:服务处理:后端服务会对请求进行处理。
4:响应过滤: 后端处理完结果后,返回给 Gateway 的过滤器再次做处理,逻辑上可以称作 Post-Filters,Post 可以理解为“在…之后”。
5:响应返回:响应经过过滤处理后,返回给客户端。