基于 Spring Cloud 的微服务架构实践指南(下)
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
组件提供了一个监控功能,但是没有图形化,我们可以使用相关依赖引入图像化界面。
2.1 pom
文件
我们引入 hystrix
的依赖。
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-hystrix</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-hystrix-dashboard</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-actuator</artifactId>
</dependency>
2.2 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
2.3 启动类
@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 "出错了";
}
}
2.4 启动效果
启动注册中以及 hystrix
组件项目。
访问 http://localhost:8010/hellohystrix 接口:
访问 http://localhost:8010/hystrix 接口:
三、zuul
组件(服务网关)
zuul
组件主要是提供路由与过滤器功能。一般作为项目的大门守卫,对所有进入项目的接口进行检查。就像地铁的安保人员一样,会对每一个进入地铁的人员进行一一 的检查,发现不符合地铁管理条例的人员不予进入。这就是过滤功能,同时当你迷路的时候,你可以询问安保人,他会为你指导方向,这就是路由功能。
加入服务网关的项目架构
3.1 pom
文件
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zuul</artifactId>
</dependency>
3.2 yml
文件
server:
port: 8005 # 端口
spring:
application:
name: microservicloud-zuul-gateway # 项目名称
eureka:
client:
service-url:
defaultZone: http://localhost:7001/eureka # 注册中心
3.3 启动类
@SpringBootApplication
@EnableEurekaClient
@EnableZuulProxy // 启动zuul 组件
public class AppApllcation8005 {
public static void main( String[] args ) {
SpringApplication.run(AppApllcation8005.class, args);
}
}
3.4 启动效果
访问 http://localhost:8005/microservicloud-dept/list 接口:
可以看到我们通过网关地址就访问到了服务端接口。这就是服务网关的路由功能。
四、config
组件(配置中心)
当项目越来越多,伴随的配置文件也越来越多。我们是否可以将这次杂乱无章的文件统一进行管理呢,答案是可以的。这就是 config
组件的作用。config
组件主要是利用 git
作为配置服务站,实现文件统一管理。当配置文件更新的时候,我们就可以拉去最新的文件。
五、github
https://github.com/buerbl/learnSpringCloud
六、关注微信公众号,随时移动端阅读
基于 Spring Cloud 的微服务架构实践指南(下)的更多相关文章
- 基于 Spring Cloud 的微服务架构实践指南(上)
show me the code and talk to me,做的出来更要说的明白 GitHub 项目learnSpringCloud同步收录 我是布尔bl,你的支持是我分享的动力! 一. 引入 上 ...
- 干货|基于 Spring Cloud 的微服务落地
转自 微服务架构模式的核心在于如何识别服务的边界,设计出合理的微服务.但如果要将微服务架构运用到生产项目上,并且能够发挥该架构模式的重要作用,则需要微服务框架的支持. 在Java生态圈,目前使用较多的 ...
- 基于Spring Cloud的微服务落地
微服务架构模式的核心在于如何识别服务的边界,设计出合理的微服务.但如果要将微服务架构运用到生产项目上,并且能够发挥该架构模式的重要作用,则需要微服务框架的支持. 在Java生态圈,目前使用较多的微服务 ...
- Cola Cloud 基于 Spring Boot, Spring Cloud 构建微服务架构企业级开发平台
Cola Cloud 基于 Spring Boot, Spring Cloud 构建微服务架构企业级开发平台: https://gitee.com/leecho/cola-cloud
- Spring Cloud构建微服务架构(一)服务注册与发现
Spring Cloud简介 Spring Cloud是一个基于Spring Boot实现的云应用开发工具,它为基于JVM的云应用开发中的配置管理.服务发现.断路器.智能路由.微代理.控制总线.全局锁 ...
- Spring Cloud构建微服务架构(二)服务消费者
Netflix Ribbon is an Inter Process Communication (IPC) cloud library. Ribbon primarily provides clie ...
- Spring Cloud构建微服务架构:服务网关(路由配置)【Dalston版】
转载:http://blog.didispace.com/spring-cloud-starter-dalston-6-2/ 原创 2017-08-26 翟永超 Spring Cloud 被围观 ...
- 基于Spring Cloud的微服务入门教程
(本教程的原地址发布在本人的简书上:http://www.jianshu.com/p/947d57d042e7,若各位看官有什么问题或不同看法请在这里或简书留言,谢谢!) 本人也是前段时间才开始接触S ...
- Spring Cloud构建微服务架构
Dalston版本 由于Brixton和Camden版本的教程已经停止更新,所以笔者计划在2017年上半年完成Dalston版本的教程编写(原计划完成Camden版本教程,但由于写了两篇Dalston ...
随机推荐
- 自动控制理论的MATLAB仿真实例(一)
拉普拉斯变换及其反变换 Laplace变换及其反变换的定义为:
- ajax5
处理跨域方法 (代理) 一个域名地址的组成: /script/jQuery.js 协议 子域名 主域名 端口号 请求资源地址 当协议,子域名,主域名,端口号中任意一个不相同时,都算作不同 ...
- php7连接mysql8
最近因为剁手买了mac所以在mac上搭建lnmp环境. 刚好看到mysql从5.7跳到8,性能据说快上一倍,果断尝鲜! lnmp基本都弄好了,但是到用php连接Mysql这一步出了岔子. 出错原因: ...
- python编码的原理以及写入文件中乱码的原因
1.unicode可以理解为世界上所有字符的集合,它不对应二进制编码 2.详见: https://blog.csdn.net/qq_33692803/article/details/81321340 ...
- SpringMVC框架——自定义数据类型转换器
Spring MVC 框架的 Converter<S,T> 是一个可以将一种数据类型转换成另一种数据类型的接口,这里 S 表示源类型,T 表示目标类型. 开发中如果需要自定义数据类型转换时 ...
- hdu1171kmp果题
题目链接:http://icpc.njust.edu.cn/Problem/Hdu/1711/ #include<bits/stdc++.h> using namespace std; t ...
- 99%的程序员都在用Lombok,原理竟然这么简单?我也手撸了一个!|建议收藏!!!
罗曼罗兰说过:世界上只有一种英雄主义,就是看清生活的真相之后依然热爱生活. 对于 Lombok 我相信大部分人都不陌生,但对于它的实现原理以及缺点却鲜为人知,而本文将会从 Lombok 的原理出发,手 ...
- 收藏 | 15 个你非了解不可的 Linux 特殊字符,妈妈再也不用担心我看不懂这些符号了!
不知道大家接触 Linux 系统有多久了,可曾了解过 Linux 中有哪些特殊的字符呢?其实啊,那些特殊字符都大有用处呢,今天的文章就给大家简单地科普一下 Linux 中你需要了解的 15 个特殊字符 ...
- vue命令式组件和插件编写
一直在写各种业务,好多基本用法都忘记了,回顾一下: 一.vue各种UI库里的命令式组件比如element-ui里Notification组件,可以这样调用 this.$notify({ title: ...
- FormDataMultiPart获取表单文件的大小
在完成springboard某个功能时遇到个问题,前端表单上传了个文件,服务端接收的是FormDataMultiPart,希望通过FormDataMultiPart拿到上传文件的size. 一开始获取 ...