目录
项目结构分析
pom.xml文件删除线
MySQL的版本问题
Nacos服务启动问题
idea中启动nacos
Maven 依赖问题
项目克隆问题
JDK 配置问题
Maven配置编译问题
服务注册异常(NacosException)
服务配置读取问题
配置文件格式问题
无法访问此网站
pom.xml有删除横线
访问404异常
访问500异常
端口占用问题
服务调用案例分析
服务ID问题分析
Maven Helper插件应用
客户端调用异常(ClientException)
@PathVariable 注解在@FeignClient中应用
依赖注入失败(Bean Not Found)
请求映射路径重复定义
@FeignClient注解名字问题
Feign远程调用超时
图解服务调用方案
配置文件加载顺序
拉取(Pull)配置信息
Nacos配置中心模型
Tomcat 请求处理分析
Java线程池构成分析
线程池任务执行过程
线程拒绝执行异常
JDK 版本问题
Sentinel 控制台显示
微服务中的Sentinel日志
回顾Spring MVC 请求处理
Sentinel 请求拦截分析
Day06
Idea中启动Nacos
跨域访问问题
Nacos 服务注册问题
文件上传404问题
请求资源405异常
请求资源500异常
BeanCreationException 异常
服务名无效或没有定义
Day07
网关配置文件问题
服务访问被拒绝(Connection refused)
网关负载均衡调用流程分析
503访问异常
Postman请求携带请求头
作业(homework)
Day08
Debug调试
http Client 应用
503 异常分析
修改文件上传工程结构
Day09
网关执行流程分析
存在多个跨域设计
自定义执行链设计
Spring MVC 拦截器
Spring框架生态设计
Day10
JVM 参数说明
AOP 执行流程分析
Day11
文件上传架构升级
SpringSecurity 执行流程
JS中的断点调试
Day12
单点登陆方案
401 认证异常
检查令牌
权限校验过程分析
postman 上传文件
403 访问被拒绝
资源请求图标问题
Day13
Postman测试刷新令牌
生成序列化ID
Idea&@Autowired
项目结构分析
pom.xml文件删除线
MySQL的版本问题
当我们在执行一些SQL脚本时(例如 nacos-mysql.sql文件),假如出现如下错误,请升级你的mysql(建议mysql5.7以上或MariaDB 10.5.11)
Nacos服务启动问题
问题1:没有配置JAVA_HOME环境变量,或者JDK有问题
问题2:nacos链接mysql时,链接配置问题
问题3:启动命令用错位置
idea中启动nacos
第一步:添加或编辑配置,例如:
第二步:新建 shell Script脚本,例如:
第三步:输入nacos信息,例如
第四步:启动nacos,例如:
Maven 依赖问题
假如出现依赖下载不下来,或者pom.xml文件出错,一定要检查:
第一:依赖添加的是否正确(groupId,artifactId,version)
第二:检查元素嵌套关系(dependencies,dependency)
第三:检查父工程依赖是否有问题,单词是否正确
第四:检查maven环境配置(最好一个项目一个本地库,假如多个项目共用一个,要确保多各项目使用的依赖版本是一致的。)
项目克隆问题
克隆下的项目导入以后是如下问题:
这个问题,可以右键项目的p
om.xml文件,然后执行如下操作,将项目添加到maven区,例如:
JDK 配置问题
打开项目代码,是如
如上问题,可以打开项目结构,然后配置JDK,例如
Maven配置编译问题
我们使用的maven一般默认编译版本会采用JDK1.5,假如你希望为JDK8,可以在当前工程或父工程中添加如下,代码:
<build>
<plugins>
<!--修改maven编译版本-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>8</source>
<target>8</target>
</configuration>
</plugin>
</plugins>
</build>
我们也可以在每个工程的properties元素中设置指定当前工程的编译版本,例如:
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
服务注册异常(NacosException)
启动服务时,出现如下问题,例如:
服务配置读取问题
配置文件格式问题
无法访问此网站
pom.xml有删除横线
访问404异常
访问500异常
例如,打开后台,假如出现了如下问题,就是你远程调用的服务url应该是写错了
例如:假如你的Consumer服务调用Provider服务,但是Provider服务没有启动就会出现如下问题:
端口占用问题
服务调用案例分析
服务ID问题分析
项目配置文件中的spring.application.name属性值为服务id,服务注册到nacos以后的服务名就是这个id,后续可以基于这个服务id找到具体的服务实例,然后进行调用.
Application Failed to Start
Maven Helper插件应用
客户端调用异常(ClientException)
@PathVariable 注解在@FeignClient中应用
依赖注入失败(Bean Not Found)
请求映射路径重复定义
@FeignClient注解名字问题
Feign远程调用超时
图解服务调用方案
这张图描述了远程服务调用的几中方式:
第一种:服务比较少,例如就两个服务,一个服务消费,一个服务提供,就不需要注册中心,不需要负载均衡.
第二种:并发比较大,服务服务比较多,我们需要管理服务,就需要注册中心,我们还需要服务间的负载均衡.但代码编写的复杂多相对高一些,我们需要自己获取ip,获取端口,拼接字符串等.
第三种:我们要基于第二种进行代码简化,底层提供了一种拦截器,把基于服务名获取服务实例的过程在拦截器中做了封装,简化了代码的开发.但是加了拦截器多少会在性能少有一点损耗.
第四种方式主要是从代码结构上做一个挑战,我们前面三种基于RestTemplate进行服务调用,本身属于一种远程服务调用业务,能够将这种业务写到一个业务对象中,Feign方式就诞生了,它主要对代码结构的一种优化.
配置文件加载顺序
拉取(Pull)配置信息
Nacos配置中心模型
Tomcat 请求处理分析
Java线程池构成分析
线程池任务执行过程
线程拒绝执行异常
JDK 版本问题
Sentinel 控制台显示
微服务中的Sentinel日志
回顾Spring MVC 请求处理
Spring MVC 是spring框架中基于MVC设计思想实现的一个WEB模块,这个模块下的请求响应处理流程如下:
其中:
第一:客户端向web服务(例如tomcat)发起请求。
第二:tomcat会调用Filter对请求进行预处理(例如请求编码处理,请求认证分析等)。
第三:请求经过滤器Filter处理过后会交给DispatcherServlet对象(负责资源调度,前端控制器),此对象基于url找到对应的请求处理链对象(HandlerExecutionChain)。
第四:DispatcherServlet获取了请求执行链之后,会首先调用请求执行链中拦截器(HandlerInterceptor)对象(这个对象会在@RestController之前执行).
第五:拦截器对象获取请求以后可以对请求先进行分析,例如记录请求次数,请求时间,然后控制对后端Controller的调用。
第六:拦截器允许请求去传递到Controller时,Controller对象会对请求进行处理,然后将处理结果还会交给MVC 拦截器。
第七:拦截器拿到响应结果以后对其进行分析处理(例如记录Controller方法执行结束的时间)
第八:拦截器将响应结果传递到DispatcherServlet对象。
第九:DispatcherServlet拿到响应结果以后,会基于响应数据的类型,调用相关处理器(Processer)进行处理。
第十:响应结果处理器对象对响应数据处理以后,会将其结果交给DispatcherServlet对象。
第十一:DispatcherServlet对象拿到响应数据的处理结果时,会将结果基于ServletResponse对象响应到客户端。
Sentinel 请求拦截分析
Sentinel对请求进行限流的原理分析,如图所示:
当我们在服务中添加了Sentinel依赖以后,Sentinel会为我们的服务提供一个SpringMVC拦截器,这个拦截器会对请求进行拦截,然后基于请求url获取sentinel控制台中设置好的流控规则,然后采用一定的算法对请求url要访问的资源进行流量限制。
Day06
Idea中启动Nacos
第一步:打开服务编辑配置,例如:
第二步:添加Shell Script,例如:
第三步:添加nacos相关信息,例如:
跨域访问问题
Nacos 服务注册问题
文件上传404问题
请求资源405异常
请求资源500异常
BeanCreationException 异常
服务名无效或没有定义
Day07
网关配置文件问题
服务访问被拒绝(Connection refused)
网关负载均衡调用流程分析
503访问异常
Postman请求携带请求头
作业(homework)
第一:安装postman或者在idea中配置rest client应用
第二:尝试在文件上传服务上创建网关项目,客户端请求直接请求网关实现文件上传.
Day08
Debug调试
http Client 应用
503 异常分析
修改文件上传工程结构
Day09
网关执行流程分析
存在多个跨域设计
自定义执行链设计
Spring MVC 拦截器
Spring框架生态设计
Day10
JVM 参数说明
输出JVM类加载信息(假如想看类启动时,相关类的加载顺序,可以配置JVM参数: -XX:+TraceClassLoading)
调整JVM堆内存大小,并输出JVM 垃圾回收基本信息(假如设置JVM堆内存大小可以通过 -Xmx设置最大堆内存,-Xms设置最小堆内存,-XX:+PrintGC输出程序运行时的GC信息)
AOP 执行流程分析
Day11
文件上传架构升级
SpringSecurity 执行流程
JS中的断点调试
Day12
单点登陆方案
方案1:将登录状态存储到redis等数据库,例如:
方案2:将登录状态存储到jwt令牌中,例如:
401 认证异常
检查令牌
权限校验过程分析
postman 上传文件
403 访问被拒绝
资源请求图标问题
Day13
Postman测试刷新令牌
生成序列化ID
Idea&@Autowired
当使用@Autowired注解描述属性时,假如属性下有红色波浪线提示,可参考如下配置