Spring Cloud应用开发

一、 如何使用Eureka注册服务
1、 搭建Maven父工程

在Eclipse中,创建一个Maven父工程jck-springcloud,并在工程的pom.xml中引入Spring Cloud工具集依赖,添加Spring Cloud的版本依赖等信息。
在这里插入图片描述
2、 搭建服务器端
在父工程jck-springcloud中,创建Maven子模块jck-eureka-server作为服务端工程,该模块是一个基础的Spring Boot工程。
(1)添加依赖,在pom.xml中添加Eureka Server的依赖。
在这里插入图片描述
(2)编写配置文件,添加端口、设置Eureka Server服务器地址等配置信息。
在这里插入图片描述
(3)修改服务端Java代码,在项目的引导类上添加注解@EnableEurekaServer,该注解用于声明标注类是一个Eureka Server。
在这里插入图片描述
(4)启动应用,查看信息,完成上述配置后,启动应用程序并在浏览器中访问地址http://localhost:8761,即可看到Eureka的信息面板。
在这里插入图片描述
3、 搭建客户端工程
在父工程jck-springcloud中,创建Maven子模块jck-eureka-user,作为客户端工程,该模块是一个基础Spring Boot工程。
(1)添加依赖,在pom.xml中添加Eureka依赖。
在这里插入图片描述
(2)编写配置文件,在配置文件中添加Eureka服务实例的端口号、服务端地址等信息。
在这里插入图片描述
(3)修改客户端Java程序,在项目的引导类上添加注解@EnableEurekaClient,该注解用于声明标注类是一个Eureka客户端组件,会自动向配置的注册中心进行服务注册。
在这里插入图片描述
(4)启动应用,查看信息。完成以上配置后,分别启动服务器工程和客户端工程,在浏览器中访问地址http://localhost:8761后,在Eureka的信息面板中显示注册的服务信息。
在这里插入图片描述
二、 如何实现服务间的调用
      通过注册中心来实现服务之间的调用,即通过一个用户和一个一个订单之间的调用案例,来实现Eureka Server中服务之间的调用。
1.搭建订单服务工程
在父工程jck-springcloud中,创建子模块jck-eureka-order,该模块也是一个基础的Spring Boot工程。
(1)在pom.xml中,添加spring-cloud-starter-eureka依赖。
在这里插入图片描述
(2)编写配置文件,在配置文件中添加Eureka服务实例的端口号、服务器地址等信息。
在这里插入图片描述
(3)创建启动类
在这里插入图片描述
(4)创建订单实体类,创建com.jck.springcloud.po包,并在包中创建订单实体类Order。
在这里插入图片描述
在这里插入图片描述
类OrderController,在该类中模拟编写一个通过id查询订单的方法。
在这里插入图片描述
2. 编写用户服务功能
(1) 在jck-eureka-user工程的引导类中,创建RestTemplate的Spring实例;RestTem-plate是Spring提供的用于访问Rest服务的客户端实例,它提供了多种便捷访问远程http服务的方法,可提高客户端的编写效率。
在这里插入图片描述
(2) 创建用户控制器类,并在类中编写查询方法。
在这里插入图片描述
3. 启动服务应用,测试服务调用
(1)分别启动服务器注册中心应用、订单服务应用和用户服务应用,此时Eureka信息页面的显示信息。
在这里插入图片描述
(2)当通过浏览器访问地址:http://localhost:8000/findOrdersByUser/1(1表示用户id)后,浏览器的显示效果。
在这里插入图片描述
三、 客户端负载均衡
在Eureka的起步依赖spring-cloud-starter-eureka中,已经集成了Ribbon。
在这里插入图片描述
1. Ribbon的使用
(1) 在jck-eureka-user工程引导类中的restTemplate()方法上添加添加@LoadBalan-ced注解后,就具有负载均衡能力。
在这里插入图片描述
(2)使用服务实例名称,在用户服务实例的查询方法中,使用服务提供者(订单服务)的实例名称来执行已注册服务列表中的实例方法。
在这里插入图片描述
(3)创建服务监听类,为了演示负载均衡的实现效果,在jck-eureka-order工程中创建一个用于监听服务实例的工具类ServiceInfoUtil。
在这里插入图片描述
(4)添加输出语句,在订单控制类OrderController的查询订单方法中,添加一行执行输出当前实例端口的语句。
在这里插入图片描述
(5)启动服务,测试应用。分别启动注册中心、用户服务和订单服务,然后修改订单服务的端口号(如7901),再次启动一次订单服务后,Eureka信息页面的注册信息显示效果。
在这里插入图片描述
当通过浏览器连续4次访问地址http://localhost:8000/findOrdersByUser/1后,两个应用的Eclipse控制台的显示效果。
在这里插入图片描述
在这里插入图片描述
四、服务容错保护
1、Spring Cloud Hystrix的使用

(1)创建jck-eureka-user-hystrix工程,并在pom.xml中引入eureka和hystrix的依赖。
在这里插入图片描述
(2)编辑配置文件,在配置文件中添加Eureka服务实例的端口号、服务端地址等。
在这里插入图片描述
(3)在工程类Application中使用@EnableCircuitBreaker注解启动断路器功能。
在这里插入图片描述
(4)修改用户控制器类,在findOrdersByUsers()方法上添加@HystrixCommand注解来指定回调方法。
在这里插入图片描述
(5)分别启动注册中心、服务提供者(7900和7901)和服务消费者后,注册中心信息页面中已注册的服务。
在这里插入图片描述
此时访问http://localhost:8030/findOrdersByUser/1,查看浏览器显示效果。
在这里插入图片描述
当多次访问http://localhost:8030/findOrdersByUser/1时,后台将通过轮询的方式分别访问7900和7901端口对应的服务,如果停止7901对应的服务,那么多次执行访问后,在轮询7901端口对应的服务时,页面将显示提示信息,这说明Spring Cloud Hystrix的服务回调(fallbackInfo()方法)生效。
在这里插入图片描述
2、Hystrix Dashboard的使用
Hystrix可以实时、累加地记录关于HystrixCommend的执行信息,包括每秒执行多少、请求成功多少、失败多少等。要实时对服务进行监控,在项目中添加相关的监控依赖。
在这里插入图片描述
分别启动注册中心、服务器提供者(7901)和服务器消费工程;通过浏览器访问地址http://localhost:8030/findOrdersByUser/1(此步骤不可省略,否则将由于系统应用的所有接口都未被调用,而只能输出ping:);通过浏览器访问地址:http://localhost:8030/hystrix.stream。
在这里插入图片描述
(1)新建jck-springcloud的子工程jck-hystrix-dashboard,在其pom.xml文件中添加监控依赖和Hystrix Dashboard依赖。
在这里插入图片描述
(2)编写配置文件application.yml,指定应用的端口号和名称等信息。
在这里插入图片描述
(3)编写启动类Application,并在其类上添加@EnableHystrixDashboard注解来启动Hystrix仪表板功能。
在这里插入图片描述
(4)启动工程后,通过浏览器访问地址http://localhost:8031/hystrix.stream。
在这里插入图片描述
在Hystrix Bashboard下的输入框中输入http://localhost:8030/hystrix.stream,并设置Title为“订单微服务“后,点击【Monitor Stream】按钮。
在这里插入图片描述
通过另一个浏览器访问http://localhost:8030/findOrdersByUser/1,并且不断地刷新地址。
在这里插入图片描述
五、API服务网关
1、使用Zuul构建API服务网关

(1)创建工程,添加依赖,在父工程jck-springcloud下创建子模块jck-gateway-zuul工程,并在其pom.xml中添加eureka和Zuul的依赖。
在这里插入图片描述
(2)修改配置文件,在配置文件中编写Eureka服务实例的端口号、服务器地址等信息。
在这里插入图片描述
(3)在工程注类Application中使用@EnableZuulProxy注解启动Zuul的API网关功能。
在这里插入图片描述
(4)分别启动注册中心、服务器提供者和网关服务后,注册中心已注册的服务信息。
在这里插入图片描述
通过地址http://localhost:7900/order/1单独访问订单服务时,浏览器显示效果。
在这里插入图片描述
通过Zuul来验证路由功能,通过网关,通过网关服务来访问订单信息,通过浏览器访问http://localhost:8050/jck-eureka-order/1后,浏览器显示所要访问的订单信息,说明Zuul配置的路由功能已生效,通过服务ID映射的方式已可以进行跳转。
在这里插入图片描述
Zuul可以不依赖Eureka而单独使用,将jck-gateway-zuul工程中所有Eureka相关的信息删除,并将配置文件中的Zuul内容修改为传统路由的形式。
在这里插入图片描述
启动工程,通过浏览器访问http://localhost:8050/order-url/order/1,同样显示订单信息。
在这里插入图片描述
六、分布式配置管理
1、搭建Config Server

(1)创建配置中心工程jck-config-server,并在pom.xml中引入Config Server的依赖。
在这里插入图片描述
(2)编写配置文件application.yml,添加服务端口号和存储属性等信息。
在这里插入图片描述
(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
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(4)创建启动类,并在类上添加@EnableConfigServer注解已启动服务端程序。
在这里插入图片描述
(5)启动工程,测试应用,应用启动成功后,按照如下格式的URL发起访问;浏览器中的JSON信息显示出了应用名jck-config-server、环境名dev,以及资源文件路径和文件内容等信息。
在这里插入图片描述
可以直接访问资源没查看其资源文件内的配置信息,通过浏览器访问地址http://localhost:
8888/application-dev.yml。
在这里插入图片描述
2、搭建Config Client
(1)创建客户端工程jck-config-client,并在其pom.xml中添加Config和web的依赖。
在这里插入图片描述
(2)编写配置文件bootstrap.yml,在其中配置应用名称、服务中心地址、需要访问的文件和端口号等信息。
在这里插入图片描述
(3)创建启动类,并在类上添加@RestController注解。
在这里插入图片描述
(4)启动工程,测试访问,如果启动成功后,通过浏览器访问http://localhost:8801/hello,测试应用是否能够正常访问。
在这里插入图片描述
通过浏览器访问地址http://localhost:8801/clientParam,即可获取配置文件红的信息。
在这里插入图片描述
3、使用Git存储的方式实现配置管理
(1)修改服务端配置文件,将jck-config-server工程的配置文件中本地文件存储方式的配置删除(或注释),并添加git的配置信息。
在这里插入图片描述
(2)修改客户端配置文件,在jck-config-client工程的配置文件中添加属性label,将其属性值设置为master(label属性表示Git中的分支,其属性默认值为master)。
在这里插入图片描述
(3)启动工程,测试应用;分别启动Spring Cloud Config的服务端和客户端工程,通过访问地址http://localhost:8801/clientParam,发现可以获取Git中的配置信息。
在这里插入图片描述
4、手动更新运行中的配置文件
(1)在客户端的pom.xml中添加spring-boot-starter-actuator,该依赖可以监控程序在运行时的状态,其中包括/refresh的功能。
在这里插入图片描述
(2)在启动类上添加@RefreshScope注解,开启refresh机制,在执行/refresh时会更新该注解标注类下的所有变量值,包括Config Client从Git仓库中所获取的配置。
在这里插入图片描述
(3)在配置文件中将安全认证信息的enabled属性设置为false。
在这里插入图片描述
(4)检测应用是否可以实现更新运行中的配置文件,修改Git中的配置文件application
-prod.yml,将其内容clientParam: native-prod-1.0给为clientParam: native-prod-2.0,通过浏览器访问地址http://localhost:8888/application/prod时,会发现服务器端已经获取到了Git中的更新配置信息。
在这里插入图片描述
(5)使用Post请求访问地址http://localhost:8801/refresh(使用火狐浏览器插件REST Client),将看到请求的状态等信息。
在这里插入图片描述
再次通过浏览器访问http://localhost:8801/clientParam时,浏览器已成功显示更新后的配置文件内容
在这里插入图片描述
如有想法,欢迎评论!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值