SpringCloud实战---第八篇:微服务集群负载均衡Ribbon

举报
老司机张师傅 发表于 2022/07/26 23:21:58 2022/07/26
【摘要】 前言 说起来容易做起来难,一步一步都干完!!! 学习一定要自己动手搞一搞,不能只眼会。 学习笔记是跟着尚硅谷的视频学的:https://www.bilibili.com/video/BV18E411x7eT?p=1 场景大纲我们以这样一个场景来学习、构建我们的微服务 服务提供者的集群配置根据官网的图示,我们集群的配置不只是注册中心,服务的提供者同样需要搭建集群,以达成系统的高可用。 800...

前言

说起来容易做起来难,一步一步都干完!!!

学习一定要自己动手搞一搞,不能只眼会。

学习笔记是跟着尚硅谷的视频学的:https://www.bilibili.com/video/BV18E411x7eT?p=1

场景大纲

我们以这样一个场景来学习、构建我们的微服务
在这里插入图片描述

服务提供者的集群配置

在这里插入图片描述
根据官网的图示,我们集群的配置不只是注册中心,服务的提供者同样需要搭建集群,以达成系统的高可用。

8001服务集群改造

1. 创建8002模块

我们先将8001服务复制一个一摸一样的8002模块。

  1. 创建模块cloud-provider-payment8002。
cloud-provider-payment8002

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  1. 将8001的pom依赖粘贴过来
    在这里插入图片描述
    在这里插入图片描述

ctrl+s保存

  1. 将8001的application.yml粘贴过来,并修改端口为8002
    在这里插入图片描述
    修改端口
    在这里插入图片描述
  2. 将8001的代码复制到8002
    在这里插入图片描述
    在这里插入图片描述

注意:mapper文件粘贴过后需要clean一下整个工程,因为mapper是静态资源,如果之前打包过,不清除包启动会报错找不到xml文件。

在这里插入图片描述

  1. 将8002的启动类名修改一下
    在这里插入图片描述
    在这里插入图片描述
    修改完成
    在这里插入图片描述

CV大法用的6起来了!!!

2. 改造服务测试负载均衡

现在集群模块已经创建好了,为了调试负载均衡,让我们知道调用的是哪个服务,我们用端口号打印日志来区分。
修改8001和8002模块的controller层代码,加入获取端口号,并且在返回信息中加上端口号,这样可以直观的看出调用了哪个服务。

@Value("${server.port}")
private String serverPort;

在这里插入图片描述

3. 开始测试

  1. 启动所有服务
    在这里插入图片描述
    因为8002还没有启动过,所以Run Dashboard里面还看不到,所以我们再单独启动一下8002

在这里插入图片描述
2. 访问Eureka集群,测试注册中心集群

http://localhost:7001/

在这里插入图片描述
访问7002

http://localhost:7001/

在这里插入图片描述

完美~~

  1. 访问8001和8002,测试微服务集群查询
http://localhost:8001/payment/get/1
http://localhost:8002/payment/get/1

在这里插入图片描述
8001和8002服务正常

  1. 使用order服务调用者调用,测试负载均衡
http://localhost/customer/payment/get/1

在这里插入图片描述
也能正常调用。
多刷新几次,会发现始终都调用的8001端口的服务,这说明虽然两个8001和8002服务都正常,但是80服务调用的时候没有用上负载均衡。

4. 改造服务调用方使用负载均衡

  1. 之前我们的地址是写死的,现在有了两个集群的payment服务,所以我们需要修改成通过服务名而不是固定的ip端口调用。
    http://ip:port改为http://servicename
    在这里插入图片描述
    其中服务名就是EurekaServer页面上对应的服务名
    在这里插入图片描述
  2. 地址动态获取之后,我们还有使用@LoadBalanced注解来给RestTemplate开启使用负载均衡的能力,否则他还是会用ip端口的方法去调用服务,会报错。
@LoadBalanced

在这里插入图片描述

  1. 然后再次启动服务,使用customer调用。
http://localhost/customer/payment/get/1

多刷新几次这个页面,发现会交替的调用8001端口和8002端口,证明负载均衡生效了!!!
在这里插入图片描述
在这里插入图片描述

总结

  • 同一服务名称,不同端口的服务注册的Eureka上会被视为集群。

  • mapper文件新增或修改后如果不能生效clean一下工程再启动就可以生效了。

  • 集群搭建完成后,使用负载均衡需要将原来的ip:端口的调用方式改为使用服务名称调用的方式。

  • 服务调用方默认不会开启负载均衡,使用RestTemplate方式调用时需要添加@LoadBalanced注解来开启负载均衡。

  • Ribbon负载均衡默认使用的时轮询。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。