写点什么

Docker 下的 Spring Cloud 三部曲之一:极速体验

作者:程序员欣宸
  • 2022 年 5 月 06 日
  • 本文字数:2112 字

    阅读完需:约 7 分钟

Docker下的Spring Cloud三部曲之一:极速体验

欢迎访问我的 GitHub

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


关于《Docker 下的 Spring Cloud 三部曲》系列

  • 从本章开始,我们一起在 Docker 下实战 Spring Cloud 的开发和部署,整个实战分为以下三章进行:


  1. Docker 下极速体验注册中心、服务提供者、服务消费者;

  2. 细说 Spring Cloud 开发;

  3. 实战扩容;


  • 本章是三部曲的第一篇,我们用最短的时间、最简单的操做一起在 Docker 下体验 SpringCloud 的注册中心、服务提供者、服务消费者;

实战环境

  • 本次实战的网络机器信息如下图:

实战内容

  • 这个实战环境提供以下服务:


  1. eureka 是注册中心;

  2. provider 启动后注册到 eureka;

  3. consumer 启动后注册到 eureka;

  4. 浏览器访问 consumer 的 controller;

  5. consumer 收到请求后,通过 eureka 取得 provider 的地址,然后发请求到 provider;

  6. provider 返回一个字符串给 consumer,该字符串中有 provider 的 IP 地址;

  7. consumer 把这个字符串返回给浏览器;

容器信息

  • 环境中的 eureka、provider、consumer 都是 docker 容器,它们的名字和 IP 如下表所示:


软件信息

  • 本次实战的环境信息如下:


  1. 操作系统:Ubuntu16;

  2. Docker 版本:17.03.2-ce;

  3. JDK:1.8.0_161;

docker-compose 配置

  • 创建一个 docker-compose.yml 文件,内容如下:


eureka:  image: bolingcavalry/eureka-server:0.0.1-SNAPSHOT  ports:    - "8081:8080"  tty: trueprovider:  image: bolingcavalry/service-provider:0.0.1-SNAPSHOT  links:    - eureka:eurekahost  tty: trueconsumer:  image: bolingcavalry/service-consumer:0.0.1-SNAPSHOT  links:    - eureka:eurekahost  ports:    - "8083:8080"  tty: true
复制代码

启动容器

  • 在 docker-compose.yml 所在目录下执行以下命令,启动所有容器:


sudo docker-compose up -d
复制代码


  • 启动时控制台显示以下信息:


ubuntu@VM-129-56-ubuntu:~/work/springcloud$ clearCreating springcloud_eureka_1   ... doneCreating springcloud_eureka_1   ... Creating springcloud_consumer_1 ... doneCreating springcloud_provider_1 ... done
复制代码


  • 执行命令 sudo docker logs -f springcloud_eureka_1 查看注册中心启动的情况,看到如下信息时表示注册中心启动成功:


2018-01-26 16:56:52.540  INFO 1 --- [      Thread-11] c.n.e.r.PeerAwareInstanceRegistryImpl    : Got 1 instances from neighboring DS node2018-01-26 16:56:52.540  INFO 1 --- [      Thread-11] c.n.e.r.PeerAwareInstanceRegistryImpl    : Renew threshold is: 12018-01-26 16:56:52.540  INFO 1 --- [      Thread-11] c.n.e.r.PeerAwareInstanceRegistryImpl    : Changing status to UP2018-01-26 16:56:52.601  INFO 1 --- [      Thread-11] e.s.EurekaServerInitializerConfiguration : Started Eureka Server2018-01-26 16:56:52.833  INFO 1 --- [           main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8080 (http)
复制代码


  • 执行命令 sudo docker logs -f springcloud_provider_1 查看服务提供者的启动情况,看到如下信息时表示服务提供者启动成功:


2018-01-26 16:56:51.826  INFO 1 --- [           main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8080 (http)2018-01-26 16:56:51.833  INFO 1 --- [           main] .s.c.n.e.s.EurekaAutoServiceRegistration : Updating port to 80802018-01-26 16:56:51.871  INFO 1 --- [           main] c.b.s.ServiceProviderApplication         : Started ServiceProviderApplication in 58.522 seconds (JVM running for 62.865)
复制代码


  • 执行命令 sudo docker logs -f springcloud_consumer_1 查看服务消费者的启动情况,看到如下信息时表示服务消费者启动成功:


2018-01-26 16:56:54.097  INFO 1 --- [nfoReplicator-0] com.netflix.discovery.DiscoveryClient    : DiscoveryClient_SERVICE-CONSUMER/d39efe3da1c0:service-consumer:8080: registering service...2018-01-26 16:56:54.649  INFO 1 --- [           main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8080 (http)2018-01-26 16:56:54.655  INFO 1 --- [           main] .s.c.n.e.s.EurekaAutoServiceRegistration : Updating port to 80802018-01-26 16:56:54.676  INFO 1 --- [           main] c.b.s.ServiceConsumerApplication         : Started ServiceConsumerApplication in 61.268 seconds (JVM running for 65.699)
复制代码

验证

  • 访问 http://localhost:8081/可以查看注册中心的首页,如下图所示,红框中表示服务提供者和消费者都连上了注册中心:


  • 访问 http://www.bolingcavalry.com:8083/user/aaa/bbb 可以调用到服务消费者 server 的网页,此时服务消费者会调用服务提供者的服务,服务提供者的响应是用户的名称和 id 信息,以及自己的 IP 地址,consumer 收到这些信息后,返回到网页,如下图:



  • 至此,我们已在 Docker 下快速体验了 SpringCloud 的注册中心以及服务的提供和消费等功能,接下来的章节我们将这些功能背后的实现逐个展开;

欢迎关注 InfoQ:程序员欣宸

学习路上,你不孤单,欣宸原创一路相伴...

发布于: 刚刚阅读数: 2
用户头像

搜索"程序员欣宸",一起畅游Java宇宙 2018.04.19 加入

前腾讯、前阿里员工,从事Java后台工作,对Docker和Kubernetes充满热爱,所有文章均为作者原创,个人Github:https://github.com/zq2599/blog_demos

评论

发布
暂无评论
Docker下的Spring Cloud三部曲之一:极速体验_Java_程序员欣宸_InfoQ写作社区