概述
课程地址:https://www.bilibili.com/video/BV18E411x7eT;
笔记地址:https://blog.csdn.net/u011863024/article/details/114298270;
06_父工程pom文件
(1)这个父工程的src是可以删掉的,因为父工程不需要这些;父工程的作用就是一个简单的【pom工程】;其可以认为是【后面将要介绍的Spring Cloud项目各个细分服务的】父工程;即,这个父亲工程的主要作用就是,先规划和指定一下常用依赖的版本,从而让后面很多自动成的依赖版本统一,便于工程管理;
同时,因为我们隐藏了.idea,所以,此时这个父工程看起来就只有一个pom文件;
(2)使用老师的pom内容后,会有好多依赖报红找不到,说是找不到那个依赖;
解决办法:先注释掉<dependencyManagement>标签,依赖就可以从仓库下载了;
(3)MySQL版本,最好和自己本机安装的MySQL版本保持一致;
08_支付模块构建(上)
(1)在父工程上右键,建一个module;
(2)因为,自己的MySQL是8版本,依赖也是8版本,所以yml配置文件中,MySQL的驱动类,需要写作【com.mysql.cj.jdbc.Driver】;
09_支付模块构建(中)
(1)构建实体类的时候,使用到了lombok,可以参考【Lombok 看这篇就够了 - 知乎】;
(2)打印日志的时候,使用到了lombok的@Slf4j注解,可以参考【@Slf4j是啥,它是干啥的_张张张阿君啊的博客-CSDN博客_@sl4j】;
12_消费者订单模块(上)
(1)在原始的web阶段,两个服务要想访问,需要httpClient;然后,在我们这个cloud项目中,我们可以使用restTemplate(这个封装了httpClient);RestTemplate提供了多种便捷访问远程Http服务的方法,是一种简单便捷的访问restful服务模板类,是Spring提供的用于访问Rest服务的客户端模板工具集;
如果对restTemplate不了解,可以去查询相关资料;
13_消费者订单模块(下)
(1)貌似RestTemplate的postForObject()方法在传递参数的时候,会把参数转成JSON格式;所以,在支付模块中的方法,必须要使用@RequestBody注解;
(2)有关@RequestBody注解,有了一些新的认识,可以参考【@RequestBody注解的原理以及使用技巧】;
14_工程重构
(1)新建一个新的工程(子工程):cloud-api-commons;
(2)用到了hutool工具包;其可以Hutool只是一个JAVA工具包,有助于简化代码,避免重复造轮子,每个程序员都有自己的工具包,它代表了你工作的积累,Hutool只是收集了大家积累的工具,Hutool几乎涵盖了工作中大部分业务的工具。可以参考【Hutool详解】;
17_支付微服务8001入驻进EurekaServer
(1)经过实测,既然cloud-provider-payment8001配置上了Eureka client,那么我们就必须要先启动cloud-eureka-server7001工程(这个作为Eureka Server的module),然后才能启动cloud-provider-payment8001(这个角色是Eureka Client的module),否则会报错;
20_Eureka集群环境构建
(1)如果是三个Eureka Server集群的话,yml文件中,就这样写:(不一定对哦)
24_服务发现Discovery
(1)使用DiscoveryClient时,应该导入【org.springframework.cloud.client.discovery.DiscoveryClient; 】包下的那个;
28_支付服务注册进zookeeper
(1)自己在rabbitmq那台虚拟机上,安装了3.6.3版本的zookeeper;(然后,我们在项目中引入zookeeper依赖时,其版本是3.5.3;自己在运行时,是没有依赖冲突,所以没有解决;;;;如果,发现了版本冲突,就需要自己去排除jar包,然后自己再引入新版本的jar包 )
zookeeper启动,启动客户端,关闭客户端:
(2)著名的CAP理论指出,一个分布式系统不可能同时满足C(一致性)、A(可用性)和P(分区容错性)。由于P(分区容错性)在是分布式系统中必须要保证的,因此我们只能在A和C之间进行权衡。在此Zookeeper保证的是CP, 而Eureka则是AP。
(3) 在自己启动8004服务,想把其注册进zookeeper服务的时候,报了【Caused by: java.lang.NoClassDefFoundError: com/netflix/hystrix/contrib/javanica/aop/aspectj/HystrixCommandAspect】错误;解决办法参考【解决:ClassNotFoundException: com.netflix.hystrix.contrib.javanica.aop.aspectj.HystrixCommandAspect_微风--轻许--的博客-CSDN博客】
在pom中引入依赖:
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-hystrix</artifactId> </dependency>
(4)每一个微服务,会作为一个节点,放在了zookeeper中;
30_订单服务注册进zookeeper
(1)因为,zookeeper不是重点,目前在业界使用的也并不是很多;;;所以,这儿我们就只演示了,部署一个zookeeper,并没有去演示zookeeper集群;;;如有兴趣和需要,以后再了解就是了;
36_Ribbon入门介绍
(1)ribbon已经停止维护了,以后尽量使用LoadBalancer或者OpenFeign;;但是,现在还是有很多项目在使用,也不是轻易就能彻底被替换的;
(2)Nginx“请求转发”来负载均衡,,,,Ribbon调用时负载均衡。。。。。比如,阿里的服务器可以在上海、北京、程度,nginx负载均衡决定你的请求分在哪个地区,,ribbon负载均衡决定你在具体地区的某个微服务上;(这二者的区别,以后需要加深理解)
39_Ribbon负载规则替换
(1)官方文档明确给出了警告:这个自定义配置类不能放在@ComponentScan所扫描的当前包下以及子包下,否则我们自定义的这个配置类就会被所有的Ribbon客户端所共享,达不到特殊化定制的目的了。(也就是说不要将Ribbon配置类与主启动类同包)
其中,【会被所有的Ribbon客户端所共享】意思是:还不明白~~~
42_Ribbon之手写轮询算法
(1)这儿设计了并发等内容,所以暂时跳过了;
43_OpenFeign是什么
(1)Feign已经不再维护了;Spring Cloud项目组在Feign的基础上,推出了OpenFeign;
46_OpenFeign日志增强
(1)要想是我们的配置生效,需要使用OpenFeign的service接口的@FeignClient注解中,配置configuration属性,来指向配置类;;;;否则,这个配置可能不生效;
增加了configuration属性后,实测是可以的;
51_JMeter高并发压测后卡顿
(1)JMeter是个接口性能测试工具;可以进行压力测试;我是通过Jmeter自动化工具从入门到进阶6小时搞定,适合手工测试同学学习_哔哩哔哩_bilibili进行了简单了解;自己并没有深入学习;
(2)有关JMeter的下载和安装,参考了【Windows 10安装Jmeter】;
(3)Tomcat默认线程数是200;
55_Hystrix之服务降级订单侧fallback;(有个未解决的问题)
(1)一个问题:这儿会出现这个情况:
因为,这人两个服务间,其实是使用OpenFeign调用的,而OpenFeign是有超时控制的;关于这点,可以参考【45_OpenFeign超时控制】;
但是,自己在80这个服务的yml文件中,配置了之后,还是不起作用……
经过和【45_OpenFeign超时控制】中项目的依赖对比,可以发现,pom中引的依赖没有问题啊:
但是,为什么我们这个项目的OpenFeign依赖下,没有ribbon依赖???,,,搞不懂……暂时搁置吧……
两个服务间,调用时,默认的容忍时间是:
最后
以上就是大力心锁为你收集整理的尚硅谷Spring Cloud课程(第二版),每节需要特别点出的问题和遇到的坑;(更新ing……)的全部内容,希望文章能够帮你解决尚硅谷Spring Cloud课程(第二版),每节需要特别点出的问题和遇到的坑;(更新ing……)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复