Spring cloud服务搭建

Spring cloud服务搭建

一.如何使用Eureka注册服务
1.搭建Maven父工程
(1)在eclipse中新建一个maven project
Spring cloud服务搭建_第1张图片
(2)勾选下图的框,点击下一步
Spring cloud服务搭建_第2张图片
(3)填写父工程名称microservice-springcloud,注意packing一定要选择pom
Spring cloud服务搭建_第3张图片
(3)完成后,在工程的pom.xml中添加Spring Cloud的版本依赖信息
Spring cloud服务搭建_第4张图片
一定要添加以下配置,否则会报错
Spring cloud服务搭建_第5张图片
2.搭建服务端工程
(1)在父工程microservice-springcloud中,创建Maven字模块microservice-eureka-server作为服务端工程
Spring cloud服务搭建_第6张图片
Spring cloud服务搭建_第7张图片
(2)在pom.xml中添加Eureka Server的依赖
Spring cloud服务搭建_第8张图片
(3)编写配置文件application.yml,填入端口号等信息
Spring cloud服务搭建_第9张图片
(4)添加注册中心启动类,在启动类上添加注解@EnableEurekaServer,该注解用于声明标注类是一个Eureka Server;
Spring cloud服务搭建_第10张图片
(5)启动应用,查看信息。完成上述配置后,启动应用程序并在浏览器中访问http://localhost:8761/即可看到Eureka的信息面板
Spring cloud服务搭建_第11张图片
3.搭建客户端工程
在父工程microservice-springcloud中,创建Maven子模块microservice-eureka-user作为客户端工程,该模块也是一个基础的Spring Boot工程,其主要文件代码的实现过程如下。
(1)添加依赖,在pom.xml中添加Eureka依赖
Spring cloud服务搭建_第12张图片
(2)编写配置文件。在配置文件中添加Eureka服务实例的端口号、服务端地址等信息
Spring cloud服务搭建_第13张图片
(3)修改客户端Java代码。在项目的引导类上添加注解@EnableEurekaClient,该注解用于声明标注类是一个Eureka客户端组件
Spring cloud服务搭建_第14张图片
(4)启动应用,查看信息。完成上述配置后,分别启动服务器工程和客户端工程,在浏览器中访问http://localhost:8761/后,我们可从Eureka的信息面板中看到注册的服务信息
Spring cloud服务搭建_第15张图片
从上图可以看出,服务已经成功注册到了注册中心,注册后的服务就可以直接被其他服务调用了。
二.实现服务间的调用
1.搭建订单服务工程
(1)在父工程microservice-springcloud中,创建Maven子模块microservice-eureka-order
Spring cloud服务搭建_第16张图片
(2)在pom.xml中添加spring-cloud-starter-eureka依赖
Spring cloud服务搭建_第17张图片
(3)编写配置文件。在配置文件中添加Eureka服务实例的端口号、服务端地址等信息
Spring cloud服务搭建_第18张图片
(4)创建订单实体类。创建com.itheima.springcloud.po包,并在包中创建订单实体类Order
Spring cloud服务搭建_第19张图片
Spring cloud服务搭建_第20张图片
(5)创建订单控制类。创建com.itheima.springcloud.controller包,并在包中创建订单控制器类OrderController。在该类中模拟编写一个通过Id查询订单的方法
Spring cloud服务搭建_第21张图片
(6)在引导类中添加@EnableEurekaClient注解
Spring cloud服务搭建_第22张图片
2.编写用户服务功能
(1)在microservice-eureka-user工程的引导类中,创建RestTemplate的Spring实例
Spring cloud服务搭建_第23张图片
(2)创建用户控制器类,并在类中编写查询方法
Spring cloud服务搭建_第24张图片
3.启动服务应用,测试服务调用
(1)分别启动服务注册中心应用、订单服务应用和用户服务应用,此时Eureka信息页面的显示信息如图
在这里插入图片描述
(2)当通过浏览器访问地址http://localhost:7900/order/1后,浏览器的显示效果如图
在这里插入图片描述
(3)当通过浏览器访问地址http://localhost:8000/findOrderByUser/1后,浏览器的显示效果如图
在这里插入图片描述
三.客户端负载均衡
1.Ribbon介绍
Ribbon主要功能是提供客户端的软件负载均衡算法,在Eureka的自动配置依赖模块spring-cloud-starter-eureka中,已经集成了Ribbon,我们可以直接使用Ribbon来实现客户端的负载均衡。
Spring cloud服务搭建_第25张图片
2.Ribbon的使用
(1)在microservice-eureka-user工程引导类中的restTemplate()方法上添加@LoadBlances注解,使其具有了负载均衡的能力
Spring cloud服务搭建_第26张图片
(2)在用户服务实例的查询方法中,使用服务提供者(订单服务)的实例名称来执行已注册服务列表中实例的方法
Spring cloud服务搭建_第27张图片
(3)为了演示负载均衡的实现效果,这里microservice-eureka-order工程中创建一个用于监听服务实例端口的工具类ServiceInfoUtil
Spring cloud服务搭建_第28张图片
(4)在订单控制器类OrderController的查询订单方法中,增加一行执行输出当前实例端口号的语句
Spring cloud服务搭建_第29张图片
(5)分别启动注册中心、用户服务和订单服务,然后修改订单服务的端口号(如7901),再次启动一个订单服务后,Eureka信息页面的注册信息如图
Spring cloud服务搭建_第30张图片
(6)通过浏览器连续4次访问地址http://localhost:8000/findOrdersByUser/1后,两个应用的Eclipse控制台的输出结果如图,用户服务实例通过Ribbon成功实现了客户端的负载均衡
Spring cloud服务搭建_第31张图片
Spring cloud服务搭建_第32张图片

四.服务容错保护
1.Spring Cloud Hystrix的使用
(1)在microservice-eureka-user中引入eureka和hystrix的依赖
Spring cloud服务搭建_第33张图片
(2)在配置文件中添加Eureka服务实例的端口号、服务端地址等
Spring cloud服务搭建_第34张图片
(3)在工程类Application中使用@EnableCircuitBreaker注解开启断路由器功能,编辑后如下图
Spring cloud服务搭建_第35张图片
(4)修改用户控制器类,在findOrdersByUser()方法上添加@HystrixCommand注解来指定回调方法
Spring cloud服务搭建_第36张图片
(5)分别启动注册中心、服务提供者和服务消费者后,注册中心信息页面中已注册的服务如图所示
Spring cloud服务搭建_第37张图片
此时访问http://localhost:8000/findOrdersByUser/1 时,可以正常访问
在这里插入图片描述
(6)如果停掉服务提供者的服务,则页面将显示如下信息,说明Spring Cloud Hystrix的服务回调(fallbackInfo()方法)生效
在这里插入图片描述
2. Hystrix的使用
(1)在Microservice-eureka-user工程中的pom.xml中添加监控依赖
Spring cloud服务搭建_第38张图片
(2)分别启动注册中心(server)、服务提供者(order)和服务消费者(user)工程
(3)通过浏览器访问地址http://localhost:8000/findOrdersByUser/1(此步骤不可省略,否则由于系统应用的所有接口都未被调用,只能输出ping:)。
Spring cloud服务搭建_第39张图片
在这里插入图片描述

(4)通过浏览器访问地址http://localhost:8030/hystrix.stream,将看到以下信息
Spring cloud服务搭建_第40张图片
3. Hystrix Dashboard的使用
虽然采用上面纯文字输出的方式可以实时监控数据,但可读性十分差。为此我们可以通过Hystrix Dashboard以可视化的方式来查看实时监控数据。Hystrix DashBoard是Hystrix的一个组件,它提供了数据监控和有好的图形化界面支持。
(1)新建microservice-springcloud的子工程microservice-hystrix-dashboard,在其pom.xml文件中添加监控依赖和Hystrix Dashboard依赖;
在这里插入图片描述
(2)编写配置文件application.yml,指定应用端口号和名称等信息
Spring cloud服务搭建_第41张图片
(3)编写Application.java,并在其类上添加@EnableHystrixDashboard注解开启Hystrix仪表板功能;
Spring cloud服务搭建_第42张图片
(4)启动工程后,通过浏览器访问地址http://localhost:8031/hystrix.stream将会看到以下页面
Spring cloud服务搭建_第43张图片
(5)在Hystrix Dashboard下的输入框中输入http://localhost:8000/hystrix.stream,并设置Title为“订单微服务”后,单击【Monitor Stream】按钮,将出现以下页面

Spring cloud服务搭建_第44张图片Spring cloud服务搭建_第45张图片
(6)此时通过另一个浏览器访问http://localhost:8000/findOrdersByUser/1,并且不断地刷新地址,图中将显示信息如下
Spring cloud服务搭建_第46张图片
五.API网关服务
1.使用Zuul构建API网关服务
(1)在父工程microservice-springcloud下创建子模块microservice-gateway-zuul工程,并在其pom.xml中添加eureka和Zuul的依赖;
Spring cloud服务搭建_第47张图片
(2)编辑配置文件。在配置文件中编写Eureka服务实例的端口号、、服务端地址等信息;
Spring cloud服务搭建_第48张图片
(3)在工主类Application中使用@EnableZuulProxy注解开启Zuul的API网关功能
Spring cloud服务搭建_第49张图片
(4)分别启动注册中心(server)、服务提供者(order)和网关服务(zuul)后,注册中心已注册的服务如图所示
在这里插入图片描述
(5)通过地址http://localhost:7901/order/1单独访问服务时,浏览器的显示效果如图
Spring cloud服务搭建_第50张图片
(6)下面通过Zuul来验证路由功能,通过网关服务来访问订单信息。在浏览器输入地址http://localhost:8050/microservice-eureka-order/order/1后,浏览器的显示效果如图
在这里插入图片描述
从图中可以看出,浏览器已经显示出来要访问的订单信息。说明使用Zuul配置的路由功能已经生效,通过服务ID映射的方式已经可以进行跳转。
六.分布式配置管理
1.使用本地存储的方式实现配置管理
(1)搭建Config Server,创建配置中心工程microservice-config-server,并在其pom.xml中引入Config Server的依赖
Spring cloud服务搭建_第51张图片Spring cloud服务搭建_第52张图片

(2)编写配置文件application.yml,添加服务端口号和存储属性等信息
Spring cloud服务搭建_第53张图片
(3)在src/main/resources目录下创建3个分别用来表示开发、预发布和测试的资源配置文件,并在文件中写入如下内容。
application-dev.yml中编写内容:clientParam: native-dev-1.0
application-prod.yml中编写内容:clientParam: native-prod-1.0
application-test.yml中编写内容:clientParam: native-test-1.0

上述资源文件是按照“应用名+环境名+格式”的规范来命名的,其常见文件的命名方式如下。
Spring cloud服务搭建_第54张图片
其中applicton表示的是应用名称,profile表示变化的文件,而label是可选的,表示Git的分支,默认是master。
Spring cloud服务搭建_第55张图片
(4)创建启动类,并在类上增加@EnableConfigServer注解以开启服务端功能
Spring cloud服务搭建_第56张图片
(5)启动工程,测试应用。应用启动成功后按照如下格式的url发起请求;
http://localhost:8888/{applicationname}/{env}/{label},本应用中的访问地址为http://localhost:8888/microservice-config-server/dev,浏览器的显示效果如图,浏览器中的JSON信息显示出了应用名microservice-config-server、环境名dev,以及资源文件路径和文件内容等信息。
Spring cloud服务搭建_第57张图片
除此之外,我们也可直接访问资源文件,来查看资源文件内的配置信息。通过浏览器访问http://localhost:8888/application-dev.yml
Spring cloud服务搭建_第58张图片
2.搭建Config Client
(1)创建客户端microservice-config-client,并在其pom.xml中添加Config和Web的依赖
Spring cloud服务搭建_第59张图片
(2)编写配置文件bootstrape.yml,并在其中配置应用名称、服务中心地址、需要访问的文件和端口等信息
Spring cloud服务搭建_第60张图片
注意:配置文件名称是bootstrap.yml,因为bootstrap.yml会优先加载
(3)创建启动类,并在类上添加@RestController注解
Spring cloud服务搭建_第61张图片
(4)启动工程,测试应用。应用启动后,可以访问地址http://localhost:8801/hello测试应用是否能够正常访问
Spring cloud服务搭建_第62张图片
此时通过浏览器访问http://localhost:8801/clientParam,即可获取配置文件中的信息
Spring cloud服务搭建_第63张图片
3.使用Git存储的方式实现配置管理
(1)配置Git。在Git上创建microservice-study-config目录,并在目录中增加开发、预发布和测试的配置文件,分别编辑三个文件中的内容如下:
application-dev.yml中编写内容:clientParam: git-dev-1.0
application-prod.yml中编写内容:clientParam: git-prod-1.0
application-test.yml中编写内容:clientParam: git-test-1.0

Spring cloud服务搭建_第64张图片
(2)修改服务端配置文件。将microservice-config-server工程的配置文件中本地文件存储方式的配置删除(或注释),并添加git的配置信息
Spring cloud服务搭建_第65张图片
注意:spring.cloud.config.server.git.uri属性用来指定Git仓库的网络地址。如果是私有仓库则需要填写账号信息,此时可以在git属性下增加username和password属性。
(3)修改客户端配置文件。在microservice-config-client工程的配置文件中添加属性label,并将其属性值设置为master(label属性表示Git中的分支,其属性默认值为master)
Spring cloud服务搭建_第66张图片
(3)启动工程,测试应用。分别启动Spring Cloud Config的服务端工程和客户端工程,通过访问地址http://localhost:8801/clientParam,发现已经可以获取Git中的配置信息了。
Spring cloud服务搭建_第67张图片
4.手动更新运行中的配置文件
(1)在客户端的pom.xml中添加依赖spring-boot-actuator。该依赖可以监控程序在运行时的状态,其中包括/refresh的功能。
在这里插入图片描述
(2)在启动类上添加@RefreshScope注解,开启refresh机制。添加此注解后,在执行/refresh时会更新该注解类下的所有变量,包括Config Client从Git仓库所获取的配置。
Spring cloud服务搭建_第68张图片
(3)在配置文件中将安全认证信息的enabled属性设置为false
Spring cloud服务搭建_第69张图片
(4)启动应用并访问http://localhost:8801/clientParam,结果如下图
Spring cloud服务搭建_第70张图片
(5)修改Git中的配置文件appliccation-prod.yml,将其内容clientParam: native-prod-1.0修改为clientParam: native-prod-2.0,再次通过浏览器访问地址,发现内容没有改变,但访问http://localhost:8888/appliication/prod时会发现服务端已经获取到了Git中的更新配置信息
Spring cloud服务搭建_第71张图片Spring cloud服务搭建_第72张图片
(6)使用POST请求访问地址http://localhost:8801/refresh后,我们看到请求的状态等信息
Spring cloud服务搭建_第73张图片Spring cloud服务搭建_第74张图片
此时再通过浏览器访问时,浏览器的显示如图所示,成功显示了更新后的配置文件内容,实现了手动更新运行中的配置文件。
Spring cloud服务搭建_第75张图片

你可能感兴趣的:(Spring cloud服务搭建)