当前位置: 首页> 游戏> 攻略 > 简历制作网站哪个好_app推广的网站_百度广告怎么做_微信小程序开发

简历制作网站哪个好_app推广的网站_百度广告怎么做_微信小程序开发

时间:2025/7/8 22:48:26来源:https://blog.csdn.net/LiuYQi/article/details/143032391 浏览次数:0次
简历制作网站哪个好_app推广的网站_百度广告怎么做_微信小程序开发

一个人内耗,说明他活在过去;一个人焦虑,说明他活在未来。只有当一个人平静时,他才活在现在。

日常

1、起床6:00

2、健身1h

今天练了胸部以及肩和三头,明天练二头三头和肩

3、LeetCode刷了1题

  1. 搜索二维矩阵2:矩阵、二分查找、中
    1. 对行不要使用二分查找,因为只要target>行首元素,则target就可以出现在在行上
    2. 要遍历所有行首元素只要target大于行首,则使用二分查找在该行中查找target
    3. 二分查找时要注意传入的l,r的形式,用左闭右闭,然后每次看中间元素mid=(l+r)/2与target的大小关系对l,r进行更新

4、复盘

不复盘等于白学!!!

学习和感想

Sentinel(哨兵):服务熔断和流控

1. 介绍与安装

  1. 安装
    1. 官网:www.sentinelguard.io:面向分布式、多语言异构化服务架构的流量治理组件
    2. 去github看源码以及文档(wiki),并下载jar包
  2. 功能和设计理念
    针对什么流量(请求),进行什么流量处理策略,调用什么fallback方法
    1. 流量控制
    2. 也就是Alibaba的保险丝,服务熔断组件
    3. 阿里云哨兵的工作原理:流控降级与容错标准
      1. 对什么样的流量对应什么样的流量治理策略触发后的fallback行为

2. Sentinel常见面试题

  1. Redis相关
    1. 怎么用分布式事务的,什么是缓存穿透?击穿?雪崩?如何解决?
  2. 服务雪崩
    1. 因为一个微小服务没有做限流和错误,导致与其他服务的调用与交互,出现的拖垮全局的情况
  3. 服务降级Fallback
    1. 默认托底方案,当请求无法正常访问时,就执行默认的托底方案
  4. 服务熔断CircuitBreaker:限制最大请求量
    1. 当达到最大服务访问后,拒绝访问,调用服务降级友好返回
    2. 三种状态:OPEN、CLODE、HALF_OPEN
    3. 有两种类型:基于次数、基于时间
    4. 在yml配置文件中对resilience4j进行配置来实现,并使用@CircuitBreaker(‘微服务名’,fallbackMethod)(微服务名是指针对哪个微服务)
  5. 服务限流Limiter:限制最大并发量
    1. 限流算法由漏桶、令牌桶等等
  6. 服务隔离Bulkhead
    1. 有两种类型:信号量、线程池
  7. 服务超时

3. 安装Sentinel

  1. 组件由两部分构成:后台核心库(8719微服务)、前台控制台(8080)
  2. 先去github下载Sentinel的jar包,然后在jar包文件夹终端运行(8080不可占用),运行成功后就可以通过浏览器访问8080控制台,默认账号密码都是Sentinal

4. 微服务整合Sentinel

  1. 要先启动Nacos和Sentinel
  2. 建项目
    1. 改POM:引入Sentinel和Nacos的POM依赖
    2. 写YML:对微服务、Nacos、Sentinel均要进行配置
      1. 配置微服务的端口号和名称(server.port、spring.application.name),配置Nacos的相关信息(spring.cloud.nacos.disvocery&servet-addr)以及Sentinel的配置(spring.cloud.sentinel.transport.dashboard&port)
    3. 主启动:注册进行Nacos(@EnableDiscovery)
    4. 业务类:在微服务的controller层创建相应的类
  3. Sentinel采用懒加载方式:要想让Sentinel监测到接口,则必须先对接口进行访问

5. 流控规则:设置流控规则进行流量控制

  1. 阈值就是最大的QPS(查询每秒)当达到阈值时就会fallback返回友好的错误界面,有三种阈值模式(直接、关联、链路)以及三种流控效果(快速失败、Warmup、排队等待)
  2. 要先选择一个微服务,对指定的微服务进行流控规则配置,此时的资源名就是访问该微服务的请求路径
  3. 在控制台-流控规则中对指定的微服务的资源(请求路径)新建流控规则,并对下面参数进行配置以实现相应的流量控制
  4. 资源是访问当前微服务的请求路径
  5. 流控模式
    1. 直接默认模式):当接口达到限流条件时直接开启指定限流功能(即配置的流控效果),可以自定义返回fallback
    2. 关联:当关联的资源达到阈值时,就限流当前的资源
    3. 链路:来自不同的链路请求对同一资源访问时,可以实施针对性的不同限流措施,根据访问资源的链路(不同链路下对该资源的访问)来进行不同的限流
      1. 通过配置sentinel.web-context-unify=false可以使得controller层方法对service层调用不是同一个链路
  6. 流控效果:流量控制设置对资源QPS(每秒查询率)的阈值
    1. 快速失败(默认):当QPS达到阈值时,直接失败,抛出异常
    2. Warmup(冷启动、预热):当QPS增大时使得阈值缓步增加,而不是一下达到最大,避免压垮
      1. 原理
        1. QPS每秒查询率
        2. 给冷系统一个预热的时间,使其阈值慢慢提升,避免直接被压垮
        3. 刚开始请求为阈值除以冷却因子coldFactor(默认值为3),经过预热时长后才会达到阈值
        4. 不会一下子启动达到最大值,而是从阈值的1/3开始经过预热时间后缓步达到最大
      2. 配置说明
        1. 就是说当请求不多时,阈值就是设置的阈值/coldFactor,然后当请求多时,不会一下子把阈值提高,而是经过预热时间后才会达到最后的阈值
        2. coldFactor是冷却因子,请求的QPS(查询率每秒) 从阈值/coldFactor开始,经过设置的预热时长后达到最终的阈值
    3. 排队等待:当QPS很大超过阈值时不会一下全部拒绝,而是将多出的加入排队队列中等待处理,并设置超时时间
  7. 流控效果V2:并发线程数(阈值类型)
    1. 在阈值类型中设置为并发线程数,即根据并发线程数进行流量控制,且只可配置流控模式无法配置流控效果(默认为直接失败,不可设置Warmup和排队等待)

6. 熔断规则:保险丝,在客户端进行配置

  1. 理论
    1. 熔断后对该微服务的请求调用都会进行服务降级
    2. 对于不稳定的微服务进行熔断降级避免级联影响从而造成服务雪崩,相当于保险丝,在客户端进行配置当对该微服务的请求出现故障时进行熔断,接下来一段时间内全部错误,然后回复为HALF_OPEN状态
  2. 熔断策略
    1. 只有当某个条件大于阈值时,才会进入熔断并报熔断的错误降级未熔断时也可能会出错,但此时不是熔断的错误,而是error page
    2. 慢调用比列:慢调用请求所占的比例
      1. 一个响应是一次调用
      2. 当进入熔断状态后,所有的请求均不会访问,且经过熔断时长后会进入HALF_OPEN状态
      3. 触发条件:在统计时间内,当调用次数>设置的最小请求数且慢调用请求数(请求时间>最大RT)的比列>比例阈值时,就会进入熔断
      4. 设置允许的慢调用时间RT,当超过该时间的请求都会被记为慢调用,当总调用次数大于设置的最小请求数时,此时会在设置的一段统计时长内判断慢调用的比例,如果大于设置的比例阈值,则会对该微服务进行熔断,然后经过熔断时长后进入HALF_OPEN状态
    3. 异常比例:异常请求所占的比例
      1. 配置异常比例类型后,此时出错会报错误页面,但不会熔断,只有异常次数比例大于阈值时才会熔断;当服务熔断时,此时任何请求直接禁止,不会进入进行处理
      2. 熔断后会进入服务降级返回友好的错误界面,未熔断访问出现错误也会报错,但和熔断后的报错不一样
      3. 配置了Sentinel后,出现错误不会直接熔断,会进行服务降级,只有异常数达到了比例阈值后才会熔断,此时就是禁止所有的请求访问
      4. 在统计时间内,如果调用次数大于最小请求数且出现异常的调用的比例大于设置的阈值时,则会对该请求进行熔断
      5. 异常比例是根据统计时长内出现异常的比例阈值来进行熔断
    4. 异常数
      1. 熔断探测状态内只检测第一个请求,如果正常则恢复为开启状态
      2. 在统计时长内,请求调用数>最小请求数,且出现的异常请求次数>异常阈值时,会进入熔断,此时任何请求都会被拒绝访问,进入熔断降级

7. @SentinelResource(value=,blockHandler=,fallback=)

  1. 是什么:流量防护防卫注解,指定防护资源,对指定的资源进行流量控制和熔断降级
  2. 用法:对指定的函数上加上@SentinelResource注解,指定对应的资源、熔断处理函数、降级函数
    1. entryType:标记流量的方向,默认为OUT
    2. value:指定要防护的资源
    3. bloackHandler:熔断后的降级函数
      1. 处理熔断后异常的函数服务降级函数名,该函数必须与用@SentinelResource注解标注的函数在同一个类并且返回类型相同,且为public
    4. fallback(退路):当请求本身出错时执行的服务降级函数名
      1. fallback不会对exceptionToIngorn的异常进行降级
      2. 指定的函数必须是publci,且与@SentinelResource注解标注的函数在同一个类且有相同的返回值类型
    5. exceptionsToTreace:需要trace的异常结合
    6. exceptionsToIgnore:指定排除忽略的异常,排除的异常不会计入异常统计,也不会进入fallback逻辑,而是原样抛出
  3. 实战
    1. @SentinelResource注解中用value指定对该方法调用在Sentinel中的资源名,然后使用blockHandler指定熔断后降级的函数,使用fallback指定当请求出错后的降级函数,blockHandler参数主要配置Sentinel出错后的服务降级处理,fallback主要配置服务内部错处后的降级处理
    2. 按照rest地址(会当做访问触点)限流+默认的限流返回(Blocked …)
    3. 使用@SentinelResource注解指定资源名以及自定义限流返回(blockHandler),要定义一个函数与原函数相同参数以及public且在同一个类下,此时当对该资源的请求熔断后就会调用blockHandler函数
    4. 使用@SentinelResource注解指定资源名 + 自定义限流返回(blockHandler) + 服务降级函数(fallback),此时当请求熔断后就会调用blockHandler指定的函数,当请求出错的时候就会调用fallback指定的函数
    5. Sentinel是懒加载,只有当出现请求时才会加载到Sentinel中

8. 热点规则:对访问某个资源的部分热点请求根据参数进行限流

  1. 介绍
    1. 没有热点参数的请求不会被监控,必须有热点参数的请求才会被监控
    2. 只有含有热点规则中配置的参数的请求才会被监控,不含指定热点参数的请求对该资源的访问不会进行限制
    3. 热点即经常访问的数据,热点规则就是对经常访问的数据进行限流或者其他操作
    4. 可以根据同一个请求的不同参数设置热点或者非热点,并对其进行限流配置,同一个请求的不同参数可以进行不同的设置
    5. 对于微服务高频热点的数据必须监控到
  2. 配置
    1. 只有带了指定参数的请求才会被限流,不带该参数的访问该资源的请求不会被限流
    2. 对指定的资源进行热点限制,只支持QPS模式,根据查询率每秒对请求进行限流
    3. 参数索引:热点参数索引,根据请求中出现的参数配置热点索引,当带有该参数的请求数大于配置的阈值时就会进行限流
    4. 根据请求中的参数来设置热点,根据请求中该参数的QPS来进行限流,只有当请求中该参数有值时才会被监控
  3. 参数例外项:设置参数等于某个值时不进行限流
    1. 设置参数例外项后必须点击添加
    2. 当请求中包含指定的参数时,则会根据配置的热点规则对其限流,只要请求中包含这个参数则会限流,此时可以配置参数例外项,即含有这个参数,但当参数为某个值时单独为其设置阈值
    3. 当参数等于例外值时,为其单独设置一个热点规则
    4. 前面的配置根据参数索引来设置热点,只有当请求中含有设置的参数时,才会根据配置的规则对其进行限流(QPS大于阈值时)
    5. 也可以通过参数例外项,来使得就算某个请求含有设置的参数,但不会对其限流
关键字:简历制作网站哪个好_app推广的网站_百度广告怎么做_微信小程序开发

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: