当前位置: 首页 > news >正文

深圳网站建设jm3q品牌如何推广

深圳网站建设jm3q,品牌如何推广,想学做网站可以自学吗,桂林网站开发建设文章目录 目录 文章目录 前言 一、解决微服务雪崩的问题 二、使用步骤 三、熔断器的使用 3.1 限流规则 3.1.1流控模式 3.1.2流控效果 3.2 隔离和降级 3.2.1 隔离 3.2.2 降级 四、sentinel规则持久化 总结 前言 在基于 SpringCloud 构建的微服务体系中,服务间的调用…

文章目录

目录

文章目录

前言

一、解决微服务雪崩的问题

二、使用步骤

三、熔断器的使用

3.1 限流规则

3.1.1流控模式

 3.1.2流控效果

3.2 隔离和降级

3.2.1 隔离

3.2.2 降级 

 四、sentinel规则持久化

总结



前言

        在基于 SpringCloud 构建的微服务体系中,服务间的调用链路会随着系统的演进变得越来越长,这无疑会增加了整个系统的不可靠因素。在并发流量比较高的情况下,由于网络调用之间存在一定的超时时间,链路中的某个服务出现宕机都会大大增加整个调用链路的响应时间,而瞬间的流量洪峰则会导致这条链路上所有服务的可用线程资源被打满,从而造成整体服务的不可用,这也就是我们常说的 “雪崩效应”。而在微服务系统设计的过程中,为了应对这样的糟糕情况,最常用的手段就是进行 ”流量控制“ 以及对网络服务的调用实现“熔断降级”。因此,Sentinel 就因运而生了。

        Sentinel 是一款面向分布式服务架构的轻量级流量控制组件,主要以流量为切入点,从流量控制、熔断降级、系统自适应保护等多个维度来保障服务的稳定性,核心思想是:根据对应资源配置的规则来为资源执行相应的流控/降级/系统保护策略


 

一、解决微服务雪崩的问题

解决雪崩问题的常见方式有四种:

超时处理:设定超时时间,请求超过一定时间没有响应就返回错误信息,不会无休止等待
舱壁模式:限定每个业务能使用的线程数,避免耗尽整个tomcat的资源,因此也叫线程隔离。
熔断降级:由断路器统计业务执行的异常比例,如果超出阈值则会熔断该业务,拦截访问该业务的一切请求。
流量控制:限制业务访问的QPS,避免服务因流量的突增而故障。

如何避免因瞬间高并发流量而导致服务故障?

流量控制

如何避免因服务故障引起的雪崩问题?

超时处理
线程隔离
降级熔断

 

Sentinel是阿里巴巴开源的一款微服务流量控制组件。官网地址:home | Sentinel

Sentinel 具有以下特征:

丰富的应用场景Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心场景,例如秒杀(即突发流量控制在系统容量可以承受的范围)、消息削峰填谷、集群流量控制、实时熔断下游不可用应用等。
完备的实时监控Sentinel 同时提供实时的监控功能。您可以在控制台中看到接入应用的单台机器秒级数据,甚至 500 台以下规模的集群的汇总运行情况。
广泛的开源生态Sentinel 提供开箱即用的与其它开源框架/库的整合模块,例如与 Spring CloudDubbogRPC 的整合。您只需要引入相应的依赖并进行简单的配置即可快速地接入 Sentinel

完善的 SPI 扩展点Sentinel 提供简单易用、完善的 SPI 扩展接口。您可以通过实现扩展接口来快速地定制逻辑。例如定制规则管理、适配动态数据源等。

二、使用步骤

首先下载sentinel控制台jar包 

 然后在该目录下打开cmd 

启动该jar包

java -Dserver.port=8888 -jar sentinel-dashboard-1.8.6.jar

微服务整合Sentinel

我们在order-service中整合Sentinel,并且连接Sentinel的控制台,步骤如下:

<!--sentinel-->
<dependency>
    <
groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</
dependency>

然后在配置文件中接入

spring:
 
cloud:
    sentinel:
     
transport:
       
dashboard: localhost:8888

 

这样就完成了一个微服务的接入熔断 ,其他类似 

三、熔断器的使用

3.1 限流规则

 

 

3.1.1流控模式

 

在添加限流规则时,点击高级选项,可以选择三种流控模式:

直接:统计当前资源的请求,触发阈值时对当前资源直接限流,也是默认的模式
关联:统计与当前资源相关的另一个资源,触发阈值时,对当前资源限流
链路:统计从指定链路访问到本资源的请求,触发阈值时,对指定链路限流

 

 

在使用链路的时候需要添加识别的注解来让熔断器识别到底层方法

@SentinelResource("goods")
public void queryGoods() {
    System.
err.println("查询商品");
}

Sentinel默认会将Controller方法做context整合,导致链路模式的流控失效,需要修改application.yml,添加配置:

spring:
 
cloud:
    sentinel:
     
web-context-unify: false # 关闭context整合

 

流控模式有哪些?

直接:对当前资源限流
关联:高优先级资源触发阈值,对低优先级资源限流。
链路:阈值统计时,只统计从指定资源进入当前资源的请求,是对请求来源的限流

 

 3.1.2流控效果

流控效果是指请求达到流控阈值时应该采取的措施,包括三种:

快速失败:达到阈值后,新的请求会被立即拒绝并抛出FlowException异常。是默认的处理方式。
warm up:预热模式,对超出阈值的请求同样是拒绝并抛出异常。但这种模式阈值会动态变化,从一个较小值逐渐增加到最大阈值。
排队等待:让所有的请求按照先后次序排队执行,两个请求的间隔不能小于指定时长

 

 

比如1s 10个qps 排队等待效果就是在某这时刻 一瞬间全都进到队列里面等待 每个请求处理200ms 这个时候队列是满的 如果第一请求还没处理好,那么后面超过该队列总的等待时间的请求就会直接被拒绝,但是随着处理,后面的请求再来的时候有可能因为已经处理过了,而刚好进入到队列中等待,这时候该请求就不会被限制 

流控效果有哪些?

快速失败:QPS超过阈值时,拒绝新的请求
warm up QPS超过阈值时,拒绝新的请求;QPS阈值是逐渐提升的,可以避免冷启动时高并发导致服务宕机。
排队等待:请求会进入队列,按照阈值允许的时间间隔依次执行请求;如果请求预期等待时长大于超时时间,直接拒绝

 

 热点参数限流的时候需要给该限流的控制层方法添加@SentinelResource("hot") 来让限流生效

3.2 隔离和降级

3.2.1 隔离

 

 

 Feign整合Sentinel

 

SpringCloud中,微服务调用都是通过Feign来实现的,因此做客户端保护必须整合FeignSentinel

1.修改OrderServiceapplication.yml文件,开启FeignSentinel功能

在配置文件中开启该功能

feign:
  sentinel:
   
enabled: true # 开启FeignSentinel功能

2.FeignClient编写失败后的降级逻辑
方式一:FallbackClass,无法对远程调用的异常做处理

方式二:FallbackFactory,可以对远程调用的异常做处理,我们选择这种

 

先写一个降级后的处理类 

@Component
public class ProductFeignFactory implements FallbackFactory<ProductFegin> {@Overridepublic ProductFegin create(Throwable throwable) {return new ProductFegin() {@Overridepublic Product findById(Integer pid) {Product product = new Product();product.setPid(1);product.setPname("系统繁忙");return product;}};}
}

然后开启

/*** @author :Student王心* @date :Created in 2023/2/11 15:30* @description:* fallbackFactory 远程调用微服务出现故障 则执行降级的业务代码* @modified By:* @version:*/
//value里面表示服务名称,openfeign用来远程调用的,这个接口主要说明,需要调用那个微服务名称
@FeignClient(value = "xin-spring-cloud-product",fallbackFactory = ProductFeignFactory.class)
public interface ProductFegin {//该路径还有提交方式必须跟提供者的路径和提交方式保持一致@GetMapping("/product/getById/{pid}")public Product findById(@PathVariable Integer pid);
}

这样就完成了对远程调用的异常处理

 

 

 

 

 

 

线程隔离的两种手段是?

信号量隔离
线程池隔离

信号量隔离的特点是?

基于计数器模式,简单,开销小

线程池隔离的特点是?

基于线程池模式,有额外开销,但隔离控制更强

3.2.2 降级 

 

 

Sentinel熔断降级的策略有哪些?

慢调用比例:超过指定时长的调用为慢调用,统计单位时长内慢调用的比例,超过阈值则熔断
异常比例:统计单位时长内异常调用的比例,超过阈值则熔断
异常数:统计单位时长内异常调用的次数,超过阈值则熔断

 

 四、sentinel规则持久化

 

 

java -Dserver.port=8888 -Dnacos.serverAddr=localhost:8848 -Dnacos.namespace=nacos的命名空间id -jar sentinel-dashboard.jar
# -Dserver.port 控制台端口号
# -Dnacos.serverAddr: nacos 地址
# -Dnacos.namespace: 你项目所在的 nacos 命名空间  如果命名空间就是public可以省略该参数

 然后进入控制台使用所有带+2的进行操作就可以了

微服务接入

<dependency>
            <groupId>com.alibaba.csp</groupId>
            <artifactId>sentinel-datasource-nacos</artifactId>
            <version>1.8.1</version>
        </dependency>

修改该微服务的配置文件


spring.application.name=xin-spring-cloud-order
#配置中心
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
#额外的配置
spring.cloud.nacos.config.extension-configs[0].data-id=datasource.properties
spring.cloud.nacos.config.extension-configs[0].group=DEFAULT_GROUP
spring.cloud.nacos.config.extension-configs[0].refresh=true#配置熔断器
spring.cloud.sentinel.transport.dashboard=localhost:8888
#控制面板修改规则后,可以通过该端口把规则发给微服务
spring.cloud.sentinel.transport.port=8719#关闭引起链路模式的流控失败的上下文
spring.cloud.sentinel.web-context-unify=false#开启feign的Sentinel功能
feign.sentinel.enabled=truespring.cloud.nacos.server-addr=localhost:8848spring.cloud.nacos.config.namespace=nacos命名空间id
spring.cloud.nacos.config.group=aaa#配置持久化规则
spring.cloud.sentinel.datasource.aaa-flow.nacos.server-addr=localhost:8848
spring.cloud.sentinel.datasource.aaa-flow.nacos.namespace=${spring.cloud.nacos.config.namespace}
spring.cloud.sentinel.datasource.aaa-flow.nacos.group-id=SENTINEL_GROUP
spring.cloud.sentinel.datasource.aaa-flow.nacos.data-id=${spring.application.name}-flow-rules
spring.cloud.sentinel.datasource.aaa-flow.nacos.rule-type=flow
spring.cloud.sentinel.datasource.aaa-flow.nacos.data-type=json

 

 这样就完成了持久化

 

 

 

 

 

 

 

 

 

 


总结

待补充

http://www.wangmingla.cn/news/63821.html

相关文章:

  • 网站未备案wordpress链接南宁推广公司
  • 建设门户网站申请免费软文推广平台都有哪些
  • sq网站推广怎么建网站平台卖东西
  • 物流营销型网站案例分析百度搜索推广登录入口
  • 如何编辑做网站网络销售推广公司
  • 做网站的公司有哪些产品50个关键词
  • 网站上的vR场景贴图怎么做的seo关键词挖掘
  • 网站建设销售话术900句semester是什么意思
  • 泉州专业做网站公司廊坊网站推广公司
  • 网络培训系统入口seo百度关键词优化
  • 淘宝上做网站的可靠百度云群组
  • 郑州网站建设制作费用百度自然搜索排名优化
  • 做ui的网站企业网站优化服务公司
  • 南京设计网站建设郑州百度分公司
  • 公司核名在哪个官方网站高平网站优化公司
  • 做网站 需要了解什么网络营销题库及答案2020
  • 建网站怎么上线金融网站推广圳seo公司
  • 做图片视频的网站杭州seo首页优化软件
  • 黄岛网站建设公司关键词seo排名优化软件
  • 建站时长是什么原因造成的查网站权重
  • 美工网站做兼职关键词挖掘工具
  • 最专业的企业营销型网站建设价格免费的网站
  • 做盗版网站吗自动外链
  • 全屏网站大小搜搜
  • 拌合站建站方案近日发生的重大新闻
  • 门设计的网站建设seo网站分析工具
  • 安平做网站合肥网络推广服务
  • wordpress主题 king冯耀宗seo
  • 如何建设小网站网络营销推广方案步骤
  • 重庆网站建设狐灵科技站长工具查询系统