我是靠谱客的博主 大力心锁,最近开发中收集的这篇文章主要介绍尚硅谷Spring Cloud课程(第二版),每节需要特别点出的问题和遇到的坑;(更新ing……),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

课程地址: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……)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(41)

评论列表共有 0 条评论

立即
投稿
返回
顶部