美文网首页
微服务一些记录

微服务一些记录

作者: 今年五年级 | 来源:发表于2021-11-04 16:39 被阅读0次
    1. 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

    1. 高版本idea修改terminal为cmd,非ps

    pycharm中的terminal运行从PS修改成cmd

    1. 批量启动微服务

    首先选择editConfiturations

    然后新建compound

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

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

    7.More arguments provided (1) than placeholders specified (0)

    原因:使用了如下的写法:

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

    1. 如果我们想要让nginx代理我们的gateway网关,然后让网关转发给各个服务,这个网关和各个服务如果部署到我们本地,而nginx是位于云服务商如腾讯云、阿里云上面的docker容器的话,我们需要配置内网穿透,让我们自己电脑上的服务可以被公网访问到
      使用Ngrok进行内网穿透(Windows) - 简书 (jianshu.com)
      推荐使用钉钉的内网穿透工具,ngrok速度过慢且每次启动会更换二级域名

    整个流程:
    我们自己电脑访问这个server_name的域名就会去访问docker容器里面的nginx,然后nginx再转发到我们自己电脑的网关服务,我们自己的网关服务再转发到我们自己的具体微服务

    1. 性能优化需要考虑你的应用是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可能就没有什么作用了

    1. 如何通过gateway测试开启多个某一服务的节点的负载均衡

    idea的services界面,右键要多开的服务,选择copy configurations,然后配置名称和启动端口号,这个启动端口号会覆盖yml文件中端口号的配置,达到同一个服务多个节点不占哟共公共端口

    1. 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个成功

    1. 网关报错:reactor.netty.http.client.PrematureCloseException: Connection prematurely closed BEFORE response


    reactor.netty.http.client.PrematureCloseException: Connection prematurely closed BEFORE response解决方案_Lovnx-CSDN博客

    1. 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时,连接池里的连接没过期,但数据库那边已经过期了,就会出现上面的错误。

    1. 低版本idea没有services界面的解决办法,处理后会出现在dashboard里面

    IDEA的Services窗口开启方法

    相关文章

      网友评论

          本文标题:微服务一些记录

          本文链接:https://www.haomeiwen.com/subject/iiskzltx.html