单体转微服务:微服务保护和分布式事务(上)

一.微服务中的缓存雪崩

由于微服务链路中的某个服务故障,导致整个链路级联失败,这就是微服务雪崩

1.产生原因:

<1>服务提供者阻塞或者故障
<2>服务调用者没有做好异常处理
<3>整个链路级联失败,导致集群故障

2.解决方案

<1>请求限流

使用一个限流器,当调用某个服务时,先经过限流器,使得同一时间服务请求的并发数小于或者等于限流器的阙值

<2>线程隔离

为不同服务设立最大可用线程,这样一个服务出现故障便不会影响其他服务

<3>服务熔断

编写服务降级逻辑,当服务出现故障或者访问过慢的时候,可以抛异常,也可以发送提示或者数据,当某个业务异常比例过高的时候,证明该服务出现故障,直接实现服务降级

二.运用Sentinel实现微服务保护

1.引入依赖

复制代码
<!--sentinel-->
<dependency>
    <groupId>com.alibaba.cloud</groupId> 
    <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>

2.配置控制台

复制代码
spring:
  cloud: 
    sentinel:
      transport:
        dashboard: localhost:8090

3.微服保护

<1>请求限流
<2>线程隔离
<4>服务熔断
1.编写Fallback实现请求降级

<1>创建Itemclient类实现FallbackFactory

复制代码
@Slf4j
public class ItemClientFallbackFactory implements FallbackFactory<ItemClient>{
    @Override
    public ItemClient create(Throwable cause) {
        return new ItemClient() {
            @Override
            public Set<ItemDTO> queryItemByIds(Set<Long> ids) {
                log.error("查询商品信息失败", cause);
                return Set.of();
            }
        };
    }
}

<2>编写配置类注入Bean对象

复制代码
@Configuration
public class ItemClientConfig {
    @Bean
    public ItemClientFallbackFactory itemFallbackFactory() {
        return new ItemClientFallbackFactory();
    }
}

<3>使用ItemClientFallbackFactory

复制代码
@FeignClient(value = "item-service",fallback = ItemClientFallbackFactory.class)
public interface ItemClient {
    @GetMapping("/items")
    Set<ItemDTO> queryItemByIds(Set<Long> ids);
}
2.实现服务熔断
3.熔断原理

熔断是依靠断位器来实现的

断路器有三个状态 close open half-open

断路器一开始处于open状态,当慢请求或者异常请求达到所设置的阙值的时候,就会进入close状态,close是一个临时状态,当达到一定时间后会进入half-oepn状态,这时会向服务发送一个请求,如果服务正常则会进入close状态,否则进行open状态。像这样不断循环。

相关推荐
2603_9547083127 分钟前
全维度容错设计,打造微电网安全运行屏障
服务器·网络·数据库·人工智能·分布式·安全
国服第二切图仔1 小时前
HarmonyOS APP《画伴梦工厂》开发第60篇-分布式软总线2.0——多设备协同新范式
分布式·wpf·harmonyos
Sirius Wu2 小时前
OpenClaw(UpClaw)三层Tool全链路治理深度详解
网络·人工智能·架构·aigc
952363 小时前
RabbitMQ-基础操作
java·spring boot·分布式·后端·spring·rabbitmq
QN1幻化引擎3 小时前
给 AI 做一次「意识体检」——基于 QN1 幻化引擎的灵鉴意识识别框架与 DalinX V5 实测
大数据·数据结构·人工智能·算法·架构
heimeiyingwang3 小时前
【架构实战】分库分表实战:ShardingSphere与中间件选型
中间件·架构
柒和远方3 小时前
从审计日志到可下载证据包:事务型 Outbox、租约 fencing 与保留水位
前端·后端·架构
拥抱太阳06163 小时前
HarmonyOS 应用开发《掌上英语》第3篇:响应式架构:BreakpointModel 与多设备适配方案
华为·架构·harmonyos
ITxiaobing20234 小时前
程序化广告RTB场景下IP地理定位服务的精度与工程架构选型
网络协议·tcp/ip·架构
heimeiyingwang4 小时前
【架构实战】MySQL索引优化:从慢查询到毫秒响应
数据库·mysql·架构