- springboot2.4.12版本javax.validation不存在

https://blog.csdn.net/ZHENFENGSHISAN/article/details/121248382
2. springcloud网关gateway依赖了openfeign远程调用,高版本不依赖ribbon,需要显式添加依赖,否则出现报错503:
即无法实现负载均衡lb,只能配置访问域名+端口
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-loadbalancer</artifactId>
</dependency>
3. 报错:
java.lang.IllegalArgumentException: When allowCredentials is true, allowedOrigins cannot contain the special value "*" since that cannot be set on the "Access-Control-Allow-Origin" response header

因为:springboot版本升级到2.4.12,在2.4.12中配置项的名称已经更改,使用之前的配置报错
https://blog.csdn.net/weixin_43920778/article/details/115211784
- 高版本idea修改terminal为cmd,非ps
- 批量启动微服务
首先选择editConfiturations

然后新建compound

然后将各个微服务依次添加进去,并设置汇总启动项名称,以后启动这个启动项,会将包含的所有微服务一起启动

- 微服务众多情况下,需要限制各个微服务内存占用,修改配置中的虚拟机启动项,如添加-Xmx100m参数,限定每个微服务的内存占用

7.More arguments provided (1) than placeholders specified (0)
原因:使用了如下的写法:

而因为log.error有专门的针对异常的方法,因此占位符{}等于执行了空的占位符,所以告警,如果我们第二个参数不是一个异常,是一个普通的Object,那么就不会有这个提示,可以正确使用这个占位符

- 如果我们想要让nginx代理我们的gateway网关,然后让网关转发给各个服务,这个网关和各个服务如果部署到我们本地,而nginx是位于云服务商如腾讯云、阿里云上面的docker容器的话,我们需要配置内网穿透,让我们自己电脑上的服务可以被公网访问到
使用Ngrok进行内网穿透(Windows) - 简书 (jianshu.com)
推荐使用钉钉的内网穿透工具,ngrok速度过慢且每次启动会更换二级域名
整个流程:
我们自己电脑访问这个server_name的域名就会去访问docker容器里面的nginx,然后nginx再转发到我们自己电脑的网关服务,我们自己的网关服务再转发到我们自己的具体微服务
- 性能优化需要考虑你的应用是CPU密集型还是IO密集型
因此我们做性能优化,要考虑多方面,但是,不管考虑哪个方面,首先应该考虑自己的应用属于CPU密集型还是IO密集型
IO密集型:
- 网络IO:通过网络间传递数据
- 磁盘读写:也算磁盘IO
- 从数据库读取数据:也是相关磁盘的IO
- 从redis缓存数据:这也是网络包括redis的一些io
如果我们发现cpu每天都很闲,cpu经常占用30%,40%,顶多到60%,但是IO占用非常大,内存也挤爆了,包括磁盘也在疯狂读写数据,说明我们这个应用就是IO密集型,包括我们的网络流量也非常巨大,每秒要出入很多字节数据
CPU密集型:
(就是大量计算),比如我们查到一堆数据,我们要大量计算,排序,过滤,整合等等,那这就是cpu密集型任务,包括我们使用后台监控应用,可以观测到cpu一直占用70%,80%以上
总结:
如果是CPU密集型的很好解决:加上服务器,多节点来分担任务,升级CPU即可解决问题
如果是IO密集型:我们除了换固态硬盘,内存条,使用各种缓存技术,提高网卡的传输效率,我们单加cpu可能就没有什么作用了
- 如何通过gateway测试开启多个某一服务的节点的负载均衡
idea的services界面,右键要多开的服务,选择copy configurations,然后配置名称和启动端口号,这个启动端口号会覆盖yml文件中端口号的配置,达到同一个服务多个节点不占哟共公共端口

- Xshell开个多个会话,同时,将命令一次发到4个会话中,比如我们要同时往同一个服务器的docker中的redis测试setex命令
(1)首先通过点击查看-> 撰写 -> 撰写栏,来开启撰写栏功能

(2)然后比如我们撰写栏中输入docker exec -it redis redis-cli -a [redis密码]
,再左侧蓝色标签中选择全部会话,来让4个会话同时进入redis容器的redis客户端功能
(3)用(2)步骤这样的批量方式,使用命令set lock haha nx
测试4个会话尝试加锁,必定只能有1个成功
网关报错:reactor.netty.http.client.PrematureCloseException: Connection prematurely closed BEFORE response
![]()
- SpringCloud 中使用HikariPool 报错Possibly consider using a shorter maxLifetime value
SpringCloud 中使用HikariPool 报错Possibly consider using a shorter maxLifetime value_xgw的专栏-CSDN博客
当连接池的参数idleTimeout或maxLifetime大于数据库的interactive_timeout或wait_timeout时,连接池里的连接没过期,但数据库那边已经过期了,就会出现上面的错误。
- 低版本idea没有services界面的解决办法,处理后会出现在dashboard里面
网友评论