Docker下的Spring Cloud三部曲之三:在线横向扩容

简介: 本章是《Docker下的Spring Cloud三部曲》的最后一篇,前面两篇我们实践了开发和制作镜像文件,运行一个基于spring cloud的RPC服务环境,今天我们来试试docker-compose的扩容功能,将我们的RPC服务做在线扩容

欢迎访问我的GitHub

这里分类和汇总了欣宸的全部原创(含配套源码): https://github.com/zq2599/blog_demos

本篇概览

  • 本章是《Docker下的Spring Cloud三部曲》的最后一篇,前面两篇我们实践了开发和制作镜像文件,运行一个基于spring cloud的RPC服务环境,今天我们来试试docker-compose的扩容功能,将我们的RPC服务做在线扩容;

系列文章

  1. 《Docker下的Spring Cloud三部曲之一:极速体验》
  2. 《Docker下的Spring Cloud三部曲之二:细说Spring Cloud开发》

环境信息

  • 回顾一下实战环境,如下图:

这里写图片描述

扩容效果

  • 一般情况下,生产环境耗时耗资源的处理逻辑都集中在provider中,所以我们需要对provider做在线扩容,完成后的效果如下图所示:

这里写图片描述

扩容操做

docker-compose scale provider=3
  • 控制台提示操做成功:
ubuntu@VM-129-56-ubuntu:~/work/springcloud$ sudo docker-compose scale provider=3   
WARNING: The scale command is deprecated. Use the up command with the --scale flag instead.
Starting springcloud_provider_1 ... done
Creating springcloud_provider_2 ... done
Creating springcloud_provider_3 ... done
  • 执行以下命令可以看清容器和IP地址的信息:
docker inspect --format='{{.Config.Image}} {{.Name}} {{.State.Status}} {{.NetworkSettings.IPAddress}} ' `sudo docker ps -a -q`
  • 信息如下所示:
ubuntu@VM-129-56-ubuntu:~/work/springcloud$ sudo docker inspect --format='{{.Config.Image}} {{.Name}} {{.State.Status}} {{.NetworkSettings.IPAddress}} ' `sudo docker ps -a -q`
bolingcavalry/service-provider:0.0.1-SNAPSHOT /springcloud_provider_3 running 172.17.0.6 
bolingcavalry/service-provider:0.0.1-SNAPSHOT /springcloud_provider_2 running 172.17.0.5 
bolingcavalry/service-consumer:0.0.1-SNAPSHOT /springcloud_consumer_1 running 172.17.0.4 
bolingcavalry/service-provider:0.0.1-SNAPSHOT /springcloud_provider_1 running 172.17.0.3 
bolingcavalry/eureka-server:0.0.1-SNAPSHOT /springcloud_eureka_1 running 172.17.0.2 
  • 新的provider容器已经启动了;

验证

  • consumer的http接口,返回值中带有provider的IP地址,我们在浏览器输入consumer的服务地址:http://localhost:8083/user/aaa/bbb,多刷新几次,发现返回内容中的provider IP地址是一直再变化的,如下图:

这里写图片描述

  • 执行以下命令,会将新增的springcloud_provider_2和springcloud_provider_3销毁,恢复到最初的状态:
ubuntu@VM-129-56-ubuntu:~/work/springcloud$docker-compose scale provider=1
WARNING: The scale command is deprecated. Use the up command with the --scale flag instead.
Stopping and removing springcloud_provider_2 ... done
Stopping and removing springcloud_provider_3 ... done
ubuntu@VM-129-56-ubuntu:~/work/springcloud$
  • 同样可以用浏览器刷新页面,通过返回的provider IP地址来验证provider还有几个;
  • 至此,Docker下的Spring Cloud实战三部就全部完成了,希望能对您的spring cloud学习有所帮助;

欢迎关注阿里云开发者社区博客:程序员欣宸

学习路上,你不孤单,欣宸原创一路相伴...
相关文章
|
6月前
|
弹性计算 关系型数据库 微服务
基于 Docker 与 Kubernetes(K3s)的微服务:阿里云生产环境扩容实践
在微服务架构中,如何实现“稳定扩容”与“成本可控”是企业面临的核心挑战。本文结合 Python FastAPI 微服务实战,详解如何基于阿里云基础设施,利用 Docker 封装服务、K3s 实现容器编排,构建生产级微服务架构。内容涵盖容器构建、集群部署、自动扩缩容、可观测性等关键环节,适配阿里云资源特性与服务生态,助力企业打造低成本、高可靠、易扩展的微服务解决方案。
2110 10
|
5月前
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
688 6
|
Java 测试技术 Spring
Spring Boot随机端口怎么动态扩容?
在Spring Boot中,可以通过`${random.int(2000,8000)}`在配置文件中设置随机端口,确保每次启动时端口不同。此外,还可以通过检测机制确保生成的随机端口未被占用,避免端口冲突。具体实现包括使用`System.setProperty`设置有效随机端口、自定义属性源以及直接设置`server.port=0`让Spring Boot自动选择空闲端口。推荐使用`server.port=0`以简化配置并避免冲突。
350 8
|
Java Docker 索引
Springboot的Container Images,docker加springboot
本文介绍了如何使用Spring Boot的层索引文件和Docker优化Spring Boot应用程序的容器化过程,包括解压缩可执行jar和创建分层Docker映像的方法。
204 9
Springboot的Container Images,docker加springboot
|
消息中间件 监控 Java
如何将Spring Boot + RabbitMQ应用程序部署到Pivotal Cloud Foundry (PCF)
如何将Spring Boot + RabbitMQ应用程序部署到Pivotal Cloud Foundry (PCF)
363 6
|
Java 关系型数据库 MySQL
如何将Spring Boot + MySQL应用程序部署到Pivotal Cloud Foundry (PCF)
如何将Spring Boot + MySQL应用程序部署到Pivotal Cloud Foundry (PCF)
271 5
|
缓存 监控 Java
如何将Spring Boot应用程序部署到Pivotal Cloud Foundry (PCF)
如何将Spring Boot应用程序部署到Pivotal Cloud Foundry (PCF)
312 5
|
Java Linux Docker
什么是 Docker?如何将 Spring Boot 应用程序部署到 Docker?
什么是 Docker?如何将 Spring Boot 应用程序部署到 Docker?
598 3
|
关系型数据库 MySQL 应用服务中间件
SpringCloud基础3——Docker
docker镜像、容器、安装、数据卷、Dockerfile自定义镜像、Docker-Compose部署分布式项目、Docker镜像仓库
SpringCloud基础3——Docker