SpringCloud - Alibaba 组件用法

Nacos -- 注册配置中心

yml参数配置

server:
  port: 8081 # web 服务启动时所需要的端口
spring:
  application:
    name: sca-provider # 向nacos进行服务注册时的名字
  cloud:
    sentinel:
      transport:
        dashboard: localhost:8180 # 指定sentinel控制台地址,这个服务中定义限流规则
      #eager: true   #默认为false,表示服务启动时不与Sentinel控制面板进行通讯
      web-context-unify: false #控制sentinel簇点链路资源名归属
    nacos:
      discovery: #注册中心
        server-addr: localhost:8848 # nacos服务注册地址
      config: #配置中心
        server-addr: localhost:8848
        file-extension: yml
        namespace: d3e87fb6-84a2-46fe-a8c1-51de4d3db048 #假如不寫,默認是public
        #group: DEFAULT_GROUP_51 #默認為DEFAULT_GROUP
        shared-configs[0]:
          data-id: app-public.yml
          refresh: true
#logging:
#  level:
#    com.jt: debug

Sentinel限流熔断

1.1概念:Sentinel是Alibaba开源的用于服务容错的综合性解决方案,
   它是以流量为切入点,从流量控制,熔断降级,系统负载保护等
   多个维度来保护服务的稳定性.
1.2 Sentinel 的作用:计算机的数量有限,处理能力有限,并发比较大或突发流量比较大时需要进行限流访问
2.Sentinel的限流模式:
    2.1流控 :Sentinel默认的流控处理是:直接->快速失败
    2.2降级 :降级需要选择慢调用比例或者异常比例和异常数 来判断降级的熔断效果
    2.3热点规则:热点规则是一种特殊的流量控制,Sentinel会利用 LRU 策略
             统计最近最常访问的热点参数,结合令牌桶算法来进行参数级别的流控。
    2.4授权规则 :通过设置黑/白 名单的方式,对请求来源限制资源是否可以通过
                黑名单:只有黑名单的流控应用不可通过
               白名单:只有白名单的流控应用可通过!

3.常用的限流算法: 计数,令牌桶,漏桶及滑动窗口

4.Sentinel的限流规则:通过QPS,线程数来进行设置

Gateway网关

API网关的设计初衷:为解决服务的保护,统一url访问,统一身份认证,统一跨域设计...

网关项目中的负载均衡的实现:
底层基于Ribbon实现,可以在RibbonLoadBalancerClient中加断点详细分析
网关中的谓词对象类型:GatewayPredicate
网关中谓词对象的创建方式:通过谓词工厂进行创建
在网关中配置常用谓词:Path,Method,Before,Query,Header....

网关的优缺点

优点
1.相较于Zuul性能更为强劲
2.功能强大
3.设计优雅,更容易扩展

缺点:
1.依赖Netty与WebFlux(Spring5.0),学习成本高
2.需要Spring Boot 2.0及以上的版本,才支持

网关的作用:地址的保护,请求的转发

网关的基本组件:

    gateway: 
      discovery:
        locator:
          enabled: true #开启通过服务注册中心的serviceId创建路由
      routes: #配置网关路由规则,此元素下可以定义多个路由
        - id: route01 #路由id,自己指定一个唯一值
          uri: lb://sca-provider # lb为服务前缀(负载均衡单词的缩写,底层负载均衡实现还是Ribbon
          predicates: #断言(谓词):这里定义请求规则  请求匹配机制(触发路由条件)
            - Path=/nacos/provider/echo/**  #当返回值为true的时候,才会走过滤器   请求路径
            - After=2021-01-28T23:59:59.789+08:00[Asia/Shanghai]   #请求时间
            - Header=X-Request-Id, \d+   #请求头
            - Method=Get    #请求方法
            - Query=pageSize, \d+    #请求参数
          filters: #网关过滤器(特殊的拦截器),写到这个位置的是局部过滤器
            - StripPrefix=1 #转发之前去掉path中第一层路径,例如nacos

Gateway网关的工作流程:

1.Gateway Client向Gateway Server发送请求
2.请求首先会被HttpWebHandlerAdapter进行提取组装成网关上下文
3.之后网关的上下文会传递到DispatcherHandler,它负责将请求分发给 RoutePredicateHandlerMapping
4.RoutePredicateHandlerMapping负责路由查找,并根据路由谓词判断路由是否可用
5.如果谓词返回true,由FilteringWebHandler创建过滤器链并调用
6.请求会一次经过PreFilter–微服务–PostFilter的方法,最终返回响应

谓词内置工厂:
1) AfterRoutePredicateFactory:判断请求日期是否晚于指定日期
2) BeforeRoutePredicateFactory:判断请求日期是否早于指定日期
3) BetweenRoutePredicateFactory:判断请求日期是否在指定时间段内
如:-After=2020-12-31T23:59:59.789+08:00[Asia/Shanghai]
基于header的谓词工厂HeaderRoutePredicateFactory
判断请求Header是否具有给定名称且值与正则表达式匹配。例如:
-Header=X-Request-Id, \d+

基于Method请求方法的谓词工厂
MethodRoutePredicateFactory接收一个参数,判断请求类型是否跟指定的类型匹配。例如:
-Method=GET

基于Query请求参数的谓词工厂,QueryRoutePredicateFactory :
接收两个参数,请求param和正则表达式, 判断请求参数是否具 有给定名称且值与正则表达式匹配。例如:
-Query=pageSize,\d+

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mr.杨先森

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值