Docker下的Spring Cloud三部曲之一:极速体验
版权声明:欢迎转载,请注明出处,谢谢。 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三部曲之一:极速体验的更多相关文章
- Spring Cloud 负载均衡初体验
目录 服务搭建 1.注册中心--Eureka Server 2.服务提供方--Service Provider 3.服务消费方--Service Consumer 服务消费 Feign 与断路器 Hy ...
- Docker composer搭建Spring Cloud Alibaba 运行环境(二)
" Spring Cloud Alibaba要用到的组件很多,注册中心nacos, 限流sentinel, 数据库,网关等等.由于用到的组件相对较多,部署会很繁琐,最关键的是没有资源服务器, ...
- .NET Core下的Spring Cloud——前言和概述
前言 前几年一直在写类似dubbo,Srping Cloud的微服务框架辗辗转转重复了多次,也重构推翻了很多次,其中诞生了"Rabbit.Rpc","Go",& ...
- spring-cloud-kubernetes服务发现之在k8s环境下开发spring cloud应用
通常情况下,我们的线上的服务在迁移到k8s环境下的时候,都是采用平滑迁移的方案.服务治理与注册中心等都是采用原先的组件.比如spring cloud应用,在k8s环境下还是用原来的一套注册中心(如eu ...
- 使用Docker Compose编排Spring Cloud微服务
文章目录 微服务构建实例 简化Compose的编写 编排高可用的Eureka Server 编排高可用Spring Cloud微服务集群及动态伸缩 微服务项目名称 项目微服务中的角色 microser ...
- Spring Cloud Data Flow初体验,以Local模式运行
1 前言 欢迎访问南瓜慢说 www.pkslow.com获取更多精彩文章! Spring Cloud Data Flow是什么,虽然已经出现一段时间了,但想必很多人不知道,因为在项目中很少有人用.不仅 ...
- spring cloud consul上下线体验
spring cloud consul中默认会将spring.application.name作为ID 同一服务起多个实例时,ID默认会变成${spring.application.name}-${s ...
- docker swarm部署spring cloud服务
一.准备docker swarm的集群环境 ip 是否主节点 192.168.91.13 是 192.168.91.43 否 二.准备微服务 ①eureka服务 application.y ...
- docker下部署spring boot
第 5 章 Docker + Spring Boot: 快速搭建和部署Java Web应用 0.你需要: JDK 1.8 : java -version Maven 3.0+ : mvn -v Git ...
随机推荐
- 学会查看Linux手册页(man文档)
区段1:用户指令区段2:系统调用区段3:程序库调用区段4:设备区段5:文件格式区段6:游戏区段7:杂项区段8:系统指令区段9:内核内部指令区段n:Tcl或Tk指令 如果记不清楚工具或者函数的完整名字, ...
- java 读写ini配置文件
ini配置文件 ;客户端配置[Client];客户端版本号version=0001;设备号devNum=6405 public final class ConfigurationFile { /** ...
- Page结构
SQL Server存储数据的基本单元是Page,每一个Page的大小是8KB,数据文件是由Page构成的.在同一个数据库上,每一个Page都有一个唯一的资源标识,标识符由三部分组成:db_id,fi ...
- Neo4j 第四篇:使用C#更新和查询Neo4j
本文使用的IDE是Visual Studio 2015 ,驱动程序是Neo4j官方的最新版本:Neo4j Driver 1.3.0 ,创建的类库工程(Project)要求安装 .NET Framewo ...
- 设计模式 笔记 单例模式 Singleton
//---------------------------15/04/09---------------------------- //Singleton 单例模式-----对象创建型模式 /* 1: ...
- eclipse + maven + com.sun.jersey 创建 restful api
maven 创建 jersey 项目 如果没找到 jersey archetype, 下载 maven 的 archetype xml, 然后导入 archetypes 运行 右击 main.java ...
- C#_Winform_聊天机器人
最近研究微信公众平台,搭建了一个微信聊天机器人,调用小黄鸡的公众接口,实现在线和小黄鸡聊天的功能. 接口调用不是很麻烦,不过是php版本,所以研究了一下C#的功能模块, Winfrom版 using ...
- 软件测试--w模型
W模型 优点:开发把随着整个开发周期,需求.和设计同样要测试,更早的介入测试,可以发现初期的缺陷,修复成本低:分阶段工作方便项目整体管理: 缺点:开发和测试依然是线性关系,需求的变更和调整,依然不方便 ...
- PHP 设计模式六大原则
http://www.cnblogs.com/yujon/p/5536118.html 设计模式六大原则(1):单一职责原则 不要存在多于一个导致类变更的原因.通俗的说,即一个类只负责一项职责 设计模 ...
- VSTS写单元测试
用VSTS写单元测试 许多应用程序都会用到“用户”类型,今天我要用的是ConsoleApplicatio ...