版权声明:欢迎转载,请注明出处,谢谢。 http://blog.csdn.net/boling_cavalry/article/details/79177930

 

目录(?)[+]

 

从本章开始,我们一起在Docker下实战Spring Cloud的开发和部署,整个实战分为以下三章进行: 
1. Docker下极速体验注册中心、服务提供者、服务消费者; 
2. 细说Spring Cloud开发; 
3. 实战扩容;

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

原文地址:http://blog.csdn.net/boling_cavalry/article/details/79177930

实战环境

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

实战内容

这个实战环境提供以下服务: 
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如下表所示:

容器名 ip 功能
springcloud_eureka_1 172.17.0.2 注册中心
springcloud_provider_1 172.17.0.3 提供服务
springcloud_consumer_1 172.17.0.4 提供浏览器访问的http接口,对应的响应会调用provider的服务

软件信息

本次实战的环境信息如下: 
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: true
provider:
image: bolingcavalry/service-provider:0.0.1-SNAPSHOT
links:
- eureka:eurekahost
tty: true
consumer:
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$ clear
Creating springcloud_eureka_1 ... done
Creating springcloud_eureka_1 ...
Creating springcloud_consumer_1 ... done
Creating 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 node
2018-01-26 16:56:52.540 INFO 1 --- [ Thread-11] c.n.e.r.PeerAwareInstanceRegistryImpl : Renew threshold is: 1
2018-01-26 16:56:52.540 INFO 1 --- [ Thread-11] c.n.e.r.PeerAwareInstanceRegistryImpl : Changing status to UP
2018-01-26 16:56:52.601 INFO 1 --- [ Thread-11] e.s.EurekaServerInitializerConfiguration : Started Eureka Server
2018-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 8080
2018-01-26 16:56:51.871 INFO 1 --- [ main] c.b.s.ServiceProviderApplication : Started ServiceProviderApplication in 58.522 seconds (JVM running for 62.865)
  • 1
  • 2
  • 3

执行命令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 8080
2018-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的注册中心以及服务的提供和消费等功能,接下来的章节我们将这些功能背后的实现逐个展开;

Docker下的Spring Cloud三部曲之一:极速体验的更多相关文章

  1. Spring Cloud 负载均衡初体验

    目录 服务搭建 1.注册中心--Eureka Server 2.服务提供方--Service Provider 3.服务消费方--Service Consumer 服务消费 Feign 与断路器 Hy ...

  2. Docker composer搭建Spring Cloud Alibaba 运行环境(二)

    " Spring Cloud Alibaba要用到的组件很多,注册中心nacos, 限流sentinel, 数据库,网关等等.由于用到的组件相对较多,部署会很繁琐,最关键的是没有资源服务器, ...

  3. .NET Core下的Spring Cloud——前言和概述

    前言 前几年一直在写类似dubbo,Srping Cloud的微服务框架辗辗转转重复了多次,也重构推翻了很多次,其中诞生了"Rabbit.Rpc","Go",& ...

  4. spring-cloud-kubernetes服务发现之在k8s环境下开发spring cloud应用

    通常情况下,我们的线上的服务在迁移到k8s环境下的时候,都是采用平滑迁移的方案.服务治理与注册中心等都是采用原先的组件.比如spring cloud应用,在k8s环境下还是用原来的一套注册中心(如eu ...

  5. 使用Docker Compose编排Spring Cloud微服务

    文章目录 微服务构建实例 简化Compose的编写 编排高可用的Eureka Server 编排高可用Spring Cloud微服务集群及动态伸缩 微服务项目名称 项目微服务中的角色 microser ...

  6. Spring Cloud Data Flow初体验,以Local模式运行

    1 前言 欢迎访问南瓜慢说 www.pkslow.com获取更多精彩文章! Spring Cloud Data Flow是什么,虽然已经出现一段时间了,但想必很多人不知道,因为在项目中很少有人用.不仅 ...

  7. spring cloud consul上下线体验

    spring cloud consul中默认会将spring.application.name作为ID 同一服务起多个实例时,ID默认会变成${spring.application.name}-${s ...

  8. docker swarm部署spring cloud服务

    一.准备docker swarm的集群环境 ip 是否主节点   192.168.91.13 是   192.168.91.43 否   二.准备微服务 ①eureka服务 application.y ...

  9. docker下部署spring boot

    第 5 章 Docker + Spring Boot: 快速搭建和部署Java Web应用 0.你需要: JDK 1.8 : java -version Maven 3.0+ : mvn -v Git ...

随机推荐

  1. pandas 索引与列相互转化

    1. 准备数据 import pandas as pd from io import StringIO csv_txt = '''"date","player1" ...

  2. HTML5 之 FileReader 方法上传并读取文件

    原文地址:https://caochangkui.github.io/file-upload/ HTML5 的 FileReader 对象允许Web应用程序异步读取存储在用户计算机上的文件(或原始数据 ...

  3. JavaScript快速入门-ECMAScript对象介绍

    一.概念介绍 在 ECMAScript 中,所有对象并非同等创建的.一般来说,可以创建并使用的对象有三种:本地对象.内置对象和宿主对象. 要理解这三种对象,先要理解宿主环境. 1.宿主环境 一般宿主环 ...

  4. 使用Memcached提高.NET应用程序的性能(转)

    标签:分布式缓存 .NET Memcached Performance 性能 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://zh ...

  5. Category Theory: 01 One Structured Family of Structures

    Category Theory: 01 One Structured Family of Structures 这次看来要放弃了.看了大概三分之一.似乎不能够让注意力集中了.先更新吧. 群的定义 \( ...

  6. 32bit 天堂2脚本修改资料大全【客户端+服务端】

    该资料夹中所有教程资料全部适合天堂2初章32位服务端的脚本修改,已经1.2章相关客户端的修改. https://pan.baidu.com/s/1RuGMFNgERd2JMYQpdceQwg 提取码: ...

  7. C++基础知识(2)

    作为接口的函数头 C++函数可被其他函数激活或调用,函数头描述了函数与调用它的函数之间的接口. 在C语言中,省略返回类型相当于说函数的类型为int,然而,C++逐步淘汰了这种用法 也可以使用下面的变体 ...

  8. group by 和count的联合使用问题 [转]

    group by 和count的联合使用问题 今天写查询语句遇到一个问题,就是用group by进行分组以后,用count统计分组以后的个数, 开始写的语句大体是: select count(m.fb ...

  9. FASIC: A Fast-recovery, Adaptively Spanning In-band Control Plane in Software-Defined Network

    2017 IEEE Global Communications Conference 问题:in-band网络中如果物理链路阻塞或者硬件故障,导致控制器的消息不能及时到达各个交换机导致网络不一致甚至某 ...

  10. 班级博客与coding地址

    队名 队长 成员1 成员2 成员3 成员4 成员5 团队博客地址 奥特曼小分队 李全清 胡林状 王栋 孙杏子 孙乐 刘泽良 http://www.cnblogs.com/atmxfd/ 蜗牛上天队 仝 ...