springcloud的数据

基本概念

(1)分布式:

系统多个模块在不同服务器部署,分布式系统

(2)高可用性

部分节点失效,其他可代替服务

(2.1)怎么提高可用性

提高无故障时间,减少故障时间

网络问题:网络链接出现问题,网络带宽出现拥塞等
性能问题:慢 SQL、Java Full GC、硬盘 IO 过大、CPU 飙高、内存不足等
安全问题:被网络攻击,如 DDoS 等。
运维问题:系统总是在被更新和修改,架构也在不断地被调整,监控问题等
管理问题:没有梳理关键服务及服务的依赖关系,运行信息没有和控制系统同步等
硬件问题:硬盘损坏、网卡出问题、交换机出问题、机房掉电、挖掘机问题等

集群

一个特定领域的软件部署到多态服务器上提供一类服务。

1.负载均衡

请求---发送---系统,把请求分布到多个节点上,每个节点均匀处理请求

2.正向代理和反向代理

正向代理是代理服务器代替系统内部来访问外部网络的过程,(外部网络只知道是代理服务器请求发的),反向代理是外部请求访问系统时通过代理服务器转发到内部服务器的过程(外部只知道代理服务器,不知道是哪个系统访问)

DNS服务器(域名系统)把域名转换为实际IP地址

什么是微服务

微服务架构(MSA)的基础是将单个应用程序开发为一组小型独立服务,这些独立服务在自己的进程中运行,独立开发和部署。

配置文件pom.xml

<dependencyManagement></dependencyManagement>   核心依赖的版本管理

pom  子模块依赖版本,打包方式

import 引入依赖

provided 此依赖只在编译阶段有效

Application.yml的常用点

server:
   port: 8081 端口号
spring:
  application:
    name: sca-provider        进行服务注册必须配置服务名
  cloud:     服务注册到哪里
    nacos:
      discovery:
        server-addr: localhost:8848   端口号

  feign:  
  hystrix:
    enabled: true #默认值为false

注册中心的选择 要求

社区活跃度,稳定性,功能,性能等

Nacos

下载地址

https://github.com/alibaba/nacos/releases

Nacos是一个应用于服务注册与发现,配置管理的平台。

优点

  1. 简单可用,稳定可靠,性能卓越

RestTemplate 简介

RestTemplate 是从 Spring3.0 开始支持的一个 HTTP 请求工具,它提供了常见的REST请求方案的模版,例如 GET 请求、POST 请求、PUT 请求、DELETE 请求以及一些通用的请求执行方法 exchange 以及 execute。RestTemplate 继承自 InterceptingHttpAccessor 并且实现了 RestOperations 接口,其中 RestOperations 接口定义了基本的 RESTful 操作,这些操作在 RestTemplate 中都得到了实现。

小节面试分析

  1. 为什么要将服务注册到nacos?(为了更好的查找这些服务)

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

  3. 对于Nacos服务来讲它是如何判定服务实例的状态?(检测心跳包,15,30)

  4. 服务消费方是如何调用服务提供方的服务的?(RestTemplate) 

  5. Nacos中的负责均衡底层是如何实现的?(通过Ribbon实现,Ribbon中定义了一些负载均衡算法,然后基于这些算法从服务实例中获取一个实例为消费方法提供服务)
     
  6. Ribbon 是什么?(Netflix公司提供的负载均衡客户端,一般应用于服务的消费方法)。
  7. Ribbon 可以解决什么问题? (基于负载均衡策略进行服务调用, 所有策略都会实现IRule接口)。
  8. Ribbon 内置的负载策略都有哪些?(8种,可以通过查看IRule接口的实现类进行分析)。
  9. @LoadBalanced的作用是什么?(描述RestTemplate对象,用于告诉Spring框架,在使用RestTempalte进行服务调用时,这个调用过程会被一个拦截器进行拦截,然后在拦截器内部,启动负载均衡策略。)。
  10. 我们可以自己定义负载均衡策略吗?(可以,基于IRule接口进行策略定义,也可以参考NacosRule进行实现)。
  11. 为什么使用feign?(基于Feign可以更加友好的实现服务调用,简化服务消费方对服务提供方方法的调用)。
  12. @FeignClient注解的作用是什么?(告诉Feign Starter,在项目启动时,为此注解描述的接口创建实现类-代理类)
  13. Feign方式的调用,底层负载均衡是如何实现的?(Ribbon)
  14. @EnableFeignCleints 注解的作用是什么?(描述配置类,例如启动类
  15. 什么是配置中心?(存储项目配置信息的一个服务)
  16. 为什么要使用配置中心?(集中管理配置信息,动态发布配置信息)
  17. 市场上有哪些主流的配置中心?(Apollo,nacos,……)

LoadBalancerClient应用

LoadBalancerClient对象可以从nacos中基于服务名获取服务实例,然后在工程中基于特点算法实现负载均衡方式的调用,

@LoadBalanced注解是属于Spring,而不是Ribbon的,Spring在初始化容器的时候,如果检测到Bean被@LoadBalanced注解,Spring会为其设置LoadBalancerInterceptor的拦截器。配合RestTemplate 使用,远程服务调用负载均衡

负载均衡的策略

 Feign是什么

Feign 是一种声明式Web服务客户端,底层封装了对Rest技术的应用,通过Feign可以简化服务消费方对远程服务提供方法的调用实现

@FeignClient描述的接口底层会为其创建实现类 name :服务提供方名字  contextId 远程调用的名字

Feign 调用过程分析(了解)


Feign应用过程分析(底层逻辑先了解):
1)通过 @EnableFeignCleints 注解告诉springcloud,启动 Feign Starter 组件。
2) Feign Starter 会在项目启动过程中注册全局配置,扫描包下所由@FeignClient注解描述的接口,然后由系统底层创建接口实现类(JDK代理类),并构建类的对象,然后交给spring管理(注册 IOC 容器)。
3) Feign接口被调用时,底层代理对象会将接口中的请求信息通过编码器创建 Request对象,基于此对象进行远程过程调用。
4) Feign客户端请求对象会经Ribbon进行负载均衡,挑选出一个健康的 Server 实例(instance)。
5) Feign客户端会携带 Request 调用远端服务并返回一个响应。
6) Feign客户端对象对Response信息进行解析然后返回客户端。

配置的动态更新

,@RefreshScope的作用是在配置中心的相关配置发生变化以后,能够及时看到类中属性值的更新(底层是通过重新创建Controller对象的方式,对属性进行了重新初始化)。

  1. 配置中心一般都会配置什么内容?(可能会经常变化的配置信息,例如连接池,日志、线程池、限流熔断规则)
  2. 什么信息一般不会写到配置中心?(服务端口,服务名,服务的注册地址,配置中心)
  3. 项目中为什么要定义bootstrap.yml文件?(此文件被读取的优先级比较高,可以在服务启动时读取配置中心的数据)
  4. Nacos配置中心宕机了,我们的服务还可以读取到配置信息吗?(可以从内存,客户端获取了配置中心的配置信息以后,会将配置信息在本地内存中存储一份.)
  5. 微服务应用中我们的客户端如何获取配置中心的信息?(我们的服务一般首先会从内存读取配置信息,同时我们的微服务还可以定时向nacos配置中心发请求拉取(pull)更新的配置信息)
  6. 微服务应用中客户端如何感知配置中心数据变化?(1.4.x版本的nacos客户端会基于长轮询机制从nacos获取配置信息,所谓的长轮询就是没有配置更新时,会在nacos服务端的队列进行等待.)
  7. 服务启动后没有从配置中心获取我们的配置数据是什么原因?(依赖,配置文件名字bootstrap.yml,配置中心的dataId名字是否正确,分组是否正确,配置的名字是否正确,缩进关系是否正确,假如是动态发布,类上是否有@RefreshScope注解)
  8. 你项目中使用的日志规范是什么?(SLF4J)
  9. 你了解项目中的日志级别吗?(debug,info,error,…,可以基于日志级别控制日志的输出)

 Nacos配置管理模型

 分组

服务配置的切换

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值