目录
一、微服务
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限流有什么差别?
jenkins是工具,对微服务项目自动化编译
docker:打包形成镜像
kubernetes/Rancher:实现自动化的部署
这三个共同是用于持续集成的
演变历史:
单体架构:将业务的所有功能集中在一个项目中开发,做成一个包部署,特点是简单方便,高度耦合的,扩展性差,适合小型项目
分布式架构:根据业务功能对系统进行拆分,每个业务模块作为独立项目开发,称为一个服务,特点是松耦合,拓展性好,但架构复杂,难度大,适合大型互联网项目
后期优化:为了高可用还要做集群
从用户-->会员,会出现跨服务的问题,所以微服务提供了面向服务,即对外暴露一部分业务接口专门去调用
微服务实现的目的是:实现高内聚,低耦合
Routing 路由
Load balancing 负载均衡
①在启动类写,利用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);
一个服务既可以是服务者,又可以是消费者
负载均衡可以用nginx
在Eureka的启动类上加:
@SpringBootApplication 声明本项目是一个Eureka服务 @EnableEurekaServer public class EurekaApplication3 { public static void main(String[] args) { SpringApplication.run(EurekaApplication3.class,args); } }
加注解@LoadBalanced
负载均衡主要作用是将大量作业合理地分摊到多个操作单元上进行执行,用于解决互联网架构中的高并发和高可用的问题。
上面的方案是是全局配置的负载均衡,是在启动类进行的配置。是随机分配的给的访问
下面的是针对某个微服务而言的(在yml中)
根据网上的步骤来
服务-->集群-->实例
代码:在application.yml中加
在原来的基础上多加了一级,加了一层集群
在nacos控制台进行修改(浏览器上面)
1.在浏览器的nacos中点命名空间,2.新建命名空间,填空间名称 3.不填会默认用UUID生成一个id
namespace的id要跟浏览器的id对应,只绑了一个到dev的环境,其它的就自动就关闭了
order是消费者
方式一
方式二
在controller要自动注入这个类,然后把要改的东西再get了再传过去
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组件去做
feign的介绍:
步骤:
1.引入依赖(在order-Service中(相当于货物,处理逻辑的))
2.在启动类加注解@EnableFeignClients(也在order中的启动类加)
3.新建一个文件夹,写那个接口
在service中修改代码:
修改日志级别有两种方式:(在order中的yml)
1.配置文件方式(可以全局配置(default)或局部配置(具体的服务名称))
2.基于java代码的方式
都是在order中
方式二具体实践:
对所有的路由都生效(对当前路由配置就只能对当前路由生效)
新建一个类AuthorizeFilter
上面还要加@Component和@Order(-1)
@Order是执行顺序,越小优先级越高
代码:
执行顺序是:213
用于部署项目
根据网上的流程来
mysql:5.7 和 mysql: 5.8是两个镜像
没写tag(版本)时,默认是latest,代表最新版本的镜像
除了下面这么命令,如果还要命令不知道的,可以在命令行输入docker --help来看所有的命令
docker volume create xxx
查看:docker volume ls
docker volume inspect xxx
...
水平拆分和垂直拆分
写到最后:这些都是笔者对着黑马程序员看完以后以自己的理解进行的总结,您可以对应不同章节进行参考了图片理解。