Spring cloud综合实践

本文详细介绍了Spring Cloud的综合实践,包括使用Eureka搭建服务注册与发现,实现服务间的调用,利用Ribbon实现客户端负载均衡,结合Hystrix实现断路器功能,通过Zuul构建API网关服务,以及采用本地存储和Git存储两种方式实现配置管理。每个环节都有详细的步骤解析和示例代码,帮助读者深入理解Spring Cloud微服务架构。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

         Spring Cloud上

一、使用eureka注册服务:
1、搭建maven父工程:
在这里插入图片描述在这里插入图片描述在这里插入图片描述
2、修改pom文件,添加spring cloud的版本依赖等信息:
在这里插入图片描述在这里插入图片描述
3、搭建服务端工程(在父工程ms-springcloud中,创建maven子模块ms-eureka-server作为服务端工程):
在这里插入图片描述在这里插入图片描述在这里插入图片描述
4、修改Pom文件,添加eureka server的依赖:
在这里插入图片描述
5、编写配置文件,添加端口号等配置信息:
在这里插入图片描述
首先配置了端口号为8761,所有的服务的实例都需要向此端口注册;配置了实例名为localhost。因为本项目是一个注册中心,所以不需要向自己注册和检索服务的,所以register-with-eureka和fetch-registry都需要设置为false。最后defaultZone中的地址是注册中心的地址。
6、修改服务端java代码(在项目的引导类上添加注解@EnableEurekaServer,该注解用于声明标注类是一个eureka server)
在这里插入图片描述
7、启动应用,查看信息。
在这里插入图片描述在这里插入图片描述
从图可以看出,eureka server的信息页面已经成功显示,但此时“instances currently registered with eureka”下显示的信息为“no instances available”,这表示该注册中心还没有注册任何可用的实例。
8、搭建客户端工程(在ms-springcloud中,创建maven子模块ms-eureka-user作为客户端工具,该模块也是一个基础的spring boot工程):
在这里插入图片描述在这里插入图片描述在这里插入图片描述
9、修改pom文件,添加依赖:
在这里插入图片描述
10、编写配置文件(在配置文件中添加eureka服务实例的端口号、服务端地址等信息):
在这里插入图片描述
11、修改客户端java代码(在项目中的引导类上添加注解@EnableEurekaClient,该注解用于声明标注类是一个eureka客户端组件):
在这里插入图片描述
12、启动应用,查看信息(完成上述配置后,分别启动服务器工程和客户端工程,在浏览器中访问地址http://localhost:8761/后,可以从eureka的信息面板中看到注册的服务信息):
在这里插入图片描述在这里插入图片描述
从上面可以看出,服务已经成功注册到了注册中心,注册后的服务就可以直接被其他服务调用了。
需要注意的是,在本地调试基于eureka的程序时,可能会在注册信息页面中出现红色警告信息:EMERGENCY!EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEY’RE NOT.RENEWALS ARE LESSER THAN THRESHOLD AND HENCE THE INSTANCES ARE NOT BEING EXPIRED JUST TO BE SAFE.
出现警告信息是因为本地调试时触发了eureka server的自我保护机制。该机制会使注册中心所维护的实例不是很准确,所以在本地开发时,可以在eureka server应用的配置文件中使用eureka.server.enable-self-preservation=false参数来关闭保护机制,以确保注册中心可以将不可用的实例正确删除。
二、实现服务间的调用:
1、搭建订单服务工程(在父工程ms-springcloud中,创建maven子模块ms-eureka-order):
在这里插入图片描述在这里插入图片描述在这里插入图片描述
2、修改pom文件,添加spring-cloud-starter-eureka依赖:
在这里插入图片描述
3、编写配置文件(在配置文件中添加eureka服务实例的端口号、服务端地址等信息):
在这里插入图片描述
4、创建订单实体类(创建com.huatec.springcloud.po包,并在包中创建订单实体类Order):
在这里插入图片描述在这里插入图片描述
5、创建订单控制器类(创建com.huatec.springcloud.controller包,并在包中创建订单控制器类OrderController,在该类中模拟编写一个通过id查询订单的方法):
在这里插入图片描述
6、编写用户服务功能(在ms-eureka-user工程的引导类中,创建RestTemplate的spring实例):
在这里插入图片描述
7、创建启动类,添加注解@EnableEurekaClient:
在这里插入图片描述
8、创建用户控制器类,并在类中编写查询方法:
在这里插入图片描述
9、启动服务应用,测试服务调用(分别启动服务注册中心应用,订单服务应用和用户服务应用):eureka 信息页面显示如下:
在这里插入图片描述
通过浏览器访问地址:http://localhost:8000/findOrdersByUser/1(1表示用户id)后,显示如下:

![![在这里插入图片描述](https://img-blog.csdnimg.cn/20190612081127731.png)
三、Ribbon的使用:
1、添加@LoadBalanced注解(在ms-eureka-user工程引导类中的restTemplate()方法上添加):
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190612082808222.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1Bob2JlYl9odWk=,size_16

2、使用服务实例名称(在用户服务实例的查询方法中,使用服务提供者(订单服务)的实例来执行已注册服务列表中实例的方法):
在这里插入图片描述

3、创建服务监听类(为了演示负载均衡的效果,在ms-eureka-order工程中创建一个用于监听服务实例端口的工具类ServiceInfoUtil):
在这里插入图片描述

4、添加输出语句(在订单控制器类OrderController的查询订单方法中,增加一行执行输出当前实例端口号的语句):
在这里插入图片描述

5、启动服务,测试应用(分别启动注册中心,用户服务和订单服务,然后修改订单服务的端口号,再次启动一个订单服务,eureka信息页面如下):
在这里插入图片描述

当通过浏览器连续3次访问地址http://localhost:8000/findOrderByUser/1后,两个应用的eclipse控制台输出结果如下:
在这里插入图片描述在这里插入图片描述

从上图可以看出,在浏览器连续访问3次后,用户服务实例通过Ribbon分别调用了2次端口为7900和7901的订单服务实例,说明已经成功通过Ribbon实现了客户端的负载均衡。
Ribbon在工作时分为两步:第一步先选择eureka server,它会优先选择在同一个区域且负载较少的sever;第二步会根据用户指定的策略(如轮询,随机等)从server取到的服务注册列表中选择一个地址。
Spring Cloud下
一、spring cloud hystrix的使用:
1、创建ms-eureka-user-hystrix工程:
在这里插入图片描述在这里插入图片描述在这里插入图片描述

2、修改pom文件,并在pom文件中引入eureka和hystrix依赖:
在这里插入图片描述
3、编辑配置文件,在配置文件中添加eureka服务实例的端口号、服务端地址等:
在这里插入图片描述
4、在工程主类Application中使用@EnableCircuitBreaker注解开启断路器功能:
在这里插入图片描述
5、修改用户控制器类,在findOrdersByUser()方法上添加@HystrixCommand注解来指定回调方法:
在这里插入图片描述
6、分别启动注册中心、服务提供者(7900和7901)和服务消费者后,注册中心信息页面中已注册的服务如下:
在这里插入图片描述
此时如果访问http://localhost:8030/findOrdersByUser/1,浏览器会显示如下:
在这里插入图片描述
此时停掉7900,页面显示如下:
在这里插入图片描述
二、Hystrix Dashboard的使用:
1、在ms-eureka-user-hystrix工程的pom文件中添加相关的监控依赖:
在这里插入图片描述
2、(1)启动注册中心、服务提供者(7901)和服务消费者工程;
(2)通过浏览器访问地址http://localhost:8030/findOrdersByUser/1,此步骤不可省略,否则将由于系统应用的所有接口都未被调用,而只输出ping;
在这里插入图片描述
(3)通过浏览器访问地址http://localhost:8030/hystrix.stream,则结果如下:
在这里插入图片描述
从上图可以看出,访问具体地址后,浏览器会不断的执行刷新操作以获取实时的监控数据。这样运维人员就可以通过这些数据来判断系统当前的监控状态。
下面通过具体实例来演示Hystrix Dashboard的使用:
1、新建ms-springcloud的子工程ms-hystrix-dashboard:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述2、修改其pom文件,添加监控依赖和Hystrix Dashboard依赖:
在这里插入图片描述
3、编写配置文件,指定应用的端口号和名称信息:
在这里插入图片描述
4、编写启动类Application.java,并在其类上添加@EnableHystrixDashboard注解来开启Hystrix仪表板功能:
在这里插入图片描述
5、启动工程后,通过浏览器访问地址http://localhost:8031/hystrix.stream将会看到如下图所示信息:
在这里插入图片描述
在图中,Hystrix Dashboard下的输入框用于输入需要监控的服务URL,Delay中参数表示服务器上的轮询时间间隔,Title中输入框用于设置浏览器中所监视服务的标题。
在Hystrix Dashboard下的输入框中输入http://localhost:8030/hystrix.stream,并设置Title为“订单微服务”后,单击【Monitor Stream】按钮,将会出现如下图所示信息:
在这里插入图片描述
此时如果通过另一个浏览器访问http://localhost:8030/findOrdersByUser/1,并且不断的刷新地址,那么上图页面就会显示如下图所示的数据信息:
在这里插入图片描述
三、如何使用Zuul构建API网关服务:
1、在父工程ms-springcloud创建ms-gateway-zuul工程:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
2、修改其pom文件,添加eureka和Zuul的依赖:
在这里插入图片描述
3、编辑配置文件,在配置文件中编写eureka服务实例的端口号、服务端地址等信息:
在这里插入图片描述
4、在工程主类Application.java中使用@EnableZuulProxy注解来开启Zuul的网关功能:
在这里插入图片描述
5、分别启动注册中心、服务提供者和网关服务后,注册中心已注册过的服务如下图:
在这里插入图片描述
此时通过浏览器访问地址http://localhost:7900/order/1单独访问订单服务时,浏览器显示信息如下:
在这里插入图片描述
下面通过Zuul来验证路由功能,通过网关服务来访问订单信息。在浏览器地址栏中输入地址http://localhost:8050/ms-eureka-order/order/1后,浏览器显示信息如下:
在这里插入图片描述
从上图可以看出,浏览器已经显示出来所要访问的订单信息,这说明使用Zuul配置的路由功能已经生效,通过服务ID映射的方式可以进行跳转。
四、使用本地存储的方式实现配置管理:
1、搭建Config Server(创建配置中心工程ms-config-server),修改其pom文件,在其中引入Config Server的依赖:
在这里插入图片描述
2、编写配置文件,添加服务端口号和存储属性信息:
在这里插入图片描述
3、在src/main/resources目录下创建3个分别用于表示并发、预发布和测试的资源配置文件,并在文件中编写如下内容:
(1)application-dev.yml中编写内容:clientParam:native-dev-1.0
在这里插入图片描述
(2)application-prod.yml中编写内容:clientParam:native-prod-1.0
在这里插入图片描述
(3)application-test.yml中编写内容:clientParam:native-test-1.0
在这里插入图片描述
上述资源文件是按照“应用名+环境名+格式”的规范来命名的。
4、创建启动类,并在类上增加@EnableConfigServer注解以开启服务端功能:
在这里插入图片描述
5、启动工程,测试应用。应用启动成功后,按照如下格式的URL发起请求:
http://localhost:8888/{applicationname}/{env}/{label}
本应用中的访问地址为:http://localhost:8888/ms-config-server/dev,浏览器的显示效果如下:
在这里插入图片描述
从上图可以看出,浏览器中的JSON信息显示除了应用名ms-config-server\环境名dev,以及资源文件路径和文件内容等信息。初次之外,我们也可以直接访问资源文件,来查看资源文件内的配置信息。通过浏览器访问地址http://localhost:8888/application-dev.yml,其显示效果如下:
在这里插入图片描述
6、搭建Config Client(创建客户端工程ms-config-client),修改pom文件,添加Config 和web的依赖:
在这里插入图片描述
7、编写配置文件bootstrap.yml,在其中配置应用名称,需要访问的文件和端口号等信息:
在这里插入图片描述
需要注意的是:上述配置文件的名称必须为bootstrap.yml或者bootstrap.properties,只有这样配置中心才能够正常加载(虽然application.yml也可以被Spring Boot加载,但是bootstrap.yml会优先加载)。
8、创建启动类,并在类上添加@RestController注解:
在这里插入图片描述
9、启动工程,测试应用。应用启动成功后,可以通过地址http://localhost:8801/hello测试应用是否能够正常访问,其显示效果如下:
在这里插入图片描述
此时通过浏览器访问地址http://localhost:8801/clientParam,即可获取配置文件中的信息,如下图:
在这里插入图片描述
从上图中可以看到,已经成功访问到了预发布环境的配置文件信息。当我们需要访问其他配置文件的信息时,只需要修改bootstrap.yml中的profile的属性值即可。
五、使用Git存储的方式实现配置管理:
1、配置Git,在git上创建ms-study-config目录,并在目录中增加开发、与开发和测试的配置文件,分别编辑三个配置文件的内容如下:
(1)application-dev.yml中编写内容:clientParam:git-dev-1.0
在这里插入图片描述
(2)application-prod.yml中编写内容:clientParam:git-prod-1.0
在这里插入图片描述
(3)application-test.yml中编写内容:clientParam:git-test-1.0
在这里插入图片描述
2、修改服务端配置文件,将ms-config-server工程的配置文件中本地文件存储方式的配置删除(或者注释),并添加git的配置信息:
在这里插入图片描述
3、修改客户端配置文件,在ms-config-client工程的配置文件中添加属性label,并将其属性值设置为master(label属性表示git中的分支,其属性默认值为master):
在这里插入图片描述4、启动工程,测试应用,分别启动Spring Cloud Config的服务端和客户端工程,通过访问地址http://localhost:8801/clientParam,发现已经可以获取git中的配置信息了:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值