sentinel结合项目的使用
面对互联网的高并发过载流量,为了保证系统的稳定性,我们一般会对过载流量进行限流。 1、什么是 sentinel:在基于 SpringCloud 构建的微服务体系中,服务间的调用链路会随着系统的演进变得越来越长,这无疑会增加了整个系统的不可靠因素。 在并发流量比较高的情况下,由于网络调用之间存在一定的超时时间,链路中的某个服务出现宕机都会大大增加整个调用链路的响应时间,而瞬间的流量洪峰则会导致这条链路上所有服务的可用线程资源被打满,从而造成整体服务的不可用,这也就是我们常说的 “雪崩效应”。 而在微服务系统设计的过程中,为了应对这样的糟糕情况,最常用的手段就是进行 ”流量控制“ 以及对网络服务的调用实现“熔断降级”。因此,Sentinel 就应运而生了。 Sentinel 是一款面向分布式服务架构的轻量级流量控制组件,主要以流量为切入点,从流量控制、熔断降级、系统自适应保护等多个维度来保障服务的稳定性,核心思想是:根据对应资源配置的规则来为资源执行相应的流控/降级/系统保护策略,Sentinel...
sentinel规则持久化到nacos
规则持久化-代码仓库地址 现在,sentinel的所有规则都是内存存储,重启后所有规则都会丢失。在生产环境下,我们必须确保这些规则的持久化,避免丢失。 1.规则管理模式规则是否能持久化,取决于规则管理模式,sentinel支持三种规则管理模式: 原始模式:Sentinel的默认模式,将规则保存在内存,重启服务会丢失。 pull模式 push模式 1.1.pull模式pull模式:控制台将配置的规则推送到Sentinel客户端,而客户端会将配置规则保存在本地文件或数据库中。以后会定时去本地文件或数据库中查询,更新本地规则。 1.2.push模式push模式:控制台将配置规则推送到远程配置中心,例如Nacos。Sentinel客户端监听Nacos,获取配置变更的推送消息,完成本地配置更新。 2.实现push模式1.引入依赖引入sentinel监听nacos的依赖: 1234<dependency> <groupId>com.alibaba.csp</groupId> ...
关于FeignClient注解中的contextId
contextId的使用一般是调用同一个服务,但是分多个接口 比如调用同一个member服务可以通过contextId来区分开,否则就会报错bean冲突 12345678/** * @author 小五 */@FeignClient(contextId = "MemberAFeign", value = ServiceNameConstants.MEMBER_SERVICE, fallbackFactory = MemberFeignAFallbackFactory.class)public interface MemberAFeign { ...} 12345678/** * @author 小五 */@FeignClient(contextId = "MemberBFeign", value = ServiceNameConstants.MEMBER_SERVICE, fallbackFactory =...
关于FeignClient参数fallbackFactory和fallback
首先两个参数都可以作为断容器使用,在抛出exception时,返回默认的配置数据 其次两个参数不能同时使用 区别:fallbackFactory可以识别到cause,也就是说如果需要得到错误原因,可以使用fallbackFactory,如下 fallbackFactory的使用 FeignClient 123456remote接口标注fallbackFactory,/** * @author 小五 */@FeignClient(contextId = "productFeign", value = ServiceNameConstants.PRODUCT_SERVICE, fallbackFactory = ProductFeignFallbackFactory.class) FeignClient实现类 12345678910111213@Slf4j@Componentpublic class ProductFeignFallbackImpl implements ProductFeign { @Setter ...
关于rpc和http
1234567891011121314151617什么是RPC协议?RPC(Remote Procedure Call)远程过程调用协议是一个用于建立适当框架的协议。从本质上讲,它使一台机器上的程序能够调用另一台机器上的子程序,而不会意识到它是远程的。RPC 是一种软件通信协议,一个程序可以用来向位于网络上另一台计算机的程序请求服务,而不必了解网络的细节。RPC...
学习sentinel
1.初识Sentinel1.1.雪崩问题及解决方案1.1.1.雪崩问题微服务中,服务间调用关系错综复杂,一个微服务往往依赖于多个其它微服务。 如图,如果服务提供者I发生了故障,当前的应用的部分业务因为依赖于服务I,因此也会被阻塞。此时,其它不依赖于服务I的业务似乎不受影响。 但是,依赖服务I的业务请求被阻塞,用户不会得到响应,则tomcat的这个线程不会释放,于是越来越多的用户请求到来,越来越多的线程会阻塞: ...
gateway网关的使用
Gateway服务网关Spring Cloud Gateway 是 Spring Cloud 的一个全新项目,该项目是基于 Spring 5.0,Spring Boot 2.0 和 Project Reactor 等响应式编程和事件流技术开发的网关,它旨在为微服务架构提供一种简单有效的统一的 API...
openfeign远程调用
Feign远程调用先来看我们以前利用RestTemplate发起远程调用的代码: 存在下面的问题: •代码可读性差,编程体验不统一 •参数复杂URL难以维护 Feign是一个声明式的http客户端,官方地址:https://github.com/OpenFeign/feign 其作用就是帮助我们优雅的实现http请求的发送,解决上面提到的问题。 2.1.Feign替代RestTemplateFegin的使用步骤如下: 1)引入依赖我们在order-service服务的pom文件中引入feign的依赖: 1234<dependency> <groupId>org.springframework.cloud</groupId> ...
关于springcloud
单体, 微服务,...
学习nacos - 注册中心,配置中心
Nacos是SpringCloudAlibaba的组件,而SpringCloudAlibaba也遵循SpringCloud中定义的服务注册、服务发现规范。因此使用Nacos和使用Eureka对于微服务来说,并没有太大区别。 主要差异在于: 依赖不同 服务地址不同 注册中心pom 1234567<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-alibaba-dependencies</artifactId> <version>2.2.6.RELEASE</version> <type>pom</type> <scope>import</scope></dependency> 1234<dependency> ...