第八天 SpringCloud--熔断器Hystrix、微服务网关Zuul、集中配置文件、消息总线

第八天、SpringCloud 之一统江湖

熔断器Hystrix(豪猪)

雪崩效应

在微服务架构中通常会有多个服务层调用,基础服务的故障可能会导致级联故障, 进而造成整个系统不可用的情况,这种现象被称为服务雪崩效应。服务雪崩效应是一种 因“服务提供者”的不可用导致“服务消费者”的不可用,并将不可用逐渐放大的过程。

快速体验

Feign 本身支持Hystrix,不需要额外引入依赖。

1 修改tensquare_qa模块的application.yml ,开启 hystrix

feign: 
  hystrix: 
    enabled: true

2 在com.tensquare.qa.client包下创建impl包,包下创建熔断实现类,实现自接口 LabelClient

@Component
public class LabelClientImpl implements LabelClient {
    @Override
    public Result findById(String id) {
        return new Result(false, StatusCode.ERROR, "熔断器启动了");
    }
}

3 修改LabelClient的注解,表示出问题了,则执行其实现类,即使用熔断器。

@FeignClient(value="tensquare‐base",fallback = LabelClientImpl.class)

4 测试运行
重新启动问答微服务,测试看熔断器是否运行。

网关-Zuul

所有微服务都在 Eureka 服务器上面。

网关(分为Web网关后台manager网关):所有用户都经过网关去访问微服务,由网关向指定的微服务跳转。所以网关也要放到 Eureka 服务器

搭建后台网关

引入 Eureke 和 zuul 的依赖;创建配置文件;写启动类;

Zuul 网关过滤器

请求进入网关后,头信息会丢失。

web网关头信息转发。用户请求的头信息一般不是用于权限验证,权限验证是后台网关要求做的,

任何向网关发送的请求,都需要转发两次。第一次是网关内部负责请求路径分发的请求,方法名叫:OPTTIONS,碰到这个方法,后台网关直接放行。此外,还需要对登录请求之间放行。

集中配置组件 SpringCloudConfig – 为了运维方便

项目开发完成会部署到线上,java 代码一般不用修改,因为需要经常频繁修改的内容已经放到了配置文件中,就会涉及到修改配置文件。

当整个项目部署到线上后,修改本地配置文件无法影响线上,需要修改完后,整个模块重新做成镜像,重新发布一下。这样比较麻烦。

因此,把所有模块的配置文件,抽取到一个公共的地方,方便线上修改配置文件。

config: 集中配置中心,将所有服务的配置文件都放在一个代码管理平台上(码云),通过该服务去读取对应服务所需的配置文件。

web 客户端想要访问网关 第一步需要先访问 集中配置中心,获取到网关的配置文件。在这里插入图片描述
1.把配置文件上传到 Gitee
2.搭建配置中心微服务

  • 配置中心微服务的功能就是从 gitee 上把对应微服务的配置文件下载下来使用。

基础微服务使用配置中心获取配置文件

对基础微服务进行下面操作:

  • 配置客户端依赖
  • 添加bootstrap.yml配置文件,删除 application.yml。区别:1.前者的优先级高于后者的优先级,即若两个配置文件都存在,先执行bootstrap.yml配置文件;2. bootstrap.yml配置的都是一些不经常改变的系统配置信息, application.yml配置的是代码用到的配置信息(可能会经常改动),比如连接数据库的信息。

让Eureka、网关、用户都使用配置中心获取配置文件

消息总线组件SpringCloudBus

监听:看配置文件是否有改动,如果有的话,让该模块读取配置文件,重新编译代码。

必须要提前把 MQ 运行起来。

流程图如下:
监听流程
SpringCloudBus 也分为服务端和客户端。

配置服务端

配置客户端

自定义配置的读取

@Value("${sms.ip}")
private String ip;

在 Controller 层加上@RefreshScope, 此注解用于刷新配置。以后可以在每个Controller 层都加上此注解。如果没加,对于自定义的配置文件被修改了,虽然某模块监听了消息队列,但是仍无法获得修改后的信息。

网关和ip、端口没有任何关系,网关是通过项目名称寻找模块,压根没有经过 ip 和端口号。ip和端口号要提前注册到 Eureka 上,网关自身也要注册到 Eureka 上,否者模块相互之间无法通信。

PowerDesigner: 双方公司为了商务洽谈,使用该工具,将模型列出来,方便给投资方或第三方公司,讲解我公司软件的架构流程。主要是用于展示,而不是说离开他不行。很牛的架构师为了快速搭建框架,压根不用。其实 PowerDesigner 就是在说明类与类、方法与方法和接口与接口、数据库表之间的关系,就是画一个模型图。

如果面试问到是否会 会使用 PowerDesigner, 可以回答这个不会,但是如果需要我可以回头研究一下。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值