黑马SpringCloud知识点和面试题

目录

一、微服务

1.1、微服务技术栈

1.2、微服务的介绍:

1.3、微服务技术对比

1.4、认识微服务-springcloud

1.4.1、springcloud和springboot的兼容性(左边springcloud右边springboot版本)

1.5、服务拆分,服务远程调用(即从order能查到user,用到的是restTemplate,里面有很多API)

1.6、Eureka注册中心

1.7、搭建Eureka

1.8、Eureka服务注册

1.9、Eureka服务发现

1.10、Ribbon负载均衡原理(随机分配)

1.11、Ribbon策略-饥饿加载

1.12、nacos安装

1.13、nacos快速入门

​编辑

1.14、nacos服务多级存储模型

1.15、nacosRule负载均衡(集群优先)

1.16、nacos服务实例的权重设置

1.17、nacos环境隔离

1.18、nacos和eureka的对比

二、nacos配置管理(nacos是替代eureka的,是alibaba研发的注册中心)

2.1、nacos配置管理-nacos实现配置管理

2.2、nacos配置管理-微服务配置拉取

2.3、nacos配置管理-配置热更新

2.4、nacos配置管理-多环境配置共享 

​编辑

2.5、nacos集群搭建

2.6、基于Feign远程调用(替换掉restTemplate)

​编辑

2.7、feign自定义配置

2.8、feign性能调优

2.9、feign最佳实践分析

​编辑

2.10、统一网关Gateway

​编辑

2.11、Gateway快速入门

2.12、Gateway路由断言工厂(在路由里面有路由工厂去判断)

2.13、Gateway网关-路由的过滤器配置

2.14、Gateway网关-全局过滤器

2.15、Gateway网关-过滤器链执行顺序

2.16、Gateway网关-网关的cors跨域配置

三、Docker

3.1、什么是docker

3.2、docker和虚拟机的差别

3.3、Docker架构

3.4、Docker的安装

3.5、Docker-镜像命令

3.6、Docker-容器命令

3.7、Docker-数据卷命令(volume)

3.8、数据卷挂载

3.9、自定义镜像-镜像结构

3.10、自定义镜像-Dockerfile

3.11、DockerCompose

3.12、部署微服务集群

3.13、Docker镜像仓库

四、MQ

4.1、同步

4.2、异步

4.3、MQ常用技术

4.4、RabbitMQ

五、面试题

5.0、分布式和微服务的区别(*)

5.1、springcloud的常见组件有哪些

5.2、Nacos注册表结构

5.3、nacos如何避免并发读写冲突问题

5.4、nacos和eureka的区别

5.5、sentinel和hystrix的区别

5.6、sentinel限流和Gateway限流有什么差别?


一、微服务

1.1、微服务技术栈

黑马SpringCloud知识点和面试题_第1张图片

 

jenkins是工具,对微服务项目自动化编译

docker:打包形成镜像

kubernetes/Rancher:实现自动化的部署

这三个共同是用于持续集成的

黑马SpringCloud知识点和面试题_第2张图片

 

1.2、微服务的介绍:

黑马SpringCloud知识点和面试题_第3张图片

 

演变历史:

单体架构:将业务的所有功能集中在一个项目中开发,做成一个包部署,特点是简单方便,高度耦合的,扩展性差,适合小型项目

分布式架构:根据业务功能对系统进行拆分,每个业务模块作为独立项目开发,称为一个服务,特点是松耦合,拓展性好,但架构复杂,难度大,适合大型互联网项目

后期优化:为了高可用还要做集群

从用户-->会员,会出现跨服务的问题,所以微服务提供了面向服务,即对外暴露一部分业务接口专门去调用

微服务实现的目的是:实现高内聚,低耦合

1.3、微服务技术对比

黑马SpringCloud知识点和面试题_第4张图片

 

Routing 路由

Load balancing 负载均衡

1.4、认识微服务-springcloud

黑马SpringCloud知识点和面试题_第5张图片

 

1.4.1、springcloud和springboot的兼容性(左边springcloud右边springboot版本)

黑马SpringCloud知识点和面试题_第6张图片

 

1.5、服务拆分,服务远程调用(即从order能查到user,用到的是restTemplate,里面有很多API)

①在启动类写,利用RestTemplate发http请求

/**
     * 创建RestTemplate并注入spring容器
     * @return
     */
    @Bean
    public RestTemplate restTemplate(){
        return new RestTemplate();
    }

②在controller层修改业务

@Autowired
private RestTemplate restTemplate;
​
//2.利用restTemplate发送http请求,实现远程调用
//2.1.url路径
String url = "http://localhost:8081/user/"+order.getUserId();
//2.2.发送http请求,实现远程调用
User user = restTemplate.getForObject(url,user.class);
//3.封装user到order
order.setUser(user);

1.6、Eureka注册中心

一个服务既可以是服务者,又可以是消费者

黑马SpringCloud知识点和面试题_第7张图片

 黑马SpringCloud知识点和面试题_第8张图片

 

负载均衡可以用nginx

黑马SpringCloud知识点和面试题_第9张图片

 

1.7、搭建Eureka

黑马SpringCloud知识点和面试题_第10张图片

 

在Eureka的启动类上加:

@SpringBootApplication
 声明本项目是一个Eureka服务
@EnableEurekaServer
public class EurekaApplication3 {
    public static void main(String[] args) {
        SpringApplication.run(EurekaApplication3.class,args);
    }
}

1.8、Eureka服务注册

黑马SpringCloud知识点和面试题_第11张图片

 

1.9、Eureka服务发现

黑马SpringCloud知识点和面试题_第12张图片

 

加注解@LoadBalanced

黑马SpringCloud知识点和面试题_第13张图片

 

1.10、Ribbon负载均衡原理(随机分配)

黑马SpringCloud知识点和面试题_第14张图片

 

负载均衡主要作用是将大量作业合理地分摊到多个操作单元上进行执行,用于解决互联网架构中的高并发和高可用的问题。

黑马SpringCloud知识点和面试题_第15张图片

 

上面的方案是是全局配置的负载均衡,是在启动类进行的配置。是随机分配的给的访问

下面的是针对某个微服务而言的(在yml中)

1.11、Ribbon策略-饥饿加载

黑马SpringCloud知识点和面试题_第16张图片

 

黑马SpringCloud知识点和面试题_第17张图片

 黑马SpringCloud知识点和面试题_第18张图片

 

1.12、nacos安装

根据网上的步骤来

1.13、nacos快速入门

黑马SpringCloud知识点和面试题_第19张图片

 

黑马SpringCloud知识点和面试题_第20张图片

 

黑马SpringCloud知识点和面试题_第21张图片

 

1.14、nacos服务多级存储模型

服务-->集群-->实例

黑马SpringCloud知识点和面试题_第22张图片

黑马SpringCloud知识点和面试题_第23张图片 

代码:在application.yml中加

黑马SpringCloud知识点和面试题_第24张图片

 

在原来的基础上多加了一级,加了一层集群

黑马SpringCloud知识点和面试题_第25张图片

 

1.15、nacosRule负载均衡(集群优先)

黑马SpringCloud知识点和面试题_第26张图片

 

1.16、nacos服务实例的权重设置

黑马SpringCloud知识点和面试题_第27张图片

 

在nacos控制台进行修改(浏览器上面)

黑马SpringCloud知识点和面试题_第28张图片

 黑马SpringCloud知识点和面试题_第29张图片

 

1.17、nacos环境隔离

黑马SpringCloud知识点和面试题_第30张图片

 

1.在浏览器的nacos中点命名空间,2.新建命名空间,填空间名称 3.不填会默认用UUID生成一个id

黑马SpringCloud知识点和面试题_第31张图片

 

namespace的id要跟浏览器的id对应,只绑了一个到dev的环境,其它的就自动就关闭了

黑马SpringCloud知识点和面试题_第32张图片

 

1.18、nacos和eureka的对比

黑马SpringCloud知识点和面试题_第33张图片

 黑马SpringCloud知识点和面试题_第34张图片

 

二、nacos配置管理(nacos是替代eureka的,是alibaba研发的注册中心)

order是消费者

2.1、nacos配置管理-nacos实现配置管理

黑马SpringCloud知识点和面试题_第35张图片

 

黑马SpringCloud知识点和面试题_第36张图片

 

黑马SpringCloud知识点和面试题_第37张图片

 黑马SpringCloud知识点和面试题_第38张图片

 

2.2、nacos配置管理-微服务配置拉取

 

黑马SpringCloud知识点和面试题_第39张图片

 

黑马SpringCloud知识点和面试题_第40张图片

 黑马SpringCloud知识点和面试题_第41张图片

 

2.3、nacos配置管理-配置热更新

方式一

黑马SpringCloud知识点和面试题_第42张图片

 

方式二

黑马SpringCloud知识点和面试题_第43张图片

 

在controller要自动注入这个类,然后把要改的东西再get了再传过去

黑马SpringCloud知识点和面试题_第44张图片

 

2.4、nacos配置管理-多环境配置共享 

黑马SpringCloud知识点和面试题_第45张图片

 

黑马SpringCloud知识点和面试题_第46张图片

2.5、nacos集群搭建

黑马SpringCloud知识点和面试题_第47张图片

2.6、基于Feign远程调用(替换掉restTemplate)

Feign是一种负载均衡的HTTP客户端, 使用Feign调用API就像调用本地方法一样,从避免了调用目标微服务时,需要不断的解析/封装json 数据的繁琐。Feign集成了Ribbon。Ribbon+eureka是面向微服务编程,而Feign是面向接口编程。

    Fegin是一个声明似的web服务客户端,它使得编写web服务客户端变得更加容易。使用Fegin创建一个接口并对它进行注解。它具有可插拔的注解支持包括Feign注解与JAX-RS注解,Feign还支持可插拔的编码器与解码器,Spring Cloud 增加了对 Spring MVC的注解,Spring Web 默认使用了HttpMessageConverters, Spring Cloud 集成 Ribbon 和 Eureka 提供的负载均衡的HTTP客户端 Feign。

服务器内部有相互调用关系时,我们可以用feign组件去做

黑马SpringCloud知识点和面试题_第48张图片

 

feign的介绍:

黑马SpringCloud知识点和面试题_第49张图片

 

步骤:

1.引入依赖(在order-Service中(相当于货物,处理逻辑的))

2.在启动类加注解@EnableFeignClients(也在order中的启动类加)

3.新建一个文件夹,写那个接口

黑马SpringCloud知识点和面试题_第50张图片

 

黑马SpringCloud知识点和面试题_第51张图片

 

在service中修改代码:

黑马SpringCloud知识点和面试题_第52张图片

 

黑马SpringCloud知识点和面试题_第53张图片

 

2.7、feign自定义配置

黑马SpringCloud知识点和面试题_第54张图片

 

修改日志级别有两种方式:(在order中的yml)

1.配置文件方式(可以全局配置(default)或局部配置(具体的服务名称))

2.基于java代码的方式

黑马SpringCloud知识点和面试题_第55张图片

 

黑马SpringCloud知识点和面试题_第56张图片

 黑马SpringCloud知识点和面试题_第57张图片

 

2.8、feign性能调优

黑马SpringCloud知识点和面试题_第58张图片

 

都是在order中

黑马SpringCloud知识点和面试题_第59张图片

黑马SpringCloud知识点和面试题_第60张图片 

 

2.9、feign最佳实践分析

黑马SpringCloud知识点和面试题_第61张图片

 

黑马SpringCloud知识点和面试题_第62张图片

 

方式二具体实践:

黑马SpringCloud知识点和面试题_第63张图片

 

黑马SpringCloud知识点和面试题_第64张图片

2.10、统一网关Gateway

 

黑马SpringCloud知识点和面试题_第65张图片

黑马SpringCloud知识点和面试题_第66张图片

 

2.11、Gateway快速入门

黑马SpringCloud知识点和面试题_第67张图片

黑马SpringCloud知识点和面试题_第68张图片 

黑马SpringCloud知识点和面试题_第69张图片 

黑马SpringCloud知识点和面试题_第70张图片 

 

2.12、Gateway路由断言工厂(在路由里面有路由工厂去判断)

黑马SpringCloud知识点和面试题_第71张图片

黑马SpringCloud知识点和面试题_第72张图片 

 

2.13、Gateway网关-路由的过滤器配置

对所有的路由都生效(对当前路由配置就只能对当前路由生效)

黑马SpringCloud知识点和面试题_第73张图片

黑马SpringCloud知识点和面试题_第74张图片 

 

2.14、Gateway网关-全局过滤器

黑马SpringCloud知识点和面试题_第75张图片

 

新建一个类AuthorizeFilter

黑马SpringCloud知识点和面试题_第76张图片

 

上面还要加@Component和@Order(-1)

@Order是执行顺序,越小优先级越高

黑马SpringCloud知识点和面试题_第77张图片

 

代码:

黑马SpringCloud知识点和面试题_第78张图片

黑马SpringCloud知识点和面试题_第79张图片 

 

2.15、Gateway网关-过滤器链执行顺序

黑马SpringCloud知识点和面试题_第80张图片

黑马SpringCloud知识点和面试题_第81张图片 

 

执行顺序是:213

2.16、Gateway网关-网关的cors跨域配置

黑马SpringCloud知识点和面试题_第82张图片

 黑马SpringCloud知识点和面试题_第83张图片

 

三、Docker

3.1、什么是docker

黑马SpringCloud知识点和面试题_第84张图片

 

用于部署项目

3.2、docker和虚拟机的差别

黑马SpringCloud知识点和面试题_第85张图片

 

3.3、Docker架构

黑马SpringCloud知识点和面试题_第86张图片

 

黑马SpringCloud知识点和面试题_第87张图片

 

黑马SpringCloud知识点和面试题_第88张图片

黑马SpringCloud知识点和面试题_第89张图片 

 

3.4、Docker的安装

根据网上的流程来

3.5、Docker-镜像命令

mysql:5.7 和 mysql: 5.8是两个镜像

没写tag(版本)时,默认是latest,代表最新版本的镜像

黑马SpringCloud知识点和面试题_第90张图片

 

除了下面这么命令,如果还要命令不知道的,可以在命令行输入docker --help来看所有的命令

黑马SpringCloud知识点和面试题_第91张图片

黑马SpringCloud知识点和面试题_第92张图片 

 

3.6、Docker-容器命令

黑马SpringCloud知识点和面试题_第93张图片

 

黑马SpringCloud知识点和面试题_第94张图片

黑马SpringCloud知识点和面试题_第95张图片 

 

3.7、Docker-数据卷命令(volume)

docker volume create xxx

查看:docker volume ls

docker volume inspect xxx

...

黑马SpringCloud知识点和面试题_第96张图片

 

3.8、数据卷挂载

黑马SpringCloud知识点和面试题_第97张图片

 黑马SpringCloud知识点和面试题_第98张图片

 

3.9、自定义镜像-镜像结构

黑马SpringCloud知识点和面试题_第99张图片

 

3.10、自定义镜像-Dockerfile

黑马SpringCloud知识点和面试题_第100张图片

黑马SpringCloud知识点和面试题_第101张图片 

 

3.11、DockerCompose

黑马SpringCloud知识点和面试题_第102张图片

 

3.12、部署微服务集群

黑马SpringCloud知识点和面试题_第103张图片

 

3.13、Docker镜像仓库

黑马SpringCloud知识点和面试题_第104张图片

 

四、MQ

4.1、同步

黑马SpringCloud知识点和面试题_第105张图片

 

4.2、异步

黑马SpringCloud知识点和面试题_第106张图片

 

4.3、MQ常用技术

黑马SpringCloud知识点和面试题_第107张图片

 

4.4、RabbitMQ

黑马SpringCloud知识点和面试题_第108张图片

 

五、面试题

5.0、分布式和微服务的区别(*)

黑马SpringCloud知识点和面试题_第109张图片

 

水平拆分和垂直拆分

黑马SpringCloud知识点和面试题_第110张图片

 黑马SpringCloud知识点和面试题_第111张图片

 

5.1、springcloud的常见组件有哪些

黑马SpringCloud知识点和面试题_第112张图片

 

5.2、Nacos注册表结构

黑马SpringCloud知识点和面试题_第113张图片

黑马SpringCloud知识点和面试题_第114张图片 

 

5.3、nacos如何避免并发读写冲突问题

黑马SpringCloud知识点和面试题_第115张图片

 

5.4、nacos和eureka的区别

黑马SpringCloud知识点和面试题_第116张图片

 

5.5、sentinel和hystrix的区别

黑马SpringCloud知识点和面试题_第117张图片

 

黑马SpringCloud知识点和面试题_第118张图片

黑马SpringCloud知识点和面试题_第119张图片 

 

5.6、sentinel限流和Gateway限流有什么差别?

黑马SpringCloud知识点和面试题_第120张图片

黑马SpringCloud知识点和面试题_第121张图片 

黑马SpringCloud知识点和面试题_第122张图片 

黑马SpringCloud知识点和面试题_第123张图片

 写到最后:这些都是笔者对着黑马程序员看完以后以自己的理解进行的总结,您可以对应不同章节进行参考了图片理解。

你可能感兴趣的:(java,spring,cloud,java,spring,boot)