show me the code and talk to me,做的出来更要说的明白
本文源码,请点击 learnSpringCloud
我是布尔bl,你的支持是我分享的动力!
上回 基于 Spring Cloud 的微服务架构实践指南(上) 介绍了 Spring Cloud
的常见组件,我们接着继续进入 Spring Cloud
的实战教程,撸起袖子,真枪实弹干一场。在实战演练中感受一下 Spring Cloud
的魅力所在。在教程中,我会继续将 Spring Cloud
常见组件进行整合。整个过程就像搭积木一样,一点一点地完成一个微服务工程的搭建。实战演练是比较繁琐的,但是只要我们真正地去做了,就会收获很多。
hystrix
组件( 服务熔断 )hystrix
组件主要作用是服务熔断以及服务降级。可以在我们犯错的时候,再给我们一次机会。他就像家里的短路开关,对程序起到保护作用。另一方面其实觉得和 java
的异常机制相似。当项目发生未知异常, hystrix
组件就会挺身而出,作为项目的贴身保镖,为项目保驾护航。当然,你认我的代码没有bug
,那么你可以把他放在一边。另外hystrix
组件提供了一个监控功能,但是没有图形化,我们可以使用相关依赖引入图像化界面。
pom
文件我们引入 hystrix
的依赖。
<dependency>
<groupId>org.springframework.cloudgroupId>
<artifactId>spring-cloud-starter-hystrixartifactId>
dependency>
<dependency>
<groupId>org.springframework.cloudgroupId>
<artifactId>spring-cloud-starter-hystrix-dashboardartifactId>
dependency>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-actuatorartifactId>
dependency>
yml
文件引入必要模块后,我们就要去配置 yml
文件了。
server:
port: 8010 # 端口
spring:
application:
name: microservicloud-hystrix # 给模块起一个名字
eureka:
client:
service-url:
defaultZone: http://localhost:7001/eureka # 注册中心地址
instance:
instance-id: microservicloud-hystrix-8010
prefer-ip-address: true
@SpringBootApplication
@EnableEurekaClient
@EnableCircuitBreaker //启动断路器
@EnableDiscoveryClient // 启动图像化监控
@RestController
public class AppApllcation8005 {
public static void main( String[] args ) {
SpringApplication.run(AppApllcation8005.class, args);
}
@GetMapping("/hellohystrix")
@HystrixCommand(fallbackMethod = "fallback") // 发生异常执行响应方法
public String hystrix() {
int i = 1 / 0;
return "hellohystrix";
}
public String fallback() {
return "出错了";
}
}
启动注册中以及 hystrix
组件项目。
访问 http://localhost:8010/hellohystrix 接口:
访问 http://localhost:8010/hystrix 接口:
zuul
组件(服务网关)zuul
组件主要是提供路由与过滤器功能。一般作为项目的大门守卫,对所有进入项目的接口进行检查。就像地铁的安保人员一样,会对每一个进入地铁的人员进行一一 的检查,发现不符合地铁管理条例的人员不予进入。这就是过滤功能,同时当你迷路的时候,你可以询问安保人,他会为你指导方向,这就是路由功能。
加入服务网关的项目架构
pom
文件<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zuul</artifactId>
</dependency>
yml
文件server:
port: 8005 # 端口
spring:
application:
name: microservicloud-zuul-gateway # 项目名称
eureka:
client:
service-url:
defaultZone: http://localhost:7001/eureka # 注册中心
@SpringBootApplication
@EnableEurekaClient
@EnableZuulProxy // 启动zuul 组件
public class AppApllcation8005 {
public static void main( String[] args ) {
SpringApplication.run(AppApllcation8005.class, args);
}
}
访问 http://localhost:8005/microservicloud-dept/list 接口:
可以看到我们通过网关地址就访问到了服务端接口。这就是服务网关的路由功能。
config
组件(配置中心)当项目越来越多,伴随的配置文件也越来越多。我们是否可以将这次杂乱无章的文件统一进行管理呢,答案是可以的。这就是 config
组件的作用。config
组件主要是利用 git
作为配置服务站,实现文件统一管理。当配置文件更新的时候,我们就可以拉去最新的文件。
https://github.com/buerbl/learnSpringCloud