按照官方的话说:Spring Cloud 为开发者提供了在分布式系统(如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性 Token、全局锁、决策竞选、分布式会话和集群状态)操作的开发工具。最关键的是它足够简单,一般的开发人员只需要几天时间就可以学会它的基本用法。
SpringCloud分布式开发五大神兽:
服务发现 ——Netflix Eureka
客服端负载均衡 ——Netflix Ribbon
断路器 ——Netflix Hystrix
服务网关 ——Netflix Zuul
分布式配置 ——Spring Cloud Config
10 、 Spring Cloud 快速入门
第六章已经讲解了Spring Boot的快速入门,Spring Boot的功能还有很多,很强大,想熟练使用它,得有“悬梁刺股” 的精神!
Spring Cloud是在Spring Boot上发展起来的,下面我们以eureka(服务注册与发现)开始它的蜕变之旅吧!
10.1 服务的注册与发现(Eureka)
10.1.1 创建服务注册中心
10.1.1.1 创建子项目
在spring-cloud-demo父项目上右击,选择创建“Maven Module”,子项目名称为“zjs-eureka” 。
10.1.1.2 编辑 POM 文件
怎么将一个SpringBoot改造成SpringCloud呢?其实很简单,现在开始改造吧!
10.1.1.2.1 编辑父项目 POM 文件
编辑父项目spring-cloud-demo的POM文件,增加以下内容:
10.1.1.2.2 编辑子项目 POM 文件
编辑子项目zjs-eureka的POM文件,增加以下内容:
10.1.1.3 编辑启动类
编辑子项目zjs-eureka的启动类App.java,内容如下:
10.1.1.4 增加 application.yml 文件
10.1.1.4 增加 application.yml 文件
10.1.1.5 启动服务注册中心
在子项目zjs-eureka上右键App.java文件,选择run as -> Java Application。
如果没有报错的话,在浏览器中输入: http://localhost:8761
10.1.2 创建服务提供者
先前,我们已经创建了一个“zjs-service” 服务,运行也是正常的,现在我们动一下手术,让它成为服务的提供者。
10.1.2.1 编辑 POM 文件
10.1.2.2 编辑启动类
10.1.2.3 编辑配置文件
仅仅@EnableEurekaClient是不够的,还需要在配置文件中注明自己的服务注册中心的地址,application.properties配置文件如下:
需要指明spring.application.name,这个很重要,这在以后的服务与服务之间相互调用一般都是根据这个name 。
启动工程,再次刷新http://localhost:8761
你会发现一个服务已经注册在服务中了,服务名为ZJS-SERVICE,端口为8081,这时打开 http://localhost:8081/springbootdemo/test ,你会在浏览器上看到 :
10.2 配置服务中心(Config)
10.2.1 创建 SVN 配置文件仓库
在SVN服务器上创建springcloudconfig,并创建config文件夹,然后写入一个配置文件cloud-config-dev.properties也可以是cloud-config-dev.yml
10.2.2 创建配置服务端
在spring-cloud-demo下创建spring-cloud-config-server的子项目,并在POM文件中添加
创建启动类
添加配置文件application.yml
启动程序后,我们访问 http://localhost:8888/cloud-config/dev,就可以看到配置信息。
10.2.3 创建使用配置服务的客户端
在spring-cloud-demo下创建spring-cloud-config-server的子项目,并在POM文件中添加
添加启动类
为了直观看到配置中心内容,添加HelloController文件,里面用到了${message}变量,在此项目中,我们并不配置这个值,需要从配置中心获取该值。
添加配置文件application.yml
接下来,启动该服务
最后服务成功启动了
在浏览器中输入http://localhost:8007/
SpringCloud有了这个功能后
配置信息可以集中管理;
启动服务时,指定配置更加方便;
本章只是介绍了Spring Cloud 的一个方面,其他组件请自行研究。