Docker 下的 Spring Cloud 三部曲之二:细说 Spring Cloud 开发

欢迎访问我的 GitHub
这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos
本篇概览
- 本文是《Docker 下的 Spring Cloud 三部曲》系列的第二篇,详细讲解上一篇实例中用到的 eureka、provider、consumer 等三个应用的开发过程; 
环境信息
- 回顾一下实战环境,如下图: 
 
 源码地址
- 上图的 eureka、provider、consumer 是三个 spring boot 的 web 工程,源码可以在 GitHub 下载,地址和链接信息如下表所示: 
 
 - 这个 git 项目中有多个工程,本次实战的工程是 springcloudscaledemo,如下图红框所示: 
 
 如何将 spring boot 工程构建成 docker 镜像
- 如果您想了解如何将 spring boot 工程构建 docker 镜像,欢迎访问以下三篇实战文章: 
- 本次实战用到的知识点主要集中在上面的第二部; 
开发环境
- 本次实战开发环境的具体信息如下: 
- 操作系统:Ubuntu16; 
- Docker 版本:17.03.2-ce; 
- JDK:1.8.0_151; 
- maven:3.3.3; 
- 接下来我们依次开发 eureka、provider、consumer 等三个应用; 
eureka-server 应用的 pom.xml
- 新建一个名为 eureka-server 的 spring boot 应用,pom.xml 内容如下: 
- pom.xml 中的几个关键点如下: 
- spring cloud 的版本是 Edgware.SR1; 
- 添加 spring-cloud-starter-eureka-server 的依赖; 
- 添加 spring-cloud-dependencies 的依赖(pom 的形式); 
- 添加插件 docker-maven-plugin,用于将当前工程制作成本地 docker 镜像; 
eureka-server 应用的源码
- eureka-server 应用只有一个 java 文件,内容如下: 
- 注意要添加**@EnableEurekaServer**注解; 
eureka-server 的配置信息
- 配置信息 application.properties 的内容如下: 
构建 eureka-server 应用的 docker 镜像
- 在 pom.xml 文件所在目录下,执行如下命令可以构建 docker 镜像: 
- 构建成功后,执行命令 docker images 可见新构建的镜像,如下: 
- eureka-server 的镜像 OK 后,我们接下来构建 provide 的镜像; 
provider 应用的 pom.xml
- 新建一个名为 service-provider 的 spring boot 应用,pom.xml 内容如下: 
provider 应用的源码
- 入口类 ServiceProviderApplication 的源码如下: 
- 注意要添加**@EnableDiscoveryClient**注解; 
- 只有一个 controller 类 UserController ,对外提供 http 服务: 
- 上面的 controller 提供两个 http 服务,getUserInfoWithRequestParam 服务会返回应用所在机器的 IP 地址; 
provider 的配置信息
- provider 的配置信息存放在 application.yml 文件中,内容如下: 
- 注意上面配置的注册中心地址为 http://eurekahost:8080/eureka/,eurekahost 在 docker-compose 中会作为 link 参数对应 eureka server; 
构建 provider 应用的 docker 镜像
- 在 pom.xml 文件所在目录下,执行如下命令可以构建 docker 镜像: 
- 构建成功后,执行命令 docker images 可见新构建的镜像,如下: 
- provider 已经 OK,接下来是 consumer 工程; 
consumer 应用的 pom.xml
- 新建一个名为 service-consumer 的 spring boot 应用,pom.xml 内容如下: 
- 和前面两个应用相比,这里要引入 spring-cloud-starter-feign; 
consumer 的源码
- 入口类 ServiceConsumerApplication 源码如下: 
- 注意要增加**@EnableDiscoveryClient 和 @SpringBootApplication**这两个注解; 
- 增加一个带注解**@FeignClient**的接口,用于在 spring cloud 环境中声明远程调用信息: 
- 增加一个 controller 类 UserFacadeController,为浏览器访问提供 http 服务,并且在响应请求的时候会通过 UserFeignClient 接口的实现远程调用 provider 应用的服务: 
consumer 的配置信息
- provider 的配置信息存放在 application.yml 文件中,内容如下: 
- 注意上面配置的注册中心地址为 http://eurekahost:8080/eureka/,eurekahost 在 docker-compose 中会作为 link 参数对应 eureka server; 
构建 provider 应用的 docker 镜像
- 在 pom.xml 文件所在目录下,执行如下命令可以构建 docker 镜像: 
- 构建成功后,执行命令 docker images 可见新构建的镜像,如下: 
- 至此,本次实战所需的所有镜像都制作完毕,相关的 demo 工程的开发过程我们也一起过了一遍,上一章中的实战您已经可以独立做出来了,接下来的实战中,我们一起来尝试服务横向扩容; 
欢迎关注 InfoQ:程序员欣宸
版权声明: 本文为 InfoQ 作者【程序员欣宸】的原创文章。
原文链接:【http://xie.infoq.cn/article/1252e052e16adf6dde58682ff】。文章转载请联系作者。












 
    
评论