- 博客(45)
- 收藏
- 关注
原创 Sentinel系统规则
Sentinel 系统自适应限流从整体维度对应用入口流量进行控制,结合应用的 Load、CPU 使用率、总体平均 RT、入口 QPS 和并发线程数等几个维度的监控指标,通过自适应的流控策略,让系统的入口流量和系统的负载达到一个平衡,让系统尽可能跑在最大吞吐量的同时保证系统整体的稳定性。
2023-07-11 20:49:22
511
原创 Sentinel 通过@SentinelResource实现流控
在定义了资源点之后,我们可以通过Dashboard来设置限流和降级策略来对资源点进行保护。同时还能 通过@SentinelResource来指定出现异常时的处理策略。@SentinelResource用于定义资源,并提供可选的异常处理和fallback 配置项。
2023-07-05 16:12:33
702
原创 Sentinel api 通过java代码的方式设置流控
最常用的资源是我们代码中的 Java 方法。当然,您也可以更灵活的定义你的资源,例如,把需要控制流量的代码用 Sentinel API SphU.entry(“HelloWorld”) 和 entry.exit() 包围起来即可。在下面的例子中,我们将 System.out.println(“正常访问,没有被流控”);作为资源(被保护的逻辑),用 API 包装起来。接下来,通过流控规则来指定允许该资源通过的请求次数,例如下面的代码定义了资源 RESOURCE_NAME 每秒最多只能通过 1 个请求。
2023-07-03 17:24:36
241
原创 @SentinelResource 自定义限流逻辑处理
没有体现我们自己的业务要求。自定义处理方法和业务代码耦合在一起。每个业务方法都添加一个限流处理方法,代码将会加剧膨胀。无法实现统一全局处理。@SentinelResource除了blockHandler可以设置自定义限流处理逻辑方法以外,还提供另外一个属性来设置限流处理逻辑类型blockHandlerClass属性,此属性中设置的方法必需为 static 函数,否则无法解析。
2023-06-29 14:30:06
162
原创 Sentinel热点限流
很多时候我们希望统计某个热点数据中访问频次最高的 Top K 数据,并对其访问进行限制。上面的热点规则设定之后,所以使用这个参数都被添加了,高级设置对参数值做了规定,当参数值为设定值时,阈值为高级设置中的阈值。注意: 资源名必须是@SentinelResource(value=“资源名”)中 配置的资源名,热点规则依赖于注解。当请求接口带有第一个变量的参数,每秒内请求达到3次,则达到阈值,流控生效,超过部分请求无法正常请求。热点参数流控规则,是一种更细粒度的流控规则,可以将规则设置到具体的参数上。
2023-06-28 21:33:05
141
原创 sentinel熔断降级
除了流量控制以外,对调用链路中不稳定的资源进行熔断降级也是保障高可用的重要措施之一。一个服务常常会调用别的模块,可能是另外的一个远程服务、数据库,或者第三方 API 等。例如,支付的时候,可能需要远程调用银联提供的 API;查询某个商品的价格,可能需要进行数据库查询。然而,这个被依赖服务的稳定性是不能保证的。如果依赖的服务出现了不稳定的情况,请求的响应时间变长,那么调用服务的方法的响应时间也会变长,线程会产生堆积,最终可能耗尽业务自身的线程池,服务本身也变得不可用。
2023-06-28 15:50:52
106
原创 Sentinel流控规则
想象一下这样的场景,在某一秒有大量的请求到来,而接下来的几秒则处于空闲状态,我们希望系统能够在接下来的空闲期间逐渐处理这些请求,而不是在第一秒直接拒绝多余的请求。从监控可以看到,刚开始阈值低,通过的请求少,拒绝的请求多,随着时间推移,拒绝的请求减少,通过的请求增加,当达到5秒之后,只有通过的请求,没有拒绝的请求(每秒请求少于10,多于10的请求依然被拒绝)就好像我家孩子在外面打架,我来处理一样。根据日志打印,可以看出来,虽然请求频繁,一秒超过1次,但是执行时间一秒一次,在请求结束后,依然在执行。
2023-06-27 20:38:41
438
原创 sentinel的认识和简单使用
分布式系统的流量防卫兵:随着微服务的普及,服务调用的稳定性变得越来越重要。Sentinel以“流量”为切入点,在流量控制、断路、负载保护等多个领域开展工作,保障服务可靠性。+丰富的应用场景:Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心场景,例如秒杀(即突发流量控制在系统容量可以承受的范围)、消息削峰填谷、集群流量控制、实时熔断下游不可用应用等。完备的实时监控:Sentinel 同时提供实时的监控功能。
2023-06-27 10:15:05
150
原创 getWay的简单使用
网关作为流量的入口,常用的功能包括路由转发,权限校验,限流等Spring Cloud Gateway 是Spring Cloud官方推出的第二代网关框架,定位于取代 Netflix Zuul。相比 Zuul 来说,Spring Cloud Gateway 提供更优秀的性能,更强大的有功能。Spring Cloud Gateway 是由 WebFlux + Netty + Reactor 实现的响应式的 API 网关。它不能在传统的 servlet 容器中工作,也不能构建成 war 包。
2023-06-12 23:12:21
4110
原创 openFegin的简单使用
配置日志级别细粒度配置 只有调用这里的service才有详细的日志信息。默认的是default in client。取消上面的java代码中的日志配置。默认使用spring的编解码。在配置文件中,添加属性配置。只需要做以下配置就可以了。
2023-05-30 21:27:13
432
原创 springCloud之nacos之负载均衡Ribbon
当我们需要通过随机负载均衡条用用户中心,但是需要通过轮询的负载均衡策略调用账户中心,这个时候就用到了Ribbon的细粒度配置,满足不同的轮询需求。正常项目启动后,Ribbon不会立刻去注册中心加载服务,当我们第一次请求的时候,才会去加载服务,这样第一次请求的时间都会偏长。集成nacos,因为nacos集成了Ribbon,如果其他没有集成nacos的注册中心,比如Eureka需要引入Ribbon。2.客户端侧负载均衡(比如订单中心拿到请求(要到用户中心),再通过负载均衡分发到不同的用户中心实例中)
2023-05-05 23:51:21
714
原创 sprig-Boot定时任务
显然,使用@Scheduled 注解很方便,但缺点是当我们调整了执行周期的时候,需要重启应用才能生效,这多少有些不方便。为了达到实时生效的效果,可以使用接口来完成定时任务。执行请求,修改cron http://localhost:7001/test/updateCron?下文将使用第一种Controller的方式,实现Cron的更新。在原定时任务中添加 @EnableAsync 和 @Async。基于接口(SchedulingConfigurer)
2023-01-17 17:24:11
301
原创 springCloud之路由网关zuul
zuul包含了对请求的路由和过滤的两个主要功能:其中路由功能主要是将外部请求转发到对应的微服务实例上,是实现外部访问同一入口的基础,而过滤器功能则负责对请求的处理过程进行干预,是实现请求校验,服务聚合等功能的基础。zuul和Eureka进行整合,将zuul自身作为服务注册到Eureka服务管理中,同时从Eureka中获取其他微服务消息,即以后的微服务访问都是通过zuul跳转后获得。注意:Zuul服务最终会注册进Eureka提供:代理+路由+过滤三大功能。
2023-01-09 23:17:13
176
原创 spring-cloud之服务降级feign-Hystrix
当某些时间段,某些服务访问量太低,有些服务的访问量又特别的高。这个时候,可以关闭访问量低的服务用于提供高访问量的服务,需要在客户端提供服务降级处理(当客户访问访问量低的服务时,由于该服务已经关闭,客户端直接返回降级处理结果)
2022-12-28 22:07:31
310
原创 springCloud之负载均衡Feign
类似controller调用service,spring cloud集成eureka和ribbon,可在使用feign时提供http请求的客户端。feign是申明式web service客户端,让微服务之间的调用更简单。
2022-12-28 21:15:00
221
原创 23种设计模式-工厂模式,抽象工厂模式
该超级工厂又称为其他工厂的工厂。每次增加一个产品时,都需要增加一个具体类和对象实现工厂,使得系统中类的个数成倍增加,在一定程度上增加了系统的复杂度,同时也增加了系统具体类的依赖。3、设计一个连接服务器的框架,需要三个协议,“POP3”、“IMAP”、“HTTP”,可以把这三个作为产品类,共同实现一个接口。在抽象工厂模式中,接口是负责创建一个相关对象的工厂,不需要显式指定它们的类。缺点:产品族扩展非常困难,要增加一个系列的某一产品,既要在抽象的 Creator 里加代码,又要在具体的里面加代码。
2022-12-15 17:11:03
81
原创 springCloud之服务熔断-Hystrix
Hystrix是分布式系统中用于处理延迟和容错的开源库,在分布式系统中,许多系统不可避免的会出现失败,延迟或者异常等,Hystrix能保证在一个依赖出现问题的情况下,不会导致整体系统失败,导致级联错误,保证了分布式系统的弹性。"熔断器"本身是一个开关,当某一个服务出现了故障,通过熔断器的故障监控,向调用方相应一个服务预期的,可以处理的备选相应(Fallback),而不是长时间的等待或者抛出一个调用方无法处理的异常,这样保证服务方的线程不会被长时间的无效占用,从而避免了故障在分布式系统中蔓延乃至雪崩。
2022-12-14 00:19:33
222
1
原创 springCloud之Eureka之负载均衡Ribbon
说完了注册中心Eureka,虽然Eureka可以实现服务的发现和调用,但在微服务体系中,服务的发现和调用往往是需要伴随着负载均衡这个概念一体的。而在SpringCloud中自然也存在着与Eureka配套的负载均衡组件,也就是Ribbon组件。Spring Cloud Ribbon是基于Netflix Ribbon实现的一套 客户端 负载均衡 工具简单的说,Ribbon是Netflix发布的开源项目,主要功能是提供客户端的软件负载均衡算法,将Netflix的中间层服务连接在一起。Ribbon客户端组件提供一系
2022-12-07 21:33:59
2154
原创 springCloud之Eureka和Zookeeper的区别
Zookeeper和Eureka的区别,Eureka比较Zookeeper 的优点
2022-12-01 21:41:21
360
原创 springCloud实现服务提供者和消费者之间正常访问
11.服务消费者用到一个RestTemplate类,这个是spring提供的模板,可以有需要的方法,通过resultFul风格的请求到服务提供者。版本相对应:参考https://blog.csdn.net/qq_36050986/article/details/124983325。13.添加主启动类后,启动服务提供者和服务消费者,通过访问服务消费者,实现效果。两个不同的访问路径,达到相同的返回结果,实际上都是通过服务提供者拿到的数据。新的maven工程,引入需要的pom文件。
2022-11-16 22:05:39
381
原创 springBoot通过扩展mvc配置添加拦截器
在springBoot中可以通过实现WebMvcConfigurer并重写方法,修改很多的默认配置,当方法被拦截时,先进如拦截器,在进入控制器。
2022-08-11 00:23:02
798
原创 springBoot配置文件介绍ymal
在yml文件中,属性名通过“-”连接,同样可以达到赋值的目的,实体类用驼峰命名的方式。通过注解的方式,对入参数据进行校验,具体使用。当入参不满足校验条件时就会报错。
2022-08-08 21:36:09
972
转载 springBoot官方配置文件内容
spring.jta.narayana.expiry-scanners = com.arjuna.ats.internal.arjuna.recovery.ExpiredTransactionStatusManagerScanner #逗号分隔的到期扫描程序列表。spring.jta.bitronix.properties.jndi-transaction-synchronization-registry-name = #TransactionSynchronizationRegistry的JNDI名称。.
2022-08-07 23:48:30
778
原创 springboot1
只需要在resources文件夹下添加banner.txt文件,同时将想要的banner内容复制进去,启动就可以实现效果。1.通过IDEA在新新建springboot项目,主要是选择需要整合的内容,自动添加配置,就可以直接使用了。在我们引入一些springBoot依赖的时候,不需要设置版本,是因为我们父工程中已经管理了版本。2.比如我们用到spring-boot-starter-web,启动器就会帮我们导入需要的依赖。1.启动器,说白了,就是springBoot中的一个个启动场景。...
2022-08-07 23:44:25
165
原创 web开发基础
sun公司开发的一门动态web技术sun公司提供了一个api叫servlet,想要开发一个servlet,只要完成两个步骤1.编写一个实现servlet的类2.将写好的java程序部署到服务器将实现了servlet的程序叫做servlet。...
2022-08-02 00:14:35
99
原创 thread线程
1.正常的程序执行时纵向顺序执行。如果主线程调用了其他方法,则是在其他方法执行完成之后再回到主线程。2.多线程执行,则是在主线程执行过程中新开一条线程执行其他方法,这个时候主线程和子线程并行交替执行。3.Process程序跑起来就是一个进程,每一个进程包含多个线程thread4.很多多线程都是模拟出来的,就是只有一个cpu交替执行不同的线程。并不是正真意义上的同时执行,只有多个cpu才能实现多线程。...
2022-08-02 00:13:31
865
原创 Redis从头到尾
现在是2022年,是一个大数据的时代;技术更新迭代,年轻人越来越多,所以我们需要逼着自己学习,只有不断学习,才能让自己的亲人过的更好。用户APP通过ADL访问到数据库,仅此而已。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DmNuBGzB-1659370129109)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220422223820986.png)]那个年代,要给简单的
2022-08-02 00:09:58
272
原创 spring从头到尾
1.4Spring Boot 一个快速开发的脚手架 基于springBoot可以快速的开发单个微服务 约定大于配置Spring Cloud Spring Cloud 是基于SpringBoot开发的。弊端: spring配置比较多。新建一个项目,导入mvc包IOC是一种设计思想,DI(依赖)注入式控制反转的一种实现,在这之前,对象的新建和依赖关系完全由程序自己控制,现在,将对象的新建和依赖关系交给第三方,程序主要实现业务。新建和控制对象的为IOC容器。applicationContext
2022-08-02 00:01:03
140
原创 maven项目创建异常
在创建maven项目,导入包的时候报错java.lang.RuntimeException: org.codehaus.plexus.component.repository.exception.ComponentLookupException: com.google.inject.ProvisionException: Unable to provision, see the following errors:1) Error injecting constructor, java.lang.No
2022-04-18 22:24:13
776
原创 spring-代理模式
代理模式1静态代理角色分析: 1.抽象角色:一般会使用接口或者抽象类 2.真是角色:被代理角色 3.代理角色:代理真是角色,代理真实角色后会增加一些附属操作 4.客户:访问被代理的对像代码步骤1.接口public interface Rent { void rent();}2.真实角色public class Host implements Rent{ @Override public void rent() { System.
2022-04-12 00:09:42
678
原创 spring-使用注解开发
自动装配的使用1.配置文件注入bean <bean id="cat" class="Bean.Cat"></bean>//scope 设置bean的作用域,singleton 表示单例模式,只有一个bean <bean id="dog" class="Bean.Dog" scope="singleton"></bean> <bean id="dog2" class="Bean.Dog" scope="singleton"><
2022-04-12 00:00:17
642
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人