spring cloud微服务学习

1.Ribbon 是什么?
Netflix公司提供的一个负载均衡的客户端,一般用于服务的消费方法
2.Ribbon 可以解决什么问题?
基于负载均衡策略进行服务调用,所有策略都会实现IRule接口
3.Ribbon 内置的负载策略都有哪些?
可以通过IRule接口的实现类进行分析,Netfilx提供了其中,nacos提供了一种方式
RoundRobinRule。 轮询策略。默认的策略在这里插入图片描述
4.@LoadBalanced 的作用是什么?
描述 RestTemplate 对象,用于告诉 Spring 框架, 在使用 RestTempalte 进行服务调用时,这个调用过程会被一个拦截器进行拦截,然后在拦截器内部,启动负载均衡策略。

5.我们可以自己定义负载均衡策略吗?
可以,基于 IRule 接口进行策略定义

nacos注册中心

6.我们的服务实例是如何注册到 Nacos 服务的?
Nacos 本身就是一个 web 服务,我们将一些数据传递到这个 web 服务,然后在我们的业务服务启动时会向 nacos 发起一个http 请求,然后 nacos 服务端从请求中读取数据并进行存储

7.在 Nacos 中服务提供者是如何向 Nacos 注册中心(Registry)续约的?
5秒心跳机制

8.对于 Nacos 服务来讲它是如何判定服务实例的状态?
检测心跳包 15,30。nacos服务端如果在15s没有收到实力心跳,则设置该实例不健康,如果在30s没有收到心跳,则摘除实例

9.服务启动时如何找到服务启动注册配置类?
通过NacosNamingService

10.服务消费方是如何调用服务提供方的服务的?
RestTemplate+LoadBalanceClient类

11.当 nacos 注册中心关闭了,服务消费方还能调用到服务吗?
如果服务的消费方,已经在本地调用过提供方的服务,则可以在nacos注册中心变比是调用,因为已经调用过之后会在本地进行了缓存

12.服务消费方是如何拿到 nacos 注册中心的服务提供者实例的?
先 pull,假如没有pull 到,检查本地缓存->nacos 推送)

13.Nacos 注册中心基于什么协议进行服务提供者的实例信息推送?
UDP协议

14.Nacos 是如何实现其高可用的?
客户端重试, 一致性协议 distro, 本地缓存文件Failover 机制, 心跳同步服务, 集群部署模式。

Feign–web服务客户端

Feign 应用过程分析(底层逻辑先了解):

  1. 通过 @EnableFeignCleints 注解启动 Feign Starter 组件。
  2. Feign Starter 在项目启动过程中注册全局配置,扫描包下所有的 @FeignClient 接口
    类,并进行注册 IOC 容器。
  3. @FeignClient 接口类被注入时,通过 FactoryBean#getObject 返回动态代理对象。
  4. 接口被调用时被动态代理类逻辑拦截,将 @FeignClient 请求信息通过编码器生成
    Request 对象
  5. 请求对象经 Ribbon 进行负载均衡,挑选出一个健康的 Server 实例。
  6. 通过 Client 携带 Request 调用远端服务返回请求响应。
  7. 通过解码器生成 Response 返回客户端,将信息流解析成为接口返回数据。

15.何为注册中心?
用于记录服务信息的一个web系统,例如淘宝,滴滴,美团外卖

16.注册中心的核心对象?
服务提供方、服务消费方、注册中心-Registry

17.市面上常用的注册中心?
Google-Consul、Alibaba-Nacos

18.Nacos是什么,提供了什么特性?
服务的注册、发现和配置

19.Nacos的官网?
nacos.io

20.Nacos的源码下载?
github.com/alibaba/naocs

21.Nacos的使用?
windows版和mac版均是解压即用

22.Nacos的配置?
配置解压包下的conf下的application.properties文件中的数据源

23.为服务架构下项目的创建?
父类工程提供pom依赖,服务方工程和消费方工程集成父工程

24.Nacos 健康检查的方式?
临时实例使用客户端上报,持久实例使用服务端反向探测

25.为什么会选择Nacos?
活跃度高、性能稳定、性能较高、学习成本低、易用性高、易操作

Sentinel流量控制器

core核心:java客户端(可以在所有java环境下运行,对Dubbo和spring cloud框架都有较好的支持)、控制台Dashboard(基于spring boot开发,打包后可以直接运行)

软件下载地址:https://github.com/alibaba/Sentinel/releases

运行方式:cmd控制台或者mac的ter终端或者linux的ter终端
java-Dserver.port=8180-Dcsp.sentinel.dashboard.server=localhost:8180
-Dproject.name=sentinel-dashboard-jarsentinel-dashboard-1.8.0.jar

以8180左右端口进行运行。

需要啊在消费方添加依赖

		<dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>

在yml中添加配置

sentinel:
      transport:
        port: 8178  #跟控制台交流的端口
        dashboard: localhost:8180 #指定sentinel控制台地址
      eager: true #启动服务就直接注册金sentinel控制台

在spring标签下添加

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值